buildscript { repositories { google() mavenCentral() maven { url 'https://jitpack.io' } maven { url 'https://maven.google.com' } maven { url 'https://developer.huawei.com/repo/' } maven { url 'https://developer.hihonor.com/repo' } maven { url 'https://maven.aliyun.com/repository/central' } maven { url 'https://maven.aliyun.com/repository/jcenter' } maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/google' } } dependencies { classpath GRADLE_CLASS_PATH classpath PROTOBUF_CLASS_PATH } } allprojects { configurations.all { resolutionStrategy { force 'androidx.constraintlayout:constraintlayout:2.0.4' force 'androidx.core:core:1.5.0' //for targetSdkVersion 29 force 'androidx.activity:activity:1.2.2' force 'androidx.lifecycle:lifecycle-livedata:2.3.1' force 'androidx.lifecycle:lifecycle-livedata-core:2.3.1' force 'androidx.lifecycle:lifecycle-runtime:2.3.1' force 'androidx.lifecycle:lifecycle-viewmodel:2.3.1' force 'androidx.lifecycle:lifecycle-viewmodel-savedstate:2.3.1' force 'androidx.lifecycle:lifecycle-service:2.3.1' force 'androidx.lifecycle:lifecycle-process:2.3.1' force 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' force 'androidx.savedstate:savedstate:1.1.0' force 'androidx.profileinstaller:profileinstaller:1.1.0' force 'androidx.startup:startup-runtime:1.0.0' force 'androidx.arch.core:core-runtime:2.1.0' force 'androidx.sqlite:sqlite:2.1.0' force 'androidx.sqlite:sqlite-framework:2.1.0' force 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0' } } gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs.add('-Xbootclasspath/p:libs/framework.jar') } } } def appName() { return "AoleyunLauncher3" } def releaseTime() { return new Date().format("yyyyMMdd_HHmmss", TimeZone.getDefault()) } final String ANDROID_TOP = "${rootDir}" final String FRAMEWORK_PREBUILTS_DIR = "${ANDROID_TOP}/prebuilts/framework_intermediates/" apply plugin: 'com.android.application' apply plugin: 'com.google.protobuf' android { namespace "com.aoleyun.os" compileSdkVersion COMPILE_SDK buildToolsVersion BUILD_TOOLS_VERSION defaultConfig { minSdkVersion 26 targetSdkVersion 28 versionCode 216 versionName "1.6.1016" ndk { //选择要添加的对应 cpu 类型的 .so 库。 abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' // 还可以添加 'x86', 'x86_64', 'mips', 'mips64' } lintOptions { checkReleaseBuilds false abortOnError false } testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } buildFeatures { dataBinding true buildConfig true aidl true } //签名 signingConfigs { zhanRui { storeFile file("keystore/zhanxun.keystore") storePassword "123456" keyAlias "zhanxun" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } zhanRuiUserdebug { storeFile file("keystore/zhanxunUserdebug.keystore") storePassword "123456" keyAlias "zhanxunUserdebug" keyPassword "123456" v1SigningEnabled true v2SigningEnabled false } zhanRui12 { storeFile file("keystore/zhanrui12.jks") storePassword "123456" keyAlias "zhanrui12" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } mtk { storeFile file("keystore/xueshibaoos.jks") storePassword "123456" keyAlias "xueshibaoos" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } TeclastP20S { storeFile file("keystore/MTKP20S.keystore") storePassword "123456" keyAlias "MTKP20S" keyPassword "123456" v2SigningEnabled false } zhanruiG10Z { storeFile file("keystore/zhanruiG10Z.keystore") storePassword "123456" keyAlias "zhanruiG10Z" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } iPlay50miniPro { storeFile file("keystore/iPlay50miniPro.jks") storePassword "123456" keyAlias "iplay50minipro" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } G10P { storeFile file("keystore/G10PMTK11.jks") storePassword "123456" keyAlias "G10PMTK11" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } G11Userdebug { storeFile file("keystore/G11Userdebug.keystore") storePassword "123456" keyAlias "G11Userdebug" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } teclast8183 { storeFile file("keystore/TeclastMTK12.jks") storePassword "123456" keyAlias "TeclastMTK12" keyPassword "123456" v2SigningEnabled false } Huaruian8768 { storeFile file("keystore/Huaruian8768.jks") storePassword "123456" keyAlias "Huaruian8768" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } T40Air { storeFile file("keystore/T40Air.jks") storePassword "123456" keyAlias "T40Air" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } P50 { storeFile file("keystore/P50TD.jks") storePassword "123456" keyAlias "P50TD" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } seewo { storeFile file("keystore/aiud.keystore") storePassword "s4HdJuphaiHhU7WY" keyAlias "androidreleasekey" keyPassword "JwUw2oV16rUjWLBC" v1SigningEnabled true v2SigningEnabled true } U1302 { storeFile file("keystore/U1302.jks") storePassword "123456" keyAlias "u1302" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } G128T { storeFile file("keystore/HuaruianG128T.jks") storePassword "123456" keyAlias "g128t" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } G122 { storeFile file("keystore/6789U.p12") storePassword "123456" keyAlias "6789u" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } DX11 { storeFile file("keystore/DX11.p12") storePassword "123456" keyAlias "dx11" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } MT6789 { storeFile file("keystore/MT6789.keystore") storePassword "123456" keyAlias "mt6789" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } SM8150 { storeFile file("keystore/sm8150.jks") storePassword "logan-123456789" keyAlias "platformkey" keyPassword "logan-123456789" v1SigningEnabled true v2SigningEnabled true } G122J { storeFile file("keystore/G122J.p12") storePassword "123456" keyAlias "g122j" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } } buildTypes { G122JDebug.initWith(debug) G122JDebug { buildConfigField "String", "platform", '"G122J"' versionNameSuffix "_debug" debuggable true signingConfig signingConfigs.G122J } G122JRelease.initWith(release) G122JRelease { buildConfigField "String", "platform", '"G122J"' signingConfig signingConfigs.G122J } G12NLDebug.initWith(debug) G12NLDebug { buildConfigField "String", "platform", '"G12NL"' versionNameSuffix "_debug" debuggable true signingConfig signingConfigs.MT6789 } G12NLRelease.initWith(release) G12NLRelease { buildConfigField "String", "platform", '"G12NL"' signingConfig signingConfigs.MT6789 } DX11Debug.initWith(debug) DX11Debug { buildConfigField "String", "platform", '"DX11"' versionNameSuffix "_debug" debuggable true signingConfig signingConfigs.DX11 } DX11Release.initWith(release) DX11Release { buildConfigField "String", "platform", '"DX11"' signingConfig signingConfigs.DX11 } G122Debug.initWith(debug) G122Debug { buildConfigField "String", "platform", '"MT6765"' versionNameSuffix "_debug" debuggable true signingConfig signingConfigs.G122 } G122Release.initWith(release) G122Release { buildConfigField "String", "platform", '"MT6765"' signingConfig signingConfigs.G122 } QualcommDebug.initWith(debug) QualcommDebug { buildConfigField "String", "platform", '"QualcommA"' versionNameSuffix "_debug" debuggable true signingConfig signingConfigs.SM8150 } QualcommRelease.initWith(release) QualcommRelease { buildConfigField "String", "platform", '"QualcommA"' signingConfig signingConfigs.SM8150 } G128TDebug.initWith(debug) G128TDebug { buildConfigField "String", "platform", '"G128T"' versionNameSuffix "_debug" debuggable true signingConfig signingConfigs.G128T } G128TRelease.initWith(release) G128TRelease { buildConfigField "String", "platform", '"G128T"' signingConfig signingConfigs.G128T } QZ15Debug.initWith(debug) QZ15Debug { buildConfigField "String", "platform", '"QZA15"' versionNameSuffix "_debug" debuggable true signingConfig signingConfigs.U1302 } QZ15Release.initWith(release) QZ15Release { buildConfigField "String", "platform", '"QZA15"' signingConfig signingConfigs.U1302 } seewoDebug.initWith(debug) seewoDebug { versionNameSuffix "_debug" debuggable true signingConfig signingConfigs.seewo buildConfigField "String", "platform", '"seewo"' } seewoRelease.initWith(release) seewoRelease { signingConfig signingConfigs.seewo buildConfigField "String", "platform", '"seewo"' } P50Debug.initWith(debug) P50Debug { versionNameSuffix "_debug" debuggable true signingConfig signingConfigs.P50 buildConfigField "String", "platform", '"P50TD"' } P50Release.initWith(release) P50Release { signingConfig signingConfigs.P50 buildConfigField "String", "platform", '"P50TD"' } T40AirDebug.initWith(debug) T40AirDebug { versionNameSuffix "_debug" debuggable true signingConfig signingConfigs.T40Air buildConfigField "String", "platform", '"HL500"' } T40AirRelease.initWith(release) T40AirRelease { signingConfig signingConfigs.T40Air buildConfigField "String", "platform", '"HL500"' } // AiUduDebug.initWith(debug) // AiUduDebug { // versionNameSuffix "_debug" // debuggable true // signingConfig signingConfigs.G10P // buildConfigField "String", "platform", '"AUDG104"' // } // // AiUduRelease.initWith(release) // AiUduRelease { // signingConfig signingConfigs.G10P // buildConfigField "String", "platform", '"AUDG104"' // } Huaruian8768Debug.initWith(debug) Huaruian8768Debug { versionNameSuffix "_debug" debuggable true signingConfig signingConfigs.Huaruian8768 buildConfigField "String", "platform", '"MT8768"' } Huaruian8768Release.initWith(release) Huaruian8768Release { signingConfig signingConfigs.Huaruian8768 buildConfigField "String", "platform", '"MT8768"' } G11Debug.initWith(debug) G11Debug { versionNameSuffix "_debug" debuggable true signingConfig signingConfigs.G11Userdebug buildConfigField "String", "platform", '"MTKG11"' } G11Release.initWith(release) G11Release { signingConfig signingConfigs.G11Userdebug buildConfigField "String", "platform", '"MTKG11"' } YXPD1Debug.initWith(debug) YXPD1Debug { versionNameSuffix "_debug" debuggable true signingConfig signingConfigs.G10P buildConfigField "String", "platform", '"YXPD1"' } YXPD1Release.initWith(release) YXPD1Release { signingConfig signingConfigs.G10P buildConfigField "String", "platform", '"YXPD1"' } c2Debug.initWith(debug) c2Debug { versionNameSuffix "_debug" debuggable true signingConfig signingConfigs.teclast8183 buildConfigField "String", "platform", '"MTK8183"' } c2Release.initWith(release) c2Release { signingConfig signingConfigs.teclast8183 buildConfigField "String", "platform", '"MTK8183"' } G10PDebug.initWith(debug) G10PDebug { versionNameSuffix "_debug" debuggable true signingConfig signingConfigs.G10P buildConfigField "String", "platform", '"G10P"' } G10PRelease.initWith(release) G10PRelease { signingConfig signingConfigs.G10P buildConfigField "String", "platform", '"G10P"' } G104Debug.initWith(debug) G104Debug { buildConfigField "String", "platform", '"MTK11"' versionNameSuffix "_debug" debuggable true signingConfig signingConfigs.G10P } G104Release.initWith(release) G104Release { buildConfigField "String", "platform", '"MTK11"' signingConfig signingConfigs.G10P } iPlay50miniProDebug.initWith(debug) iPlay50miniProDebug { buildConfigField "String", "platform", '"miniG99"' versionNameSuffix "_debug" debuggable true signingConfig signingConfigs.iPlay50miniPro } iPlay50miniProRelease.initWith(release) iPlay50miniProRelease { buildConfigField "String", "platform", '"miniG99"' signingConfig signingConfigs.iPlay50miniPro } zhanRuiDebug.initWith(debug) zhanRuiDebug { versionNameSuffix "_debug" buildConfigField "String", "platform", '"ZhanRui"' debuggable true signingConfig signingConfigs.zhanRui } zhanRuiRelease.initWith(release) zhanRuiRelease { buildConfigField "String", "platform", '"ZhanRui"' signingConfig signingConfigs.zhanRui } //userdebug rom使用这个版本 zhanRuiUserdebug.initWith(zhanRuiDebug) zhanRuiUserdebug { versionNameSuffix "_debug" buildConfigField "String", "platform", '"ZhanRui"' debuggable true signingConfig signingConfigs.zhanRuiUserdebug } zhanRui12Debug.initWith(debug) zhanRui12Debug { versionNameSuffix "_debug" buildConfigField "String", "platform", '"AH6016"' debuggable true signingConfig signingConfigs.zhanRui12 } zhanRui12Release.initWith(release) zhanRui12Release { buildConfigField "String", "platform", '"AH6016"' signingConfig signingConfigs.zhanRui12 } TeclastP20SDebug.initWith(debug) TeclastP20SDebug { debuggable true versionNameSuffix "_debug" buildConfigField "String", "platform", '"P20S"' signingConfig signingConfigs.TeclastP20S } TeclastP20SRelease.initWith(release) TeclastP20SRelease { buildConfigField "String", "platform", '"P20S"' signingConfig signingConfigs.TeclastP20S } zhanruiG10ZDebug.initWith(debug) zhanruiG10ZDebug { buildConfigField "String", "platform", '"ZR6016"' versionNameSuffix "_debug" debuggable true signingConfig signingConfigs.zhanruiG10Z } zhanruiG10ZRelease.initWith(release) zhanruiG10ZRelease { buildConfigField "String", "platform", '"ZR6016"' signingConfig signingConfigs.zhanruiG10Z } debug { buildConfigField "String", "platform", '"MTK"' debuggable true versionNameSuffix "_debug" minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' signingConfig signingConfigs.mtk applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null) { def fileName = "${appName()}_${variant.versionCode}_V${variant.versionName}_${releaseTime()}_${productFlavors[0].name}.apk" output.outputFileName = fileName } } } } release { buildConfigField "String", "platform", '"MTK"' minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' signingConfig signingConfigs.mtk //将release版本的包名重命名,加上版本及日期 applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = "" if (outputFile != null) { def fileName = "${appName()}_${variant.versionCode}_V${variant.versionName}_${releaseTime()}_${productFlavors[0].name}_${buildType.name}.apk" output.outputFileName = fileName } } } } } // The flavor dimensions for build variants (e.g. aospWithQuickstep, aospWithoutQuickstep) // See: https://developer.android.com/studio/build/build-variants#flavor-dimensions flavorDimensions "app", "recents" productFlavors { aosp { dimension "app" applicationId 'com.aoleyun.os' testApplicationId 'com.aoleyun.os.tests' } /*hide l3go*/ // l3go { // dimension "app" // applicationId 'com.aoleyun.os' // testApplicationId 'com.aoleyun.os.tests' // } /*withQuickstep { dimension "recents" minSdkVersion 28 } withQuickstepIconRecents { dimension "recents" minSdkVersion 28 }*/ withoutQuickstep { dimension "recents" } } // Disable release builds for now // android.variantFilter { variant -> // if (variant.buildType.name.endsWith('release')) { // variant.setIgnore(true) // } // // // Icon recents is Go only // if (name.contains("WithQuickstepIconRecents") && !name.contains("l3go")) { // variant.setIgnore(true) // } // } sourceSets { main { res.srcDirs = ['res'] java.srcDirs = ['src', 'src_plugins'] manifest.srcFile 'AndroidManifest-common.xml' proto { srcDir 'protos/' srcDir 'proto_overrides/' } } debug { manifest.srcFile "AndroidManifest.xml" } androidTest { res.srcDirs = ['tests/res'] java.srcDirs = ['tests/src', 'tests/tapl'] manifest.srcFile "tests/AndroidManifest-common.xml" } androidTestDebug { manifest.srcFile "tests/AndroidManifest.xml" } aosp { java.srcDirs = ['src_flags', 'src_shortcuts_overrides'] manifest.srcFile "AndroidManifest.xml" } /*hide l3go*/ // l3go { // res.srcDirs = ['go/res'] // java.srcDirs = ['go/src'] // manifest.srcFile "go/AndroidManifest.xml" // } withoutQuickstep { java.srcDirs = ['src_ui_overrides'] } /*withQuickstep { res.srcDirs = ['quickstep/res', 'quickstep/recents_ui_overrides/res'] java.srcDirs = ['quickstep/src', 'quickstep/recents_ui_overrides/src'] manifest.srcFile "quickstep/AndroidManifest.xml" } withQuickstepIconRecents { res.srcDirs = ['quickstep/res', 'go/quickstep/res'] java.srcDirs = ['quickstep/src', 'go/quickstep/src'] manifest.srcFile "quickstep/AndroidManifest.xml" }*/ } } repositories { maven { url "../../../prebuilts/fullsdk-darwin/extras/android/m2repository" } maven { url "../../../prebuilts/fullsdk-linux/extras/android/m2repository" } // google() mavenCentral() maven { url 'https://jitpack.io' } maven { url 'https://maven.google.com' } maven { url 'https://developer.huawei.com/repo/' } maven { url 'https://developer.hihonor.com/repo' } maven { url 'https://maven.aliyun.com/repository/central' } maven { url 'https://maven.aliyun.com/repository/jcenter' } maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/google' } } dependencies { compileOnly files('libs/framework.jar') implementation files('libs/vendor.mediatek.hardware.nvram-V1.0-java.jar') implementation "androidx.dynamicanimation:dynamicanimation:${ANDROID_X_VERSION}" implementation "androidx.recyclerview:recyclerview:${ANDROID_X_VERSION}" implementation "androidx.preference:preference:${ANDROID_X_VERSION}" implementation "androidx.constraintlayout:constraintlayout:2.0.4" implementation project(':IconLoader') implementation fileTree(dir: "${ANDROID_TOP}/libs", include: 'launcher_protos.jar') // Recents lib dependency //withQuickstepImplementation fileTree(dir: "${ANDROID_TOP}/libs", include: 'sysui_shared.jar') // Recents lib dependency for Go //withQuickstepIconRecentsImplementation fileTree(dir: "${ANDROID_TOP}/libs", include: 'sysui_shared.jar') // Required for AOSP to compile. This is already included in ANDROID_TOP sysui_shared.jar implementation 'androidx.appcompat:appcompat:1.3.0' withoutQuickstepImplementation fileTree(dir: "${ANDROID_TOP}/libs", include: 'plugin_core.jar') testImplementation 'junit:junit:4.12' androidTestImplementation "org.mockito:mockito-core:1.9.5" androidTestImplementation 'com.google.dexmaker:dexmaker:1.2' androidTestImplementation 'com.google.dexmaker:dexmaker-mockito:1.2' androidTestImplementation 'com.android.support.test:runner:1.0.0' androidTestImplementation 'com.android.support.test:rules:1.0.0' androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2' androidTestImplementation "androidx.annotation:annotation:${ANDROID_X_VERSION}" //OkHttp implementation 'com.squareup.okhttp3:okhttp:4.9.2' //RxJava和Retrofit implementation 'io.reactivex.rxjava2:rxjava:2.2.21' implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' implementation 'com.squareup.retrofit2:adapter-rxjava2:2.9.0' //gson implementation 'com.google.code.gson:gson:2.9.0' //磁盘缓存 implementation 'com.jakewharton:disklrucache:2.0.2' //mmkv implementation 'com.tencent:mmkv-static:2.4.0' //bugly implementation 'com.tencent.bugly:crashreport:4.1.9.2' // //腾讯移动推送 TPNS // implementation 'com.tencent.tpns:tpns:1.3.2.0-release' // //阿里云推送 // implementation 'com.aliyun.ams:alicloud-android-push:3.8.0' //下载 implementation 'me.laoyuyu.aria:core:3.8.16' annotationProcessor 'me.laoyuyu.aria:compiler:3.8.16' //工具类 implementation 'com.blankj:utilcodex:1.31.1' // 吐司框架:https://github.com/getActivity/Toaster implementation 'com.github.getActivity:Toaster:12.6' } // 在 dependencies 之后添加 project.afterEvaluate { android.applicationVariants.all { variant -> variant.javaCompileProvider.get().options.bootstrapClasspath = files( file('libs/framework.jar'), android.getBootClasspath() ) } } protobuf { // Configure the protoc executable protoc { artifact = 'com.google.protobuf:protoc:3.0.0-alpha-3' generateProtoTasks { all().each { task -> task.builtins { remove java javanano { option "java_package=launcher_log_extension.proto|com.aoleyun.os.userevent.nano" option "java_package=launcher_log.proto|com.aoleyun.os.userevent.nano" option "java_package=launcher_dump.proto|com.aoleyun.os.model.nano" option "enum_style=java" } } } } } }