zoukankan      html  css  js  c++  java
  • Android ROM 打包记录

    android5.1平板或手机应用层一些常用的修改项及目录所在:

    1、所以系统应用所在的目录:

    [java] view plain copy
     
    1. alpspackagesapps  


    2、一些系统属性的定义:并且可以仿写自行定义变量

    [java] view plain copy
     
    1. alpsuild oolsuildinfo.sh  


    3、一些apk的添加和删除:

    [java] view plain copy
     
    1. alpsuild argetproductgeneric.mk  
    2. alpsuild argetproductgeneric_no_telephony.mk  
    3. alpsuild argetproduct elephony.mk  
    4. alpsuild argetproductcore.mk  


    4、wifi,bt,sn的烧写位置:

    [java] view plain copy
     
    1. alpsout argetproductelink8163_tb_l1objCGEN  


    5、第三方apps目录:

    [java] view plain copy
     
    1. alpsvendormediatekproprietaryoperatorcommonpackages  
    2. alpsvendormediatekproprietaryoperatorcommonframeworks  

    6、VideoPlayer、Stk1、Stk2、MTKThermalManager的values存放的目录:

    [java] view plain copy
     
    1. alpsdevicemediatekcommonoverlay abletvendormediatekproprietarypackagesapps  
    2. alpsdevicemediatekcommonoverlay abletvendormediatekproprietaryframeworks  
    3. alpsdevicemediatekcommonoverlay abletvendormediatekproprietaryprotect-app  


    7、Launcher3、Settings、DeskClock的values存放的位置(单wifi):

    [java] view plain copy
     
    1. alpsdevicemediatekcommonoverlay abletpackagesapps  


    8、frameworks values存放的位置:

    [java] view plain copy
     
    1. alpsdevicemediatekcommonoverlay abletframeworksasecore es es  


    9、导航栏显示或隐藏config.xml:

    [java] view plain copy
     
    1. alpsdevicemediatekcommonoverlay avbarframeworksasecore es esvalues  


    10、MemoryDeviceList对照表:

    [java] view plain copy
     
    1. alpsdevicemediatekuilduild oolsemigen项目MemoryDeviceList_MT8163.xls  


    11、开机动画存放的目录Android.mk进行配置说明:

    [java] view plain copy
     
    1. alpsvendormediatekproprietaryoperatorOP09prebuiltootanimootanimation  
    2. alpsvendormediatekproprietaryoperatorOP09prebuiltootanimootaudio开机铃声  
    3. alpsvendormediatekproprietaryoperatorOP09prebuiltootanimshutanimation关机动画  


    12、内存更改目录:

    [java] view plain copy
     
    1. alpsootableootloaderpreloadercustomelink8163_tb_l1inccustom_MemoryDevice.h  
    2. alpsootableootloaderpreloader oolsemigenMT8163MemoryDeviceList_MT8163.xls  
    3. alpsootableootloaderpreloader oolsemigenMT8163full_elink8163_e  修改版本号,语言类  


    13、lcm,logo等的配置目录:

    [java] view plain copy
     
    1. alpsootableootloaderlkdev  


    14、对应的屏大小,配置不同的图标:

    [java] view plain copy
     
    1. wxga   竖屏  
    2. wxgal  横屏  
    [java] view plain copy
     
    1. </pre>都指显示模式其中WXGA是16:10宽屏,各显示模式支持分辨率如下<pre name="code" class="java">QVGA 240×320   
    2. HVGA 480*320   
    3. VGA 640X480   
    4. SVGA 800X600   
    5. XGA 1024X768   
    6. SXGA 1280X1024   
    7. SXGA+ 1400X1050   
    8. UXGA 1600X1200   
    9. WXGA 1280X800   
    10. WXGA+ 1400X900   
    11. WSXGA 1600X1024   
    12. WSXGA+ 1680X1050   
    13. WUXGA 1920X1200   
    14. WQXGA 2560X1600   

    按需选购可能平板使用类似WSVGA的1024×576以及WXGA的1280×768等等,Google将设备分为small(2~3英寸)、normal(4英寸左右)、large(5~7英寸)、xlarge(7英寸以上)不同大小屏幕用不同大小的图片,low:medium:high:extra-high图片大小的比例为3:4:6:8;举例来说,对于中等密度(medium)的屏幕你的图片像素大小为48×48,那么低密度(low)屏幕的图片大小应为36×36,高(high)的为72×72,extra-high为96×96.

    15、配置文件的修改(屏的宽高,logo的配置etc):

    [java] view plain copy
     
    1. alpsdeviceelinkelink8163_eProjectConfig.mk  
    2.   
    3. CUSTOM_LK_LCM = KR070IA4T_DSI_VDO  
    4. CUSTOM_UBOOT_LCM = KR070IA4T_DSI_VDO  
    5. MTK_BUILD_VERNO = ALPS.**(自定义版本号)  
    6.   
    7. alpsdeviceelinkelink8163_efull_elink8163_e  
    8.  set locales & aapt config.  
    9. PRODUCT_LOCALES := en_US es_ES zh_CN zh_TW ru_RU pt_BR fr_FR de_DE tr_TR it_IT in_ID ms_MY vi_VN ar_EG hi_IN th_TH bn_IN pt_PT ur_PK fa_IR nl_NL el_GR hu_HU tl_PH ro_RO cs_CZ iw_IL my_MM km_KH ko_KR pl_PL es_US bg_BG hr_HR lv_LV lt_LT sk_SK uk_UA de_AT da_DK fi_FI nb_NO sv_SE en_GB ja_JP  
    10.   
    11. #AAPT configuration  
    12. PRODUCT_AAPT_CONFIG := normal large xlarge   
    13. PRODUCT_AAPT_PREF_CONFIG := hdpi   
    14.   
    15.   
    16. # Set those variables here to overwrite the inherited values.  
    17. PRODUCT_MANUFACTURER := alps  
    18. PRODUCT_NAME := **  
    19. PRODUCT_DEVICE :=**  
    20. PRODUCT_MODEL := **  
    21. PRODUCT_POLICY := android.policy_phone  
    22. PRODUCT_BRAND := alps  
    23.   
    24.   
    25.   
    26. DEFAULT_INPUT_METHOD = com.sohu.inputmethod.sogou.SogouIME  //默认输入法  
    27. DEFAULT_LATIN_IME_LANGUAGES = en-US fr ru  

    16、lcd密度的设置:

    [java] view plain copy
     
    1. alpsdeviceelinkelink8163_esystem.prop  
    2. ro.sf.lcd_density=213  


    17、默认壁纸的存放位置:

    [java] view plain copy
     
    1. alpsframeworksasecore es esdrawable-nodpidefault_wallpaper  


    18、第三方应用所在目录,eg:Sina微博

    [java] view plain copy
     
    1. alpsvendormediatekproprietaryinary3rd-partyfreeSina_Weibo  
    2. 添加完后,打开文件devicemediatekcommondevice.mk  
    3. 将 Sina添加到 PRODUCT_PACKAGES 里面。PRODUCT_PACKAGES += Sina,然后重新build整个工程  


    19、对应的drawable:

    [java] view plain copy
     
    1. 320dp: a typical phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc).  
    2. 480dp: a tweener tablet like the Streak (480x800 mdpi).  
    3. 600dp: a 7” tablet (600x1024 mdpi).  
    4. 720dp: a 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc).  
    5. 所以1280*720 就用720dp的.  


    20、长按power键弹出的选项:

    [java] view plain copy
     
    1. frameworkpoliciesasephonecomandroidinternalpolicyimplPhoneWindowManager.java  
    2.  Runnable mPowerLongPress = new Runnable() {  
    3.   
    4.   public void run(){  
    5.   
    6.   mShouldTurnOffOnKeyUp = false;  
    7.   
    8.   performHapticsFeedbackLw(null,HapticFeedbackConstants.LONG_PRESS,false);  
    9.   
    10.   sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS);  
    11.   
    12.   showGlobalActionsDialog();  
    13.   
    14.   } };  

    调用showGlobalActionDialog方法将会显示“飞行模式”、“静音”,“关机”,选项的对话框,这个时候我们就可以把位于此处的frameworkspoliciesasephonecomandroidinternalpolicyimplGlobalActions.java该文件的createDialog方法中代码

    21、系统默认只有一张内置的静态壁纸,如如何修改可以内置多张静态壁纸:

    KK版本:
    1).在Launcher3/res/drawable-xxx 的文件夹下增加wallpaer的图片,每个wallpaper需要两种图片一张原图一张缩略图,如下形式

    [html] view plain copy
     
    1. wallpaper_01.jpg  
    2. wallpaper_01_small.jpg  
    3. wallpaper_02.jpg  
    4. wallpaper_02_small.jpg  

    缩略图的文件名必须原图"文件名"+"_small"
    2).在Launcher3/res/values-nodpi的wallpapers.xml中修改如下:

    [html] view plain copy
     
    1. <resources>  
    2.     <string-array name="wallpapers" translatable="false">  
    3.        <item>wallpaper_01</item>  
    4.        <item>wallpaper_02</item>  
    5.     </string-array>  
    6. </resources>  
    7.    

     L版本:
    1).在Launcher3/WallpaperPicker/res/drawable-xxx 的文件夹下增加wallpaer的图片,每个wallpaper需要两种图片一张原图一张缩略图,如下形式

    [html] view plain copy
     
    1. wallpaper_01.jpg  
    2. wallpaper_01_small.jpg  
    3. wallpaper_02.jpg  
    4. wallpaper_02_small.jpg  

    缩略图的文件名必须原图"文件名"+"_small"
    2).在Launcher3/WallpaperPicker/res/values-nodpi的wallpapers.xml中修改如下:

    [html] view plain copy
     
    1. <resources>  
    2.     <string-array name="wallpapers" translatable="false">  
    3.        <item>wallpaper_01</item>  
    4.        <item>wallpaper_02</item>  
    5.     </string-array>  
    6. </resources>  

    3)、Launcher3中app icon应用的顺序排列修改目录如下:eg:

    [html] view plain copy
     
    1. Launcher3 esxmldefault_toppackage.xml  
    [html] view plain copy
     
    1. <toppackages xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher3">  
    2.     <app  
    3.         launcher:topPackageName="com.yahoo.mobile.client.android.odp"  
    4.         launcher:topClassName="com.yahoo.mobile.client.android.odp.YahooODP"  
    5.         launcher:topOrder="4"  
    6.      />  
    7.   
    8.   
    9.     <app  
    10.         launcher:topPackageName="com.yahoo.mobile.client.android.im"  
    11.         launcher:topClassName="com.yahoo.mobile.client.android.im.YahooMessenger"  
    12.         launcher:topOrder="5"  
    13.      />  
    14.   
    15.   
    16.      <app  
    17.         launcher:topPackageName="com.yahoo.mobile.client.android.mail"  
    18.         launcher:topClassName="com.yahoo.mobile.client.android.mail.activity.YahooMail"  
    19.         launcher:topOrder="6"  
    20.      />  
    21.   
    22.   
    23.     <app  
    24.         launcher:topPackageName="com.yahoo.mobile.client.android.news"  
    25.         launcher:topClassName="com.yahoo.mobile.client.android.news.activity.Main"  
    26.         launcher:topOrder="7"  
    27.      />  
    28.   
    29.   
    30.      <app  
    31.         launcher:topPackageName="com.yahoo.mobile.client.android.finance"  
    32.         launcher:topClassName="com.yahoo.mobile.client.android.finance.activity.Main"  
    33.         launcher:topOrder="10"  
    34.      />  
    35. </toppackages>  

    22、添加reboot

    如果需要添加重新启动菜单做重启手机的动作,可以参考如下步骤修改实现:
    1)、 在alpsframeworksasecore es esvaluesstrings.xml 中添加标签:

    [html] view plain copy
     
    1. <string name="zzzzz_global_action_power_reboot">Reboot</string>  

    用来显示重新启动菜单项的字符串资源,如果需要添加其他语言的标识,请在其他可替换资源的res folder下添加对应资源。
    请注意,为了保证资源文件能够被编译进去,请同步将此资源添加到symbols.xml中。
     
    2)、 在alpsframeworksasecore es esdrawable-hdpi中添加图标:

    [html] view plain copy
     
    1. zzzzz_ic_lock_power_reboot.png  

    3)、 在alpsframeworksasepolicysrccomandroidinternalpolicyimplGlobalActions.java
    文件中的createDialog()函数中添加:
       

    [java] view plain copy
     
    1. Private GlobalActionsDialog createDialog(){  
    2.        ……  
    3.        mItems = new ArrayList<Action>();  
    4.        // first: power off  
    5.        mItems.add(……);       
    6.          /////////////////////////////////////////////Added for reboot items start  
    7.         mItems.add(  
    8.             new SinglePressAction(  
    9.                  com.android.internal.R. zzzzz_ic_lock_power_reboot,  
    10.                     R.string.zzzzz_global_action_power_reboot) {  
    11.                 public void onPress() {  
    12.                     mWindowManagerFuncs.reboot(true);  
    13.                 }  
    14.                 public boolean onLongPress() {  
    15.                     mWindowManagerFuncs.rebootSafeMode(true);  
    16.                     return true;  
    17.                 }  
    18.                 public boolean showDuringKeyguard() {  
    19.                     return true;  
    20.                 }  
    21.                 public boolean showBeforeProvisioning() {  
    22.                     return true;  
    23.                 }  
    24.             });  
    25.            /////////////////////////added end  
    26.         // next: airplane mode  
    27.         mItems.add(mAirplaneModeOn);  
    28. ……  
    29. }  

    4)、 在frameworksasecorejavaandroidviewWindowManagerPolicy.java文件中,找到WindowManagerFuncs这个interface的定义,增加如下function的声明:

    [java] view plain copy
     
    1. public interface WindowManagerFuncs {  
    2.         public void reboot(boolean confirm);  
    3. }  


    5)、 在FrameworksaseservicesjavacomandroidserverwmWindowManagerService.java中,因为其实现了WindowManagerFuncs这个接口,需要在该文件中添加reboot()函数的实现体。
    找到shutdown()函数,在其后面添加reboot()函数,函数内容如下:
        

    [java] view plain copy
     
    1. // Called by window manager policy.  Not exposed externally.  
    2.     @Override  
    3.     public void reboot(boolean confirm) {  
    4.         ShutdownThread.reboot(mContext, confirm);  
    5.     }  
    6.    

     还需要在array.xml的config_globalActionsList添加reboot选项
      public.xml中进行配置
     字符串添加:(第一次可以编过,后面有碰到编译res找不到)
      

    [java] view plain copy
     
    1. strings.xml:  
    2.       <string name="reboot_confirm_question">"Do you want to reboot?"</string>  
    3.       <string name="global_action_reboot">"Reboot"</string>  
    4.       <string name="reboot_progress">"Rebooting..."</string>  
    5.   
    6.   
    7.   symbols.xml  
    8.       <java-symbol type="string" name="reboot_confirm_question" />  
    9.       <java-symbol type="string" name="global_action_reboot" />  
    10.       <java-symbol type="string" name="reboot_progress" />(遇到编译res找不到,先屏蔽掉symbols.xml,编译后再重新加上继续编译)  

    注:android5.1的config_globalActionsList在  X:8163_engalpsframeworksasecore es esvaluesconfig.xml中已定义


    23、GMS预置:

    L版本GMS预置比较简单,只需要把GMS需要预置内容放置在 alps/vendor/google/文件夹下(google文件夹需要自行创建)
    然后检查vendor/google/下是否存在Android.mk文件,若没有此Android.mk,请新建一个,并把以下内容拷贝进去:

    [html] view plain copy
     
    1. ifdef BUILD_GMS  
    2. ifeq ($(strip $(BUILD_GMS)), yes)  
    3. include $(call all-subdir-makefiles)  
    4. endif  
    5. endif  

    同时再检查vendor/google/以下两个文件夹apps/ 和 frameworks/第一层目录下是否存在Android.mk如果不存在,也各新建一个,将以下内容拷贝进去:

    [html] view plain copy
     
    1. include $(call all-subdir-makefiles)  

    最后在build的时候带入"BUILD_GMS=yes",如:

    [java] view plain copy
     
    1. source build/envsetup.sh && lunch full_<YourProjectName>-user && source ./mbldenv.sh && BUILD_GMS=yes make -j24  

    若提示找不到mbldenv.sh,则使用如下命令:

    [java] view plain copy
     
    1. source build/envsetup.sh && lunch full_<YourProjectName>-user && BUILD_GMS=yes make -j24  

    注意,源代码的build文件中会有判断 BUILD_GMS 的值做不同build行为的语句,请不要修改,否则会造成GMS预置冲突或者预置不完整问题

    24、预置apk到vendor/operator/app下面

    预置apk到vendor/operator/app下面,有时候会编译不过
    这种情况一般是apk本身没有对齐导致的,可以先使用zipalign重新对齐apk后再预置,具体做法如下:

    [java] view plain copy
     
    1. out/host/linux-x86/bin/zipalign -f 4 unalign.apk aligned.apk  

    其中,unalign.apk指当前source apk,aligned.apk指对齐后输出的apk.

    25、mtk自带的一些工具文件,eg:工程模式

    [java] view plain copy
     
    1. alpsvendormediatekproprietarypackagesappsEngineerMode  


    26、Launcher3的添加所在目录:

    [java] view plain copy
     
    1. alpsdevicemediatekmt8163device.mk  


    27、apn配置文件所在目录:

    [java] view plain copy
     
    1. alpsdevicegenericgoldfishdataetcapns-conf.mk  

    28、GMS包接口所在目录:

    [java] view plain copy
     
    1. alpsdevicemediatekcommondevice.mk  


    29、可以在该目录下添加.jar和.so库(gms需要的库可在此添加)

    [java] view plain copy
     
    1. eg:alpsvendor**libs**com.google.widevine.software.drmcom.google.widevine.software.drm.jar  

    30、hotseat布局排版,所在目录:default_workspace_5x6

    [java] view plain copy
     
    1. alpsdevicemediatekcommonoverlaywifipackagesappsLauncher3 esxmldefault_workspace_5x6.xml  


    31、工程测试模式指令(暗码)  

    在alpsframeworksase elephonyjavacomandroidinternal elephonyTelephonyIntents.java 有接口(android.provider.Telephony.SECRET_CODE)
    在packages/services/telephony/src/com/android/phone/SpecialCharSequenceMgr.java的handleSecretCode方法中对暗码就行了处理
    alpsvendormediatekproprietarypackagesapps中添加FactoryMode,并在alpsdevicemediatekcommondevice.mk文件中添加FactoryMode,
    报莫名其妙的错误(后来问同事发现 , 必须对新增类中的函数或成员变量如果是public的话必须添加 /**{@hide}*/ 修饰. )
    可在计算器中用如下demo进行暗码调用

    [java] view plain copy
     
    1. if(text.contains("(2586)")) {  
    2.             // mDisplay.setText(mResult, scroll);  
    3.             // setDeleteMode(DELETE_MODE_CLEAR);  
    4.             int len = text.length();  
    5.             // Intent intent = new Intent(TelephonyIntents.SECRET_CODE_ACTION,Uri.parse("android_secret_code://" + text.substring(1, len - 1)));  
    6.             Intent intent = new Intent("android.provider.Telephony.SECRET_CODE",Uri.parse("android_secret_code://" + text.substring(1, len - 1)));  
    7.             mContext.sendBroadcast(intent);  
    8.             return;  
    9.            }  

    接收在Settings.java的   

    [java] view plain copy
     
    1. <receiver android:name="TestingSettingsBroadcastReceiver">  
    2.            <intent-filter>  
    3.                 <action android:name="android.provider.Telephony.SECRET_CODE" />  
    4.                 <data android:scheme="android_secret_code" android:host="4636" />  
    5.            </intent-filter>  
    6.       </receiver>  

    也可以自己写apk直接调用工厂模式:

    [java] view plain copy
     
    1. Intent intent=new Intent();  
    2. intent.setComponent(new ComponentName("com.mediatek.engineermode", "com.mediatek.engineermode.EngineerMode"));  
    3. startActivity(intent);  


    31、Launcher3中,android.mk文件中加入LOCAL_PRIVILEGED_MODULE := true,才能使Launcher3添加appwidget有效

    32、Launcher3 桌面横屏显示:

    1).修改AndroidManifest.xml
          

    [html] view plain copy
     
    1. <activity  
    2. ndroid:name="com.android.launcher3.Launcher"  
    3. android:launchMode="singleTask"  
    4. android:clearTaskOnLaunch="true"  
    5. android:stateNotNeeded="true"  
    6. android:theme="@style/Theme"  
    7. android:configChanges="mcc|mnc"  
    8. android:windowSoftInputMode="adjustPan"  
    9. android:screenOrientation="sensor"<!--modify to sensor -->  


    2).修改Utilities.java的isRotationEnabled方法

    [java] view plain copy
     
    1. public static boolean isRotationEnabled(Context c)   
    2.   
    3.   
    4.    {  
    5.          return true;//直接返回true  
    6.      }  

    此时旋转手机,Launcher会横竖屏切换。但hotseat会显示在屏幕的右方。如果要让hotseat显示在屏幕底部,可以按照如下步骤操作:

    3).修改res/values/config.xml

    [html] view plain copy
     
    1. <!--hotseat -->   
    2.    <bool name="hotseat_transpose_layout_with_orientation">false</bool<!--改为false-->  


    4).修改Hotseat.java的onFinishInflate方法

    [java] view plain copy
     
    1.     @Override  
    2.     protected void onFinishInflate() {  
    3.   
    4.   
    5. super.onFinishInflate();  
    6. LauncherAppState app = LauncherAppState.getInstance();  
    7. DeviceProfile grid = app.getDynamicGrid().getDeviceProfile();  
    8.   
    9. AllAppsButtonRank = grid.hotseatAllAppsRank;  
    10. mContent = (CellLayout) findViewById(R.id.layout);  
    11. if (grid.isLandscape && !grid.isLargeTablet()) {  
    12. mContent.setGridSize((int) grid.numHotseatIcons, 1); //modify  
    13. else {  
    14. mContent.setGridSize((int) grid.numHotseatIcons, 1);  
    15. }  
    16. mContent.setIsHotseat(true);  
    17. Log.i(TAG, "onFinishInflate,(int) grid.numHotseatIcons: " + (int) grid.numHotseatIcons);  
    18. resetLayout();  
    19. }  


    33、电池曲线修改目录:

    [java] view plain copy
     
    1. alpskernel-3.10driversmiscmediatekmach....powercust_battery_meter_table.h  


    34、配置内存大小:

    excel表格对应位置:

    [java] view plain copy
     
    1. alpsootableootloaderpreloader oolsemigen..MemoryDeviceList_MT8163.xls  
    2. alpsootableootloaderpreloadercustom..inccustom_MemoryDevice.h    
    3. 添加 #define CS_PART_NUMBER[1]      H5TC4G63AFR-PBA  


    35、变化设备屏幕尺寸:

    [java] view plain copy
     
      1. alpskernel-3.10archarm64configs**_e_debug_defconfig.mk  
      2. alpsdevice....ProjectConfig.mk  
  • 相关阅读:
    sql datepart ,dateadd,datediff,DateName函数
    DEV控件:gridControl常用属性设置
    师兄建议:
    .GRIDVIEW奇偶行变色
    C#中在主窗体中用ShowDialog方法显示子窗体的使用技巧
    Dev 控件lookUpEdit的数据绑定及其获取从UI界面赋给lookupedit的值
    从VS界面把图片导入数据库:①:把图片转换为二进制数据,②再把二进制数存进数据库
    YYKit之YYText
    分享使用method swizzling的经历
    autoreleasepool的笔记
  • 原文地址:https://www.cnblogs.com/zxouxuewei/p/8080919.html
Copyright © 2011-2022 走看看