Android Framework-系统APP-内置App的添加

397 阅读1分钟

内置App的添加

Packages

  1. 进入apps 文件夹,新建文件夹 newTest,(随便起,但是后面会用到文件夹名)
  2. 放入对应已经签名过的apk,建议和文件夹名称一样,避免混乱
  3. 放入Android.mk文件

Device

  1. 找到对应手机名称文件夹,如pixel5 就是 google文件夹,华为 是huawei

  2. 找到对应手机带好文件夹 ,比如pixel5代号redfin

  3. 进入代号文件夹(redfin),找到device/device-代号 .mk

  4. pixel5的就是 device-redfin

  5. 打开device文件,随便找到一个 PRODUCT_PACKAGES 标签后面追加 添加过的文件夹名称 ,比如

    PRODUCT_PACKAGES += \
        sensors.$(PRODUCT_HARDWARE) \
        newTest
    

Android.mk 编写

资料

blog.csdn.net/etrospect/a…

编写
​
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
#注意这里要和对应的apk名称一样
LOCAL_SRC_FILES := newTest.apk
LOCAL_MODULE_CLASS := APPS
#可以为user、eng、tests、optional,optional代表在任何版本下都编译
LOCAL_MODULE_TAGS := optional
#编译模块的名称 这里是文件夹名称
LOCAL_MODULE := newTest
#可以为testkey、platform、shared、media、PRESIGNED(使用原签名),platform代表为系统应用
LOCAL_CERTIFICATE := PRESIGNED
#不设置或者设置为false,安装位置为system/app,如果设置为true,则安装位置为system/priv-app?
LOCAL_PRIVILEGED_MODULE := false
#module的后缀,可不设置
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
# 关闭预编译,不会生成OAT文件
LOCAL_DEX_PREOPT := true
LOCAL_PRODUCT_MODULE := true
include $(BUILD_PREBUILT)
失败的mk
v7a版本
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := HomeWork
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
​
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
​
​
#获得apk中 armeabi-v7a 下所有的so
define get-all-libraries-module-name-in-subdirs
$(sort $(shell cd $(LOCAL_PATH) ; rm -rf lib >/dev/null ; unzip $(LOCAL_MODULE).apk 'lib/armeabi-v7a/*.so' -d . >/dev/null ; find -L $(1) -name "*.so"))
endef
ALL_LIBRARIES_MODULE_NAME := $(call get-all-libraries-module-name-in-subdirs, lib/armeabi-v7a)
LOCAL_PREBUILT_JNI_LIBS := $(ALL_LIBRARIES_MODULE_NAME)
​
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)
v7a和v8a版本
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)
​
LOCAL_MODULE := mht
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)define get-all-libraries-module-name-in-subdirs
$(sort $(shell cd $(LOCAL_PATH) ; rm -rf lib >/dev/null ; unzip $(LOCAL_MODULE).apk 'lib/armeabi-v7a/*.so' 'lib/arm64-v8a/*.so' -d . >/dev/null ; find -L $(1) -name "*.so"))
endef
#获取 armeabi-v7a 和 arm64-v8a 架构下所有的共享库
ALL_LIBRARIES_MODULE_NAME := $(call get-all-libraries-module-name-in-subdirs, lib/armeabi-v7a lib/arm64-v8a)
LOCAL_PREBUILT_JNI_LIBS := $(ALL_LIBRARIES_MODULE_NAME)
​
LOCAL_CERTIFICATE := PRESIGNED
​
include $(BUILD_PREBUILT)
end 重新编译
  1. source build/envsetup.sh
  2. ulimit -S -n 2048
  3. lunch 对应版本
  4. m