apply plugin: 'com.android.application' static def appName() { return "UIUISN" } static def releaseTime() { return new Date().format("yyyyMMdd-HHmmss", TimeZone.getDefault()) } android { 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 "29.0.3" defaultConfig { applicationId "com.info.sn" minSdkVersion 24 targetSdkVersion 29 multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" ndk { //选择要添加的对应 cpu 类型的 .so 库。 abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', "x86" // 还可以添加 'x86', 'x86_64', 'mips', 'mips64' } javaCompileOptions { annotationProcessorOptions { includeCompileClasspath true } } } lintOptions { checkReleaseBuilds false } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } //多版本 productFlavors { beta { flavorDimensions "default" versionCode 85 versionName "1.8.5" manifestPlaceholders = [ JPUSH_PKGNAME: "com.info.sn", JPUSH_APPKEY : "edf9cec22731b8b2fed56ee6", //JPush 上注册的包名对应的 Appkey. JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可. ] buildConfigField "String", "SCREEN_URL", '"https://homework.uiuios.com:3018/wm/is_online"' buildConfigField "String", "WEBSOCKET_URL", '"wss://homework.uiuios.com:3018"' } official { flavorDimensions "default" versionCode 77 versionName "1.7.7" manifestPlaceholders = [ JPUSH_PKGNAME: "com.info.sn", JPUSH_APPKEY : "4a6d2d53673e958fa8beb69d", //JPush 上注册的包名对应的 Appkey. JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可. ] buildConfigField "String", "SCREEN_URL", '"https://homework.uiuios.com:3018/wm/is_online"' buildConfigField "String", "WEBSOCKET_URL", '"wss://homework.uiuios.com:3018"' } } //签名 signingConfigs { zhanRui { storeFile file("src/keys/zhanxun.keystore") storePassword "123456" keyAlias "zhanxun" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } debug { storeFile file("src/keys/xueshibaoos.jks") storePassword "123456" keyAlias "xueshibaoos" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } release {// 签名文件 storeFile file("src/keys/xueshibaoos.jks") storePassword "123456" keyAlias "xueshibaoos" keyPassword "123456" v1SigningEnabled true v2SigningEnabled true } } buildTypes { zhanRuiRelease.initWith(release) zhanRuiRelease { buildConfigField "String", "platform", '"ZhanRui"' signingConfig signingConfigs.zhanRui manifestPlaceholders = [ AMAP_KEY: "8c4e1d478cb91e6b5713562bc424efba" ] } zhanRuiDebug.initWith(debug) zhanRuiDebug { versionNameSuffix "-debug" buildConfigField "String", "platform", '"ZhanRui"' debuggable true signingConfig signingConfigs.zhanRui manifestPlaceholders = [ AMAP_KEY: "8c4e1d478cb91e6b5713562bc424efba" ] } debug { buildConfigField "String", "platform", '"MTK"' versionNameSuffix "-debug" minifyEnabled false //Zipalign优化 zipAlignEnabled true signingConfig signingConfigs.debug applicationVariants.all { variant -> variant.outputs.each { output -> if (outputFile != null) { def fileName = "${appName()}-${variant.versionCode}-V${variant.versionName}-${releaseTime()}-${buildType.name}.apk" output.outputFileName = fileName } } } manifestPlaceholders = [ AMAP_KEY: "83869aed8624eb00615c2b6d3d15d777" ] } release { buildConfigField "String", "platform", '"MTK"' //混淆 minifyEnabled false //Zipalign优化 zipAlignEnabled true //前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,后一个文件是自己的定义混淆文件 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //签名 signingConfig signingConfigs.release // 将release版本的包名重命名,加上版本及日期 applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = "" if (outputFile != null) { def fileName = "${appName()}-${variant.versionCode}-V${variant.versionName}-${releaseTime()}-${buildType.name}.apk" output.outputFileName = new File(outputFile, fileName) } } } manifestPlaceholders = [ AMAP_KEY: "83869aed8624eb00615c2b6d3d15d777" ] } } 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 } } dependencies { // implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.legacy:legacy-support-v4:1.0.0' compileOnly files('libs/framework.jar') implementation 'androidx.appcompat:appcompat:1.3.1' //implementation 'com.android.support:multidex:1.0.3' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation 'androidx.recyclerview:recyclerview:1.2.1' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' //极光推送 implementation 'cn.jiguang.sdk:jpush:3.8.6' // 此处以JPush 3.8.6 版本为例。 implementation 'cn.jiguang.sdk:jcore:2.6.0' // 此处以JCore 2.6.0 版本为例。 //动态权限框架 implementation 'com.hjq:xxpermissions:6.0' //okhttp implementation 'com.squareup.okhttp3:okhttp:4.9.1' //Retrofit implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' implementation 'com.squareup.retrofit2:adapter-rxjava2:2.5.0' //RxJava implementation 'io.reactivex.rxjava2:rxjava:2.2.12' implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' //生命周期管理 implementation 'com.trello.rxlifecycle2:rxlifecycle:2.2.2' implementation 'com.trello.rxlifecycle2:rxlifecycle-android:2.2.2' implementation 'com.trello.rxlifecycle2:rxlifecycle-components:2.2.2' implementation 'com.google.code.gson:gson:2.8.7' implementation 'com.google.zxing:core:3.3.2' implementation 'com.alibaba:fastjson:1.2.76' //implementation 'com.blankj:utilcode:1.26.0' implementation 'com.arialyy.aria:core:3.8.15' annotationProcessor 'com.arialyy.aria:compiler:3.8.15' implementation "org.java-websocket:Java-WebSocket:1.4.1" //高德地图定位 implementation 'com.amap.api:location:5.1.0' //屏幕适配方案 implementation 'com.blankj:utilcodex:1.30.6' //autosize会改变第三方view的大小 //https://github.com/JessYanCoding/AndroidAutoSize //implementation 'me.jessyan:autosize:1.2.1' implementation 'com.flyco.tablayout:FlycoTabLayout_Lib:2.1.2@aar' implementation 'com.github.chrisbanes:PhotoView:2.0.0' implementation 'com.github.bumptech.glide:glide:4.11.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' implementation 'com.jakewharton:butterknife:10.2.1' // If you are using Kotlin, replace annotationProcessor with kapt. // annotationProcessor rootProject.ext.dependencies["butterknife-compiler"] annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //沉浸状态栏 implementation 'com.gitee.zackratos:UltimateBarX:0.7.1' } 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 }