- 不试图改变项目本身的目录结构,而是通过添加额外的配置和依赖构建Gradle环境支持
- 运行的效果会与原生的有样式上的差异,这是由于AS编译出来的主题样式与系统的默认的样式不同(如下图)
adb shell pm path com.android.permissioncontroller
adb root
adb remount
adb shell mkdir /system/priv-app/PermissionController
adb push PermissionController.apk /system/priv-app/PermissionController/
adb reboot
adb shell setenforce 0
// AOSP/android-11/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes-header.jar
compileOnly files('libs/framework.jar')
// AOSP/android-11/prebuilts/sdk/current/androidx/m2repository/androidx/preference/preference/1.2.0-alpha01/preference-1.2.0-alpha01.aar
implementation(name: 'preference-1.2.0-alpha01', ext: 'aar')
## implementation 'androidx.preference:preference:1.2.0-alpha01'
// AOSP/android-11/out/soong/.intermediates/external/protobuf/libprotobuf-java-lite/android_common/javac/libprotobuf-java-lite.jar
compileOnly files('libs/libprotobuf-java-lite.jar')
// AOSP/android-11/out/soong/.intermediates/external/protobuf/libprotobuf-java-nano/android_common/javac/libprotobuf-java-nano.jar
implementation files('libs/libprotobuf-java-nano.jar')
// AOSP/android-11/out/soong/.intermediates/packages/apps/PermissionController/permissioncontroller-statsd/android_common_com.android.permission/javac/permissioncontroller-statsd.jar
implementation files('libs/permissioncontroller-statsd.jar')
需要将具体路径下的代码直接导入到项目中作为Module依赖, 构建的时候可以直接通过implementation project引用,或者也可以gradle build生成aar,再放置到libs文件夹中,作为静态包使用。
// AOSP/android-11/frameworks/libs/systemui/iconloaderlib
implementation project(':iconloaderlib')
// AOSP/android-11/packages/apps/Car/libs/car-ui-lib
implementation project(':car-ui-lib')
// AOSP/android-11/frameworks/base/packages/SettingsLib
implementation project(':SettingsLib:HelpUtils')
implementation project(':SettingsLib:RestrictedLockUtils')
implementation project(':SettingsLib:AppPreference')
implementation project(':SettingsLib:SearchWidget')
implementation project(':SettingsLib:LayoutPreference')
implementation project(':SettingsLib:BarChartPreference')
implementation project(':SettingsLib:ActionBarShadow')
implementation project(':SettingsLib:ProgressBar')
implementation project(':SettingsLib:Utils')
sourceSets {
main {
......
proto.srcDirs = ['protos']
......
}
}
在AOSP/android-11/build/target/product/security路径下找到签名证书,并使用 keytool-importkeypair 生成keystore, 执行如下命令:
./keytool-importkeypair -k platform.keystore -p 123456 -pk8 platform.pk8 -cert platform.x509.pem -alias platform
并将以下代码添加到gradle配置中:
signingConfigs {
platform {
storeFile file("platform.keystore")
storePassword '123456'
keyAlias 'platform'
keyPassword '123456'
}
}
buildTypes {
release {
debuggable false
minifyEnabled false
signingConfig signingConfigs.platform
}
debug {
debuggable true
minifyEnabled false
signingConfig signingConfigs.platform
}
}
applicationVariants.all { variant ->
variant.mergeResourcesProvider.configure {
doFirst {
def filePath = 'res/values/overlayable.xml'
delete file(filePath)
exec {
commandLine 'git', 'update-index', '--assume-unchanged', filePath
}
}
}
}
git update-index --assume-unchanged $path
git update-index --no-assume-unchanged $path