这篇文章将给大家介绍如何在Android系统内置Android app,这里以Android9.0,手机设备Piexl一代为例。没有搭建编译环境的可以看这一篇Android系统编码编译
一、环境准备
(1) Android系统源码编译环境
(2) Android APK文件
二、概述
这里主要讲述内置已经编译好的APK文件,讲述不同的参数对内置APP的影响。这里总共分为三个步骤。
(1)在packages/apps
目录下新建存放APK的文件夹
(2)创建文件,编写编译配置
(3)在/build/make/target/product/
文件加入对APK的编译
三、过程
(1)创建APK存放目录
在/aosp/packages/apps/
目录下新建apk的存放目录,这里以内置chrome浏览器为例,在目录下创建chrome目录
cd aosp/packages/apps
mkdir Chrome
(2)编写
a. 在aosp/packages/apps/Chrome/
目录下创建文件
touch
b. 编写文件
#当前路径
LOCAL_PATH := $(call my-dir)
#清除环境变量
include $(CLEAR_VARS)
#模块名称
LOCAL_MODULE := Chrome
#编译的模块文件
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
#定义编译完成之后的类型
LOCAL_MODULE_CLASS := APPS
#定义编译完成之后模块的后缀
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
#提取so模块,半自动提取apk中的so,并拷贝到system/lib或system/lib64目录下
LOCAL_PREBUILT_JNI_LIBS := \
@lib/armeabi-v7a/
#哪个版本进行编译,optional表示全版本编译。可选字段: user 、 eng 、 tests
LOCAL_MODULE_TAGS := optional
#不进行odex优化
LOCAL_DEX_PREOPT := false
#签名,platform表示系统签名,PRESIGNED表示保持原签名
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)
(3)在/build/make/target/product/
文件加入对APK的编译
PRODUCT_PACKAGES += \
BasicDreams \
BlockedNumberProvider \
BookmarkProvider \
BuiltInPrintService \
.....
.....
.....
Calendar \
Chrome
(4)编译
cd aosp
source build/
lunch
make -j32
(5)刷机
cd aosp/out/host/linux-x86/bin/
./adb reboot bootloader
./fastboot flashall -w
四、内置APP几种情况
(1)内置为系统APP,具有系统级权限
a.在app的AndroidManifest文件中添加sharedUserId
:
<manifest xmlns:android="/apk/res/android"
xmlns:tools="/tools"
package=""
android:sharedUserId=""> #在这里添加shareUserId
...
...
...
</manifest>
b.在文件中添加系统签名
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
...
...
...
#系统签名
LOCAL_CERTIFICATE := platform
include $(BUILD_PREBUILT)
(2)内置为系统APP,不具有系统级权限(app非系统签名)
a.在文件中保持原签名
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
...
...
...
#保持原签名
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)
asjhan for Android reverse