一、 <product>.mk編譯腳本中
1. PRODUCT_PACKAGES 宏指定要打包的app
2. PRODUCT_REMOVED_PACKAGES 宏移除不需要的app
3. PRODUCT_LOCALES 宏指定要打包的語言資源,如:en_US zh_CN等
圖片,layout等其他資源,如:mdpi hdpi等
4. PRODUCT_PROPERTY_OVERRIDES 宏指定需要覆蓋system.prop中的屬性值,如:
dalvik.vm.heapstartsize=5m \
dalvik.vm.heapgrowthlimit=48m \
dalvik.vm.heapsize=128m
5. PRODUCT_COPY_FILES 宏指定需要拷貝的文件及拷貝的目的地,如:
device/qcom/msm7627a/media/media_codecs_7627a.xml:system/etc/media_codecs.xml
6. DEVICE_PACKAGE_OVERLAYS 宏指定overlay的路徑,overlay是指編譯時優先選擇該宏指定目錄下的文件而忽略源碼中的相同的那個文件。如:
DEVICE_PACKAGE_OVERLAYS := device/qcom/msm7627a/overlay
二、Andoird.mk編譯腳本中
1. LOCAL_MODULE 指定要編譯生成的.so或可執行C/C++程序,需包含 include $(BUILD_EXECUTABLE) 或 include $(BUILD_STATIC_LIBRARY)
2. LOCAL_SRC_FILES 指定源代碼文件
3. LOCAL_C_INCLUDES 制定頭文件
4. LOCAL_SHARED_LIBRARIES 指定依賴的動態庫
5. LOCAL_STATIC_LIBRARIES 制定依賴的靜態庫
6. LOCAL_MODULE_TAGS 指定在哪個編譯目標下進行編譯,如:optional eng user
7. LOCAL_STATIC_JAVA_LIBRARIES 指定依賴的jar包
8. LOCAL_REQUIRED_MODULES 指定依賴的.so動態庫,貌似也可用LOCAL_SHARED_LIBRARIES
9. LOCAL_PACKAGE_NAME 指定生成的APK名字,需包含 include $(BUILD_PACKAGE)
10. LOCAL_CERTIFICATE 指定簽名,如:
a、testkey:普通APK,默認情況下使用。
b、platform:該APK完成一些系統的核心功能。經過對系統中存在的文件夾的訪問測試,這種方式編譯出來的APK所在進程的UID為system。
c、shared:該APK需要和home/contacts進程共享數據。
d、media:該APK是media/download系統中的一環。
11. LOCAL_PROGUARD_FLAG_FILES 指定代碼混淆文件
三、AndroidManifest.xml APK描述文件中
1. android:sharedUserId 可以用來指定系統分配給程序使用的User ID,r如:
android:sharedUserId="android.uid.system" 程序將使用system帳號運行,這需要程序簽名為: LOCAL_CERTIFICATE := platform
還有 "android.uid.shared" "android.uid.media" 也需要程序擁有相應的簽名
2.
四、 init.rc腳本中,可以使用 exec <path> <parms***> 執行命令
五、 簽名文件路徑如下:
OpenGrok xref: /Android4.1/build/target/product/security/
Name Date Size
media.pk8 01-Aug-2013 1.2 KiB
media.x509.pem 01-Aug-2013 1.6 KiB
platform.pk8 01-Aug-2013 1.2 KiB
platform.x509.pem 01-Aug-2013 1.6 KiB
README 01-Aug-2013 1.7 KiB
shared.pk8 01-Aug-2013 1.2 KiB
shared.x509.pem 01-Aug-2013 1.6 KiB
testkey.pk8 01-Aug-2013 1.2 KiB
testkey.x509.pem 01-Aug-2013 1.6 KiB
六、