这篇文章将介绍如何在Android系统中内置第三方apk
一、准备工作
- 编译好的Android源码
- Android apk文件:也就是安卓应用安装包
二、步骤
(1)在源码packages/apps目录下以我们需要内置的APK名字来创建一个新的文件夹
以 qqmusic.apk 为例,在Android_12_AOSP/packages/apps目录下新建qqmusic文件夹
cd Android_12_AOSP/packages/apps/
mkdir qqmusic
(2)将 qqmusic.apk 放入建好的文件夹中,在文件夹中创建 Android.mk 文件
cd Android_12_AOSP/packages/apps/qqmusic/
touch Android.mk
(3)编辑 Android.mk 文件内容,内容如下
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := CarSkin.apk
LOCAL_MODULE_CLASS := APPS
#可以为user、eng、tests、optional,optional代表在任何版本下都编译
LOCAL_MODULE_TAGS := optional
#编译模块的名称
LOCAL_MODULE := CarSkin
#可以为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)
或
# Test
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := qqmusic
LOCAL_MODULE_CLASS := APPS
#可以为user、eng、tests、optional,optional代表在任何版本下都编译
LOCAL_MODULE_TAGS := optional
LOCAL_BUILT_MODULE_STEM := package.apk
LOCAL_DEX_PREOPT := nostripping
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
#不设置或者设置为false,安装位置为system/app,如果设置为true,则安装位置为system/priv-app
LOCAL_PRIVILEGED_MODULE := true
#可以为testkey、platform、shared、media、PRESIGNED(使用原签名),platform代表为系统应用
LOCAL_CERTIFICATE := platform
#覆盖安装
#LOCAL_OVERRIDES_PACKAGES := DeviceTest RKDeviceTest
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MULTILIB := 32
#LOCAL_REQUIRED_MODULES :=
#JNI_LIBS :=
#$(foreach FILE,$(shell find $(LOCAL_PATH)/lib/ -name *.so), $(eval JNI_LIBS += $(FILE)))
#LOCAL_PREBUILT_JNI_LIBS := $(subst $(LOCAL_PATH),,$(JNI_LIBS))
include $(BUILD_PREBUILT)
预装带源码的APP到系统
Android.bp文件
// Android依赖导入
android_library_import {
name: "com.google.android.material_mater

本文介绍在Android系统中内置第三方APK的方法,包括创建文件夹、编辑Android.mk文件、配置编译系统等步骤,并提供了常见错误及其解决办法。
1万+

被折叠的 条评论
为什么被折叠?



