一、SystemUI 如何通过Android Studio来阅读代码
1、先通过AS创建一个test工程,然后把SystemUI源码以modlule的形式导进来,然后在该modlule下面创建build.gradle文件,同步一下就可以看代码了
apply plugin: 'com.android.application'
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.android.systemui"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
jniLibs.srcDirs = [
'libs'
]
java.srcDirs = [
'src'
]
aidl.srcDirs = [
'src'
]
res.srcDirs = [
'res'
]
res.srcDirs = [
'res-zqc'
]
assets.srcDirs = [
'assets'
]
}
}
}
二、SystemUI 如何自定义自己资源文件
1、在SystemUI目录下面创建一个res-zqc文件夹,然后在该文件夹下面可以创建如下资源文件夹:layout、values、values-zh-rCN、drawable等资源文件
2、添加资源文件目录后,需要在Android.bp文件中把res-zqc编译进来
java_library {
name: "SystemUI-proto",
srcs: ["src/**/*.proto"],
proto: {
type: "nano",
},
}
java_library {
name: "SystemUI-tags",
srcs: ["src/com/android/systemui/EventLogTags.logtags"],
}
android_library {
name: "SystemUI-core",
srcs: [
"src/**/*.kt",
"src/**/*.java",
"src/**/I*.aidl",
],
resource_dirs: [
"res-keyguard",
"res-zqc",//加载自己的资源文件目录
"res",
],
static_libs: [
"SystemUIPluginLib",
"SystemUISharedLib",
"SettingsLib",
"androidx.legacy_legacy-support-v4",
"androidx.recyclerview_recyclerview",
"androidx.preference_preference",
"androidx.appcompat_appcompat",
"androidx.mediarouter_mediarouter",
"androidx.palette_palette",
"androidx.legacy_legacy-preference-v14",
"androidx.leanback_leanback",
"androidx.slice_slice-core",
"androidx.slice_slice-view",
"androidx.slice_slice-builders",
"androidx.arch.core_core-runtime",
"androidx.lifecycle_lifecycle-extensions",
"androidx.dynamicanimation_dynamicanimation",
"androidx-constraintlayout_constraintlayout",
"iconloader_base",
"SystemUI-tags",
"SystemUI-proto",
"dagger2-2.19",
"jsr330"
],
manifest: "AndroidManifest.xml",
libs: [
"telephony-common",
"ims-common",
"unisoc_ims_common",
"radio_interactor_common",
],
aaptflags: [
"--extra-packages",
"com.android.keyguard",
],
plugins: ["dagger2-compiler-2.19"],
}
android_library {
name: "SystemUI-tests",
manifest: "tests/AndroidManifest.xml",
resource_dirs: [
"tests/res",
"res-keyguard",
"res-zqc",//加载自己的资源文件目录
"res",
],
srcs: [
"tests/src/**/*.kt",
"tests/src/**/*.java",
"src/**/*.kt",
"src/**/*.java",
"src/**/I*.aidl",
],
static_libs: [
"SystemUIPluginLib",
"SystemUISharedLib",
"SettingsLib",
"androidx.legacy_legacy-support-v4",
"androidx.recyclerview_recyclerview",
"androidx.preference_preference",
"androidx.appcompat_appcompat",
"androidx.mediarouter_mediarouter",
"androidx.palette_palette",
"androidx.legacy_legacy-preference-v14",
"androidx.leanback_leanback",
"androidx.slice_slice-core",
"androidx.slice_slice-view",
"androidx.slice_slice-builders",
"androidx.arch.core_core-runtime",
"androidx.lifecycle_lifecycle-extensions",
"androidx.dynamicanimation_dynamicanimation",
"androidx-constraintlayout_constraintlayout",
"SystemUI-tags",
"SystemUI-proto",
"metrics-helper-lib",
"androidx.test.rules", "hamcrest-library",
"mockito-target-inline-minus-junit4",
"testables",
"truth-prebuilt",
"dagger2-2.19",
"jsr330"
],
libs: [
"android.test.runner",
"telephony-common",
"android.test.base",
"ims-common",
"unisoc_ims_common",
"radio_interactor_common",
],
aaptflags: [
"--extra-packages",
"com.android.keyguard:com.android.systemui",
],
plugins: ["dagger2-compiler-2.19"],
}
android_app {
name: "SystemUI",
static_libs: [
"SystemUI-core",
],
resource_dirs: [],
platform_apis: true,
product_specific: true,
certificate: "platform",
privileged: true,
optimize: {
proguard_flags_files: ["proguard.flags"],
},
libs: [
"telephony-common",
"unisoc_ims_common",
"radio_interactor_common",
],
dxflags: ["--multi-dex"],
aaptflags: [
"--extra-packages",
"com.android.keyguard",
],
required: ["privapp_whitelist_com.android.systemui"],
}
// Only used for products that are shipping legacy Recents
android_app {
name: "SystemUIWithLegacyRecents",
overrides: [
"SystemUI",
],
platform_apis: true,
product_specific: true,
certificate: "platform",
privileged: true,
dxflags: ["--multi-dex"],
aaptflags: [
"--extra-packages",
"com.android.keyguard",
],
optimize: {
proguard_flags_files: ["proguard.flags", "legacy/recents/proguard.flags"],
},
static_libs: [
"SystemUI-core",
],
libs: [
"telephony-common",
"ims-common",
"unisoc_ims_common",
],
srcs: [
"legacy/recents/src/**/*.java",
"legacy/recents/src/**/I*.aidl",
],
resource_dirs: [
"legacy/recents/res",
],
manifest: "legacy/recents/AndroidManifest.xml",
}
备注说明:AS加载SystemUI源码进来,如果不在build.gradle中加上自己自定义资源文件目录参与编译,那么看代码就标记红色并且不能跳转