apply plugin: 'com.android.application' static def appName() { return "AoleyunDeviceInfo" } static def releaseTime() { return new Date().format("yyyyMMdd_HHmmss", TimeZone.getDefault()) } android { //Android Studio 4.0 之后使用这个,但是会把jar打包进apk // gradle.projectsEvaluated { // tasks.withType(JavaCompile) { // Set fileSet = options.bootstrapClasspath.getFiles() // List newFileList = new ArrayList<>(); // //JAVA语法,可连续调用,输入参数建议为相对路径 // newFileList.add(new File("libs/framework.jar")) // //最后将原始参数添加 // newFileList.addAll(fileSet) // options.bootstrapClasspath = files( // newFileList.toArray() // ) // } // } compileSdkVersion 29 buildToolsVersion "30.0.3" defaultConfig { applicationId "com.aoleyun.sn" versionCode 221 versionName "1.6.0522" //There are no CERT files because If the mini sdk version is 23+, the AGP will ignore the V1 scheme signature. minSdkVersion 24 targetSdkVersion 29 multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" ndk { //选择要添加的对应 cpu 类型的 .so 库。 abiFilters 'arm64-v8a' // 还可以添加 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64', 'mips', 'mips64' } buildConfigField "String", "ROOT_URL", '"https://led.aoleyun.cn/api/"' buildConfigField "String", "SCREEN_BASE_URL", '"https://led.aoleyun.cn:2018/"' buildConfigField "String", "SCREEN_URL", '"https://led.aoleyun.cn:2018/wm/is_online"' buildConfigField "String", "WEBSOCKET_URL", '"wss://led.aoleyun.cn/wss/"' } lintOptions { checkReleaseBuilds false // Or, if you prefer, you can continue to check for errors in release builds, // but continue the build even when errors are found: abortOnError false } dataBinding { enabled true } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } externalNativeBuild { cmake { path file('CMakeLists.txt') } } sourceSets { //测试版的图标 // beta.res.srcDirs = ['src/beta/res'] // newly.res.srcDirs = ['src/beta/res'] main { jniLibs.srcDir 'src/main/jniLibs' } } // Disable release builds for now android.variantFilter { variant -> // // Icon recents is Go only // if (name.contains("WithQuickstepIconRecents") && !name.contains("l3go")) { // variant.setIgnore(true) // } } //签名 signingConfigs { zhanRui { storeFile file("keystore/zhanxun.keystore") storePassword "123456" keyAlias "zhanxun" keyPassword "123456" v1SigningEnabled true v2SigningEnabled false } 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 false } mtk { storeFile file("keystore/xueshibaoos.jks") storePassword "123456" keyAlias "xueshibaoos" 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 } G10PUserDebug { storeFile file("keystore/G10PUserDebug.jks") storePassword "123456" keyAlias "G10PUserDebug" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } zhanruiG10Z { storeFile file("keystore/zhanruiG10Z.keystore") storePassword "123456" keyAlias "zhanruiG10Z" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } G10ZUserDebug { storeFile file("keystore/G10zUserDebug.keystore") storePassword "123456" keyAlias "G10zUserDebug" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } mtk12 { storeFile file("keystore/mtkAndroid12.keystore") storePassword "123456" keyAlias "mtk12" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } P20S { storeFile file("keystore/MTKP20S.keystore") storePassword "123456" keyAlias "MTKP20S" keyPassword "123456" v2SigningEnabled false } //iPlay50 mini,iPlay50 android13 共用签名 iPlay50mini { storeFile file("keystore/iPlay50Mini.keystore") storePassword "android" keyAlias "platform" keyPassword "android" v2SigningEnabled false } 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 } iPlay50miniPro { storeFile file("keystore/iPlay50miniPro.jks") storePassword "123456" keyAlias "iplay50minipro" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } U1302 { storeFile file("keystore/U1302.keystore") storePassword "123456" keyAlias "u1302" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } MT6765 { storeFile file("keystore/MT6765.keystore") storePassword "123456" keyAlias "mt6765" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } G128T { storeFile file("keystore/HuaruianG128T.jks") storePassword "123456" keyAlias "g128t" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } } buildTypes { QualcommDebug.initWith(debug) QualcommDebug { buildConfigField "String", "platform", '"QualcommA"' versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.zhanRui } QualcommRelease.initWith(release) QualcommRelease { buildConfigField "String", "platform", '"QualcommA"' signingConfig signingConfigs.zhanRui } 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 } MT6765Debug.initWith(debug) MT6765Debug { buildConfigField "String", "platform", '"MT6765"' versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.MT6765 } MT6765Release.initWith(release) MT6765Release { buildConfigField "String", "platform", '"MT6765"' signingConfig signingConfigs.MT6765 } 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 } 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 } 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"' } G11JDebug.initWith(debug) G11JDebug { versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.Huaruian8768 buildConfigField "String", "platform", '"aud8786"' } G11JRelease.initWith(release) G11JRelease { signingConfig signingConfigs.Huaruian8768 buildConfigField "String", "platform", '"aud8786"' } 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"' } 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 // signingConfig signingConfigs.mtk buildConfigField "String", "platform", '"MTK8183"' } c2Release.initWith(release) c2Release { signingConfig signingConfigs.teclast8183 // signingConfig signingConfigs.mtk buildConfigField "String", "platform", '"MTK8183"' } teclast8183Debug.initWith(debug) teclast8183Debug { versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.teclast8183 buildConfigField "String", "platform", '"teclast8183"' } teclast8183Release.initWith(release) teclast8183Release { signingConfig signingConfigs.teclast8183 buildConfigField "String", "platform", '"teclast8183"' } iPlay5013Debug.initWith(debug) iPlay5013Debug { buildConfigField "String", "platform", '"iplay5013"' versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.iPlay50mini } iPlay5013Release.initWith(release) iPlay5013Release { buildConfigField "String", "platform", '"iplay5013"' signingConfig signingConfigs.iPlay50mini } MTKAndroid12Debug.initWith(debug) MTKAndroid12Debug { versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.mtk12 } MTKAndroid12Release.initWith(release) MTKAndroid12Release { signingConfig signingConfigs.mtk12 } 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"' } 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"' } G13Debug.initWith(debug) G13Debug { versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.G10P buildConfigField "String", "platform", '"HRAD13"' } G13Release.initWith(release) G13Release { signingConfig signingConfigs.G10P buildConfigField "String", "platform", '"HRAD13"' } G104Debug.initWith(debug) G104Debug { versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.G10P buildConfigField "String", "platform", '"MTK11"' } G104Release.initWith(release) G104Release { signingConfig signingConfigs.G10P buildConfigField "String", "platform", '"MTK11"' } G104UserDebug.initWith(debug) G104UserDebug { versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.G10PUserDebug buildConfigField "String", "platform", '"MTK11"' } zhanruiG10ZUserDebug.initWith(debug) zhanruiG10ZUserDebug { versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.G10ZUserDebug buildConfigField "String", "platform", '"ZR6016"' } zhanruiG10ZDebug.initWith(debug) zhanruiG10ZDebug { versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.zhanruiG10Z buildConfigField "String", "platform", '"ZR6016"' } zhanruiG10ZRelease.initWith(release) zhanruiG10ZRelease { signingConfig signingConfigs.zhanruiG10Z buildConfigField "String", "platform", '"ZR6016"' } TeclastP20SDebug.initWith(debug) TeclastP20SDebug { debuggable true versionNameSuffix "-debug" signingConfig signingConfigs.P20S buildConfigField "String", "platform", '"P20S"' } TeclastP20SRelease.initWith(release) TeclastP20SRelease { signingConfig signingConfigs.P20S buildConfigField "String", "platform", '"P20S"' } zhanRuiDebug.initWith(debug) zhanRuiDebug { debuggable true versionNameSuffix "-debug" signingConfig signingConfigs.zhanRui buildConfigField "String", "platform", '"展锐"' } zhanRuiRelease.initWith(release) zhanRuiRelease { signingConfig signingConfigs.zhanRui buildConfigField "String", "platform", '"展锐"' } //userdebug rom使用这个版本 zhanRuiUserdebug.initWith(zhanRuiDebug) zhanRuiUserdebug { debuggable true versionNameSuffix "-debug" signingConfig signingConfigs.zhanRuiUserdebug buildConfigField "String", "platform", '"展锐"' } zhanRuiUserdebugReleas.initWith(release) zhanRuiUserdebugReleas { debuggable true signingConfig signingConfigs.zhanRuiUserdebug buildConfigField "String", "platform", '"展锐"' } zhanRui12Debug.initWith(debug) zhanRui12Debug { debuggable true versionNameSuffix "-debug" signingConfig signingConfigs.zhanRui12 buildConfigField "String", "platform", '"AH6016"' } zhanRui12Release.initWith(release) zhanRui12Release { signingConfig signingConfigs.zhanRui12 buildConfigField "String", "platform", '"AH6016"' } debug { debuggable true versionNameSuffix "-debug" minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //Zipalign优化 zipAlignEnabled true applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null) { def fileName = "${appName()}_${variant.versionCode}_V${variant.versionName}_${releaseTime()}_${buildType.name}.apk" output.outputFileName = fileName } } } signingConfig signingConfigs.mtk buildConfigField "String", "platform", '"MTK"' } release { //混淆 minifyEnabled false //前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,后一个文件是自己的定义混淆文件 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //Zipalign优化 zipAlignEnabled true applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null) { def fileName = "${appName()}_${variant.versionCode}_V${variant.versionName}_${releaseTime()}_${buildType.name}.apk" output.outputFileName = fileName } } } signingConfig signingConfigs.mtk buildConfigField "String", "platform", '"MTK"' } } } dependencies { // implementation fileTree(dir: "libs", include: ["*.jar"]) compileOnly files('libs/framework.jar') compileOnly files('libs/cube_mdm.jar') compileOnly files('libs/cube_sdk_v1.0.0.jar') //版本高了idea plugin 下载VisualClassBytes修改version jclasslib最好用 // compileOnly files('libs/qz_cubemdm_sdk_v1.0.0_1.8.jar') compileOnly files('libs/qz_cubemdm_sdk_v1.0.1_1.8.jar') implementation files('libs/ebf_tools_v1.0.jar') implementation files('libs/vendor.mediatek.hardware.nvram-V1.0-java.jar') implementation files('libs/BaiduTraceSDK_v3_1_10.jar') implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.multidex:multidex:2.0.1' implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0' implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' implementation 'com.squareup.moshi:moshi:1.9.3' //OkHttp implementation 'com.squareup.okhttp3:okhttp:4.8.0' implementation 'com.squareup.okhttp3:logging-interceptor:4.9.3' //Retrofit implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-moshi:2.9.0' implementation 'com.squareup.retrofit2:adapter-rxjava3:2.9.0' // gson converter implementation 'com.squareup.retrofit2:converter-gson:2.9.0' // 标准转换器,去掉 Retrofit以Mutipart上传参数时,String参数会多一对双引号 implementation 'com.squareup.retrofit2:converter-scalars:2.3.0' //RxJava implementation 'io.reactivex.rxjava3:rxjava:3.0.0' implementation 'io.reactivex.rxjava3:rxandroid:3.0.0' //生命周期管理 implementation 'com.trello.rxlifecycle4:rxlifecycle:4.0.2' implementation 'com.trello.rxlifecycle4:rxlifecycle-android:4.0.2' implementation 'com.trello.rxlifecycle4:rxlifecycle-components:4.0.2' implementation 'com.trello.rxlifecycle4:rxlifecycle-components-preference:4.0.2' implementation 'com.trello.rxlifecycle4:rxlifecycle-android-lifecycle:4.0.2' implementation 'com.jakewharton.rxbinding4:rxbinding:4.0.0' implementation 'com.jeremyliao:live-event-bus-x:1.7.3' //implementation "com.uber.autodispose:autodispose:1.3.0" //implementation "com.uber.autodispose:autodispose-android-archcomponents:1.3.0" //Google implementation 'com.google.code.gson:gson:2.9.0' implementation 'com.google.zxing:core:3.5.0' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.13.2' annotationProcessor 'com.github.bumptech.glide:compiler:4.13.2' // debugImplementation because LeakCanary should only run in debug builds. debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.14' //磁盘缓存 implementation 'com.jakewharton:disklrucache:2.0.2' //阿里云推送 implementation 'com.aliyun.ams:alicloud-android-push:3.8.0' //百度地图 implementation 'com.baidu.lbsyun:BaiduMapSDK_Location:9.1.8' //MMKV implementation 'com.tencent:mmkv-static:1.2.13' //bugly implementation 'com.tencent.bugly:crashreport:4.1.9.2' //xCrash implementation 'com.iqiyi.xcrash:xcrash-android-lib:3.0.0' //工具类 implementation 'com.blankj:utilcodex:1.31.0' //Aria implementation 'com.arialyy.aria:core:3.8.15' annotationProcessor 'com.arialyy.aria:compiler:3.8.15' //压缩文件解压 implementation 'org.zeroturnaround:zt-zip:1.15' //更换字体框架 implementation 'uk.co.chrisjenx:calligraphy:2.3.0' //Java WebSocket implementation "org.java-websocket:Java-WebSocket:1.5.3" //状态栏透明 implementation 'com.gitee.zackratos:UltimateBarX:0.8.0' // // 基础依赖包,必须要依赖 // implementation 'com.gyf.immersionbar:immersionbar:3.0.0' // // fragment快速实现(可选) // implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' // // kotlin扩展(可选) // implementation 'com.gyf.immersionbar:immersionbar-ktx:3.0.0' implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.24' implementation 'com.facebook.rebound:rebound:0.3.8' implementation 'com.king.view:circleprogressview:1.1.2' // 吐司框架:https://github.com/getActivity/Toaster implementation 'com.github.getActivity:Toaster:12.6' } preBuild { doLast { def imlFile = file(project.name + ".iml") // def imlFile = file("..\\.idea\\modules\\" + project.name + "\\" + rootProject.name + "." + project.name + ".iml") println 'Change ' + project.name + '.iml order' try { def parsedXml = (new XmlParser()).parse(imlFile) def jdkNode = parsedXml.component[1].orderEntry.find { it.'@type' == 'jdk' } parsedXml.component[1].remove(jdkNode) def sdkString = "Android API " + android.compileSdkVersion.substring("android-".length()) + " Platform" println 'what' + sdkString new Node(parsedXml.component[1], 'orderEntry', ['type': 'jdk', 'jdkName': sdkString, 'jdkType': 'Android SDK']) groovy.xml.XmlUtil.serialize(parsedXml, new FileOutputStream(imlFile)) } catch (FileNotFoundException e) { // nop, iml not found println "no iml found" } } //https://www.pianshen.com/article/93481144911/ //https://blog.csdn.net/dhl_1986/article/details/102856026 //https://blog.csdn.net/zhonghe1114/article/details/80923730 //https://blog.csdn.net/u014175785/article/details/116235760 //使用系统编译后的framework.jar }