Android应用使用到系统级的API,需要对apk进行系统级签名,本文记录下在Android 模拟器中创建系统应用的流程。
1.AOSP镜像创建模拟器🔗
在Android Studio中的Tools->Device Manager->Add Device,选择Android Open Source创建模拟器。
2.生成AOSP的系统签名文件🔗
- 生成jks签名文件使用到keytool-importkeypair,生成系统签名文件。AOSP-jks
keytool-importkeypair [-k keystore] [-p storepass] -pk8 pk8 -cert cert -alias key_alias
- gradle文件配置签名文件
signingConfigs {
getByName("debug") {
keyAlias = "aa"
keyPassword = "123456"
storeFile = file("../keystore/platform_123456_aa_.jks")
storePassword = "123456"
}
create("release") {
keyAlias = "aa"
keyPassword = "123456"
storeFile = file("../keystore/platform_123456_aa_.jks")
storePassword = "123456"
}
}
buildTypes {
release {
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
signingConfig = signingConfigs.getByName("release")
}
debug {
signingConfig = signingConfigs.getByName("debug")
}
}
附: apk进行系统级签名🔗
还有一种是对apk直接系统级签名,这个还没试过,暂且记录下📝。
- AOSP源码中找到签名文件platform.pk8 和 platform.x509.pem
- 在Android SDK中找到$ANDROID_HOME/build-tools/33.0.0(选择其中一个版本),找到apksigner 程序执行下面命令直接签名apk。
apksigner sign --key platform.pk8 --cert platform.x509.pem <path of YourAPK>
3.导入apk到系统镜像🔗
#启动模拟器,置为可写状态
emulator -avd <YourAVDNameHere> -writable-system
#导入apk到系统目录下
adb root
adb remount
adb shell mkdir /system/app/<YourAppFolder>
adb push <YourAPK> /system/app/<YourAppFolder>/
adb reboot
4.应用中使用uid🔗
<manifest xmlns:tools="http://schemas.android.com/tools"
package="com.zxy.demo"
xmlns:android="http://schemas.android.com/apk/res/android"
android:sharedUserId="android.uid.system">
</manifest>