apply plugin: 'com.android.application' static def appName() { return "FLYSN" } static def releaseTime() { return new Date().format("yyyyMMdd_HHmmss", TimeZone.getDefault()) } android { namespace "com.fuying.sn" compileSdkVersion 29 buildToolsVersion "29.0.3" defaultConfig { minSdkVersion 26 targetSdkVersion 29 multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" ndk { //选择要添加的对应 cpu 类型的 .so 库。 abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', "x86" // 还可以添加 'x86', 'x86_64', 'mips', 'mips64' } 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 } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } buildFeatures { dataBinding true buildConfig true aidl true } //多版本 productFlavors { beta { flavorDimensions "default" versionCode 89 versionName "4.3" // applicationId "com.fuying.sn" applicationId "com.fying.sntest" buildConfigField "String", "ROOT_URL", '"https://fxyapi.17hxg.com/android/"' buildConfigField "String", "SCREEN_URL", '"https://fxyapi.17hxg.com:3018/wm/is_online"' // buildConfigField "String", "WEBSOCKET_URL", '"wss://47.111.23.154:3018"' } official { flavorDimensions "default" versionCode 89 versionName "3.4.9" applicationId "com.fuying.sn" buildConfigField "String", "ROOT_URL", '"https://as.fuyingy.com/android/"' buildConfigField "String", "SCREEN_URL", '"https://as.fuyingy.com:3018/wm/is_online"' // buildConfigField "String", "WEBSOCKET_URL", '"wss://47.111.23.154:3018"' } } //签名 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 } teclastUnisoc { storeFile file("keystore/TeclastUnisoc.keystore") storePassword "123456" keyAlias "TeclastUnisoc" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } teclastUnisocUserdebug { storeFile file("keystore/TeclastUnisocUserDebug.jks") storePassword "123456" keyAlias "teclast" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } teclastMTK { storeFile file("keystore/TeclastMTK.jks") storePassword "123456" keyAlias "TeclastMTK" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } mtk { storeFile file("keystore/xueshibaoos.jks") storePassword "123456" keyAlias "xueshibaoos" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } mtkAndroid11 { storeFile file("keystore/mtkAndroid11.jks") storePassword "123456" keyAlias "mtk11" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } unisoc { storeFile file("keystore/Unisoc.jks") storePassword "123456" keyAlias "unisoc" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } G10P { storeFile file("keystore/G10PMTK11.jks") storePassword "123456" keyAlias "G10PMTK11" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } Teclast8515 { storeFile file("keystore/Teclast8515.keystore") storePassword "123456" keyAlias "Teclast8515" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } iPlay50SE { storeFile file("keystore/iPlay50SE.keystore") storePassword "123456" keyAlias "iplay50se" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } Huaruian8768 { storeFile file("keystore/Huaruian8768.jks") storePassword "123456" keyAlias "Huaruian8768" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } MT6789 { storeFile file("keystore/MT6789.keystore") storePassword "123456" keyAlias "mt6789" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } } buildTypes { MT6789Debug.initWith(debug) MT6789Debug { manifestPlaceholders = [ AMAP_KEY: "63e2c211ad3bf161969582a58cf3c598" ] buildConfigField "String", "platform", '"G12NL"' versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.MT6789 } MT6789Release.initWith(release) MT6789Release { manifestPlaceholders = [ AMAP_KEY: "63e2c211ad3bf161969582a58cf3c598" ] buildConfigField "String", "platform", '"G12NL"' signingConfig signingConfigs.MT6789 } Huaruian8768Debug.initWith(debug) Huaruian8768Debug { manifestPlaceholders = [ AMAP_KEY: "a4d58ed320000359544e99e1189438c7" ] buildConfigField "String", "platform", '"G10J"' versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.Huaruian8768 } Huaruian8768Release.initWith(release) Huaruian8768Release { manifestPlaceholders = [ AMAP_KEY: "a4d58ed320000359544e99e1189438c7" ] buildConfigField "String", "platform", '"G10J"' signingConfig signingConfigs.Huaruian8768 } iPlay50SEDebug.initWith(debug) iPlay50SEDebug { manifestPlaceholders = [ AMAP_KEY: "adfc5099b8305d05bff03dcfd6579640" ] buildConfigField "String", "platform", '"ipaly50"' versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.iPlay50SE } iPlay50SERelease.initWith(release) iPlay50SERelease { manifestPlaceholders = [ AMAP_KEY: "adfc5099b8305d05bff03dcfd6579640" ] buildConfigField "String", "platform", '"ipaly50"' signingConfig signingConfigs.iPlay50SE } unisocDebug.initWith(debug) unisocDebug { manifestPlaceholders = [ AMAP_KEY: "a45f52890415873d7fe97731b9ff27a7" ] buildConfigField "String", "platform", '"ZhanRui"' versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.unisoc } unisocRelease.initWith(debug) unisocRelease { manifestPlaceholders = [ AMAP_KEY: "a45f52890415873d7fe97731b9ff27a7" ] buildConfigField "String", "platform", '"ZhanRui"' debuggable true signingConfig signingConfigs.unisoc } mtk11Debug.initWith(debug) mtk11Debug { manifestPlaceholders = [ AMAP_KEY: "2faeb0552117ccbbeb2fd63afd5d71f3" ] buildConfigField "String", "platform", '"MTK"' versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.mtkAndroid11 } mtk11Release.initWith(release) mtk11Release { manifestPlaceholders = [ AMAP_KEY: "2faeb0552117ccbbeb2fd63afd5d71f3" ] buildConfigField "String", "platform", '"MTK"' signingConfig signingConfigs.mtkAndroid11 } teclastMTKDebug.initWith(debug) teclastMTKDebug { manifestPlaceholders = [ AMAP_KEY: "4ba0125745b17d0c73a6638dcda43d2f" ] buildConfigField "String", "platform", '"T30PRO"' versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.teclastMTK } teclastMTKRelease.initWith(release) teclastMTKRelease { manifestPlaceholders = [ AMAP_KEY: "4ba0125745b17d0c73a6638dcda43d2f" ] buildConfigField "String", "platform", '"T30PRO"' signingConfig signingConfigs.teclastMTK } G6Debug.initWith(debug) G6Debug { manifestPlaceholders = [ AMAP_KEY: "418069ea951c42cdaa39a4d2015f23b9" ] buildConfigField "String", "platform", '"G6"' versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.G10P } G6Release.initWith(release) G6Release { manifestPlaceholders = [ AMAP_KEY: "418069ea951c42cdaa39a4d2015f23b9" ] buildConfigField "String", "platform", '"G6"' signingConfig signingConfigs.G10P } G13Debug.initWith(debug) G13Debug { manifestPlaceholders = [ AMAP_KEY: "418069ea951c42cdaa39a4d2015f23b9" ] buildConfigField "String", "platform", '"G13"' versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.G10P } G13Release.initWith(release) G13Release { manifestPlaceholders = [ AMAP_KEY: "418069ea951c42cdaa39a4d2015f23b9" ] buildConfigField "String", "platform", '"G13"' signingConfig signingConfigs.G10P } Teclast8515Debug.initWith(debug) Teclast8515Debug { manifestPlaceholders = [ AMAP_KEY: "29db21d44be7ae2cadb6ea7189ebec72" ] buildConfigField "String", "platform", '"8515"' versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.Teclast8515 } Teclast8515Release.initWith(release) Teclast8515Release { manifestPlaceholders = [ AMAP_KEY: "29db21d44be7ae2cadb6ea7189ebec72" ] buildConfigField "String", "platform", '"8515"' signingConfig signingConfigs.Teclast8515 } //m40se teclastUnisocdebug.initWith(zhanRuiDebug) teclastUnisocdebug { manifestPlaceholders = [ AMAP_KEY: "ef180363f53f3ea07af84be26b797f5d" ] buildConfigField "String", "platform", '"M40SE"' versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.teclastUnisoc } teclastUnisocrelease.initWith(zhanRuiDebug) teclastUnisocrelease { manifestPlaceholders = [ AMAP_KEY: "ef180363f53f3ea07af84be26b797f5d" ] buildConfigField "String", "platform", '"M40SE"' signingConfig signingConfigs.teclastUnisoc } teclastUnisocUserdebug.initWith(zhanRuiDebug) teclastUnisocUserdebug { manifestPlaceholders = [ AMAP_KEY: "a89c464a7e619791d65bf683602b9e30" ] buildConfigField "String", "platform", '"M40SE"' versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.teclastUnisocUserdebug } zhanRuiDebug.initWith(debug) zhanRuiDebug { manifestPlaceholders = [ AMAP_KEY: "63d3bf78053d530926309bb25e007e1a" ] buildConfigField "String", "platform", '"ZhanRui"' versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.zhanRui } zhanRuiRelease.initWith(release) zhanRuiRelease { manifestPlaceholders = [ AMAP_KEY: "63d3bf78053d530926309bb25e007e1a" ] buildConfigField "String", "platform", '"ZhanRui"' signingConfig signingConfigs.zhanRui } zhanRuiUserdebugReleas.initWith(debug) zhanRuiUserdebugReleas { manifestPlaceholders = [ AMAP_KEY: "4ebbc3a36c028f6749fed5257f17c77e" ] buildConfigField "String", "platform", '"ZhanRui"' signingConfig signingConfigs.zhanRuiUserdebug } debug { buildConfigField "String", "platform", '"MTK"' versionNameSuffix "-debug" manifestPlaceholders = [ AMAP_KEY: "9b4bdfa60aaacaf490356fc2e4e3ad0a" ] //Zipalign优化 zipAlignEnabled true minifyEnabled false signingConfig signingConfigs.mtk } release { buildConfigField "String", "platform", '"MTK"' manifestPlaceholders = [ AMAP_KEY: "9b4bdfa60aaacaf490356fc2e4e3ad0a" ] //Zipalign优化 zipAlignEnabled true //混淆 minifyEnabled false //前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,后一个文件是自己的定义混淆文件 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' //签名 signingConfig signingConfigs.mtk } } // Add application variant configuration here instead applicationVariants.all { variant -> variant.outputs.each { output -> def buildType = variant.buildType.name def fileName = "" if (buildType.contains("debug")) { fileName = "${appName()}_V${defaultConfig.versionName}_${releaseTime()}.apk" } else { fileName = "${appName()}_${variant.versionCode}_V${variant.versionName}_${releaseTime()}_${buildType}.apk" } output.outputFileName = fileName } } } dependencies { // implementation fileTree(dir: 'libs', include: ['*.jar']) compileOnly files('libs/framework.jar') implementation project(path: ':FlycoTabLayoutZ_Lib') //implementation 'com.android.support:multidex:1.0.3' implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation 'androidx.legacy:legacy-support-v4:1.0.0' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' //okhttp implementation 'com.squareup.okhttp3:okhttp:4.8.1' //Retrofit implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' implementation 'com.squareup.retrofit2:adapter-rxjava3:2.9.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' //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' //磁盘缓存 implementation 'com.jakewharton:disklrucache:2.0.2' //Aria implementation 'com.arialyy.aria:core:3.8.15' annotationProcessor 'com.arialyy.aria:compiler:3.8.15' //Java WebSocket implementation "org.java-websocket:Java-WebSocket:1.5.3" //MMKV implementation 'com.tencent:mmkv-static:1.2.13' //bugly implementation 'com.tencent.bugly:crashreport:4.1.9.2' // //腾讯移动推送 TPNS // implementation 'com.tencent.tpns:tpns:1.4.4.2-release' //阿里云推送 implementation 'com.aliyun.ams:alicloud-android-push:3.9.3' // //百度地图 // implementation 'com.baidu.lbsyun:BaiduMapSDK_Location:9.1.8' //高德地图定位 implementation 'com.amap.api:location:5.1.0' //工具类 implementation 'com.blankj:utilcodex:1.31.0' //autosize会改变第三方view的大小 //https://github.com/JessYanCoding/AndroidAutoSize //implementation 'me.jessyan:autosize:1.2.1' implementation 'com.github.chrisbanes:PhotoView:2.0.0' //沉浸状态栏 implementation 'com.gitee.zackratos:UltimateBarX:0.8.0' //验证码输入 implementation 'com.jacktuotuo.customview:verificationcodeview:1.0.5' // implementation 'com.king.view:splitedittext:1.0.0' //动态权限框架 // implementation 'com.hjq:xxpermissions:6.0' // 吐司框架: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() ) } } tasks.register('deleteAppSourceWhiteList', Exec) { // Windows 系统使用 cmd /c, Mac/Linux 使用 sh -c if (System.properties['os.name'].toLowerCase().contains('windows')) { commandLine 'cmd', '/c', 'adb', 'shell', 'settings', 'delete', 'system', 'app_source_white_list' } else { commandLine 'adb', 'shell', 'settings', 'delete', 'system', 'app_source_white_list' } // 即使命令执行失败也不中断构建(可选,防止因为没连手机导致编译失败) ignoreExitValue = true doLast { println "ADB command executed: settings delete system app_source_white_list" } } //preBuild { // doLast { // def imlFile = file(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/ // //使用系统编译后的framework.jar //}