英文网站cms,软件开发app制作公司,短视频营销的发展趋势,做网站最流行的语言Android系统内置应用
背景 客户提供APK#xff0c;需要集成进系统#xff0c;并且不可卸载
Android原生是怎么做的#xff1f; 已Launcher3为例#xff0c;apk是位于/system/priv-app/Launcher3目录下
AOSP系统内置app步骤
1.在package/apps/目录下创建相应的文件夹如需要集成进系统并且不可卸载
Android原生是怎么做的 已Launcher3为例apk是位于/system/priv-app/Launcher3目录下
AOSP系统内置app步骤
1.在package/apps/目录下创建相应的文件夹如MyApp 2.在build/make/target/product/core.mk加入该Module名字 3.再进行整体的make
Android系统内置APK作为系统应用可分为
不带任何so的应用带有so的应用
不带任何so的应用
不带任何so的应用的.mk文件示例
LOCAL_PATH: $(call my-dir)include $(CLEAR_VARS)
$(warning MyApp of LOCAL_PATH is $(LOCAL_PATH))#打印输出
# Module name should match apk name to be installed
LOCAL_MODULE : MyApp
LOCAL_MODULE_TAGS : optional
#不管是user 还是eng 版本都会编译此app
LOCAL_SRC_FILES : $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS : APPS
LOCAL_MODULE_SUFFIX : $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE : PRESIGNED
include $(BUILD_PREBUILT)一些说明
LOCAL_PATH : $(call my-dir)Android.mk 文件必须先定义 LOCAL_PATH 变量。此变量表示源文件在开发树中的位置。在上述命令中构建系统提供的宏函数 my-dir 将返回当前目录Android.mk 文件本身所在的目录的路径。 include $(CLEAR_VARS)CLEAR_VARS 变量指向一个特殊的 GNU Makefile后者会为您清除许多 LOCAL_XXX 变量例如 LOCAL_MODULE、LOCAL_SRC_FILES 和 LOCAL_STATIC_LIBRARIES。请注意GNU Makefile 不会清除 LOCAL_PATH。此变量必须保留其值因为系统在单一 GNU Make 执行上下文其中的所有变量都是全局变量中解析所有构建控制文件。在描述每个模块之前您必须声明重新声明此变量。 LOCAL_MODULE : MyApp此变量用于存储模块名称。指定的名称在所有模块名称中必须唯一并且不得包含任何空格。您必须先定义该名称然后才能添加任何脚本CLEAR_VARS 的脚本除外 LOCAL_MODULE_TAGS : optional LOCAL_MODULE_TAGS 模块的tag为debug eng tests optional samples shell_ash shell_mksh等tag的组合一个模块可有多个Tag。 user:指该模块只在user版本下才编译eng:指该模块只在eng版本下才编译tests:指该模块只在tests版本下才编译optional:指该模块在所有版本下都编译 LOCAL_MODULE_SUFFIX : $(COMMON_ANDROID_PACKAGE_SUFFIX)目标文件的后缀。COMMON_ANDROID_PACKAGE_SUFFIX : .apk LOCAL_CERTIFICATE : PRESIGNEDLOCAL_CERTIFICATE : PRESIGNED表示APK签名使用原来签名即第三方签名若要使用系统签名则可以改为LOCAL_CERTIFICATE : platform系统前面可以使apk获得系统权限 include $(BUILD_PREBUILT)BUILD_PREBUILT : 该模块已经预先编译 带有so的应用
带有so的应用相对于不带so的应用只是多了一步需要提取apk里面lib的so文件进行单独的内置
LOCAL_PATH: $(call my-dir)
include $(CLEAR_VARS)
$(warning MyApp of LOCAL_PATH is $(LOCAL_PATH))
# Module name should match apk name to be installed
LOCAL_MODULE : MyApp_SO
LOCAL_MODULE_TAGS : optional
#不管是user 还是eng 版本都会编译此app
LOCAL_SRC_FILES : $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS : APPS
LOCAL_MODULE_SUFFIX : $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_PREBUILT_JNI_LIBS : lib/x86_64/libnative-lib.so
#lib/x86/libtest.so \ //注意前面要用tab键隔开#lib/x86/libtest2.so //这是你需要添加的so 如果是 armeabi-v7a 直接替换掉armeabi
LOCAL_CERTIFICATE : platform
#表示app已经签名
include $(BUILD_PREBUILT)参考
Android.mkAndroid.mk之模块描述变量 Android 系统预设 App有什么难的Build Cookbook