一、 <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
六、