Android 内置第三方app

这篇文章将给大家介绍如何在Android系统内置Android app,这里以Android9.0,手机设备Piexl一代为例。没有搭建编译环境的可以看这一篇Android系统编码编译

一、环境准备

(1) Android系统源码编译环境
(2) Android APK文件

二、概述

这里主要讲述内置已经编译好的APK文件,讲述不同的参数对内置APP的影响。这里总共分为三个步骤。
(1)在packages/apps目录下新建存放APK的文件夹
(2)创建Android.mk文件,编写编译配置
(3)在/build/make/target/product/core.mk文件加入对APK的编译

三、过程

(1)创建APK存放目录
/aosp/packages/apps/目录下新建apk的存放目录,这里以内置chrome浏览器为例,在目录下创建chrome目录

cd aosp/packages/apps
mkdir Chrome

(2)Android.mk编写
a. 在aosp/packages/apps/Chrome/目录下创建Android.mk文件

touch Android.mk

b. 编写Android.mk文件

#当前路径
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/libmonochrome.so

#哪个版本进行编译,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/core.mk文件加入对APK的编译

PRODUCT_PACKAGES += \
    BasicDreams \
    BlockedNumberProvider \
    BookmarkProvider \
    BuiltInPrintService \
    .....
    .....
    .....
    Calendar \
    Chrome

(4)编译

cd aosp
source build/envsetup.sh
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="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.ex.demo"
    android:sharedUserId="android.uid.system"> #在这里添加shareUserId
	...
	...
	...
	
</manifest>

b.在Android.mk文件中添加系统签名

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
...
...
...
#系统签名
LOCAL_CERTIFICATE := platform

include $(BUILD_PREBUILT) 

(2)内置为系统APP,不具有系统级权限(app非系统签名)
a.在Android.mk文件中保持原签名

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
...
...
...
#保持原签名
LOCAL_CERTIFICATE := PRESIGNED

include $(BUILD_PREBUILT) 

asjhan for Android reverse

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值