Android 10 SystemUI 如何自定义自己资源文件和如何通过AS来阅读代码

一、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中加上自己自定义资源文件目录参与编译,那么看代码就标记红色并且不能跳转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值