import java.text.SimpleDateFormat apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { compileSdkVersion rootProject.ext.android.compileSdkVersion // buildToolsVersion rootProject.ext.android.buildToolsVersion defaultConfig { minSdkVersion rootProject.ext.android.minSdkVersion targetSdkVersion rootProject.ext.android.targetSdkVersion versionCode generateVersionCode() versionName "${rootProject.ext.android.versionName}.${getMonthAndDay()}" applicationId rootProject.ext.android.applicationId testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" javaCompileOptions { annotationProcessorOptions { arguments = [AROUTER_MODULE_NAME: project.getName()] } } multiDexEnabled true externalNativeBuild { ndk { // 设置支持的SO库架构 abiFilters 'armeabi-v7a' } } } signingConfigs { release { keyAlias = 'CarLauncher' storeFile file('../keystore/car_launcher.jks') storePassword 'ZDauto123456' keyPassword 'ZDauto123456' } } buildTypes { debug { signingConfig signingConfigs.release debuggable = true } release { minifyEnabled false signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } flavorDimensions "product", "env" productFlavors { // 诺威达 nwd { dimension "product" sourceSets { main { manifest.srcFile 'src/nwd/AndroidManifest.xml' } } applicationId rootProject.ext.android.applicationId } d80x { dimension "product" sourceSets { main { manifest.srcFile 'src/d80x/AndroidManifest.xml' } } applicationId rootProject.ext.android.zhidadoApplicationId } zhidao { dimension "product" sourceSets { main { manifest.srcFile 'src/main/AndroidManifest.xml' } } applicationId rootProject.ext.android.applicationId } qa { dimension "env" buildConfigField 'int', 'NET_ENV', '2' } online { dimension "env" buildConfigField 'int', 'NET_ENV', '3' } demo { dimension "env" buildConfigField 'int', 'NET_ENV', '4' } } } def generateVersionCode() { String vn = rootProject.ext.android.versionName String[] versions = vn.split("\\.") if (versions.length == 3) { int num1 = Integer.valueOf(versions[0]) int num2 = Integer.valueOf(versions[1]) int num3 = Integer.valueOf(versions[2]) if (num1 < 1 || num1 > 99){ throw new GradleException("版本号必须定义为 x.y.z,x[1,99], y[0, 99], z[0, 99])") } if (num2 < 0 || num2 > 99){ throw new GradleException("版本号必须定义为 x.y.z,x[1,99], y[0, 99], z[0, 99])") } if (num3 < 0 || num3 > 99){ throw new GradleException("版本号必须定义为 x.y.z,x[1,99], y[0, 99], z[0, 99])") } StringBuilder builder = new StringBuilder() builder.append(num1) if( num2 > 9 ){ builder.append(num2) } else { builder.append("0").append(num2) } if( num3 > 9 ){ builder.append(num3) } else { builder.append("0").append(num3) } println("last versionCode ${builder}") return Integer.valueOf(builder.toString()) } else { throw new GradleException("版本号必须定义为 x.y.z,x[1,99], y[0, 99], z[0, 99])") } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //Crash日志收集 implementation rootProject.ext.dependencies.crashSdk implementation rootProject.ext.dependencies.androidxappcompat implementation rootProject.ext.dependencies.arouter implementation rootProject.ext.dependencies.androidxmultidex debugImplementation rootProject.ext.dependencies.leakcanary testImplementation rootProject.ext.dependencies.leakcanary releaseImplementation rootProject.ext.dependencies.leakcanarynoop // implementation rootProject.ext.dependencies.moduledemo // implementation rootProject.ext.dependencies.moduledemo2 implementation rootProject.ext.dependencies.carcallprovider implementation rootProject.ext.dependencies.carcall implementation rootProject.ext.dependencies.guideshowprovider implementation rootProject.ext.dependencies.guideshow implementation rootProject.ext.dependencies.modulemedia implementation rootProject.ext.dependencies.modulefreshnews, { exclude group: 'com.mogo.module', module: 'module-onlinecar' } implementation rootProject.ext.dependencies.modulepush, { exclude group: 'com.mogo.module', module: 'module-common' } implementation rootProject.ext.dependencies.moduleadcard implementation rootProject.ext.dependencies.moduleonlinecar implementation rootProject.ext.dependencies.moduleV2x implementation rootProject.ext.dependencies.moduletanlu, { exclude group: 'com.mogo.module', module: 'module-share' } if (Boolean.valueOf(RELEASE)) { api rootProject.ext.dependencies.modulemain api rootProject.ext.dependencies.mogocommons implementation rootProject.ext.dependencies.modulecommon implementation rootProject.ext.dependencies.modulesearch implementation rootProject.ext.dependencies.mogomoduleback implementation rootProject.ext.dependencies.mogomoduleguide implementation rootProject.ext.dependencies.mogomoduleauth debugImplementation rootProject.ext.dependencies.gpssimulatordebug releaseImplementation rootProject.ext.dependencies.gpssimulatornoop } else { implementation project(':modules:mogo-module-main') implementation project(':foudations:mogo-commons') implementation project(':modules:mogo-module-common') implementation project(':modules:mogo-module-search') implementation project(':modules:mogo-module-back') implementation project(':modules:mogo-module-guide') implementation project(':modules:mogo-module-authorize') debugImplementation project(':modules:mogo-module-gps-simulator-debug') releaseImplementation project(':modules:mogo-module-gps-simulator-noop') } } android.applicationVariants.all { variant -> variant.outputs.all { //这里修改apk文件名 outputFileName = "Launcher2.0_V${android.defaultConfig.versionName}_${getCurrentDate()}_${variant.name}_${getGitCommit()}.apk" println outputFileName } } def getMonthAndDay() { SimpleDateFormat sdf = new SimpleDateFormat("MMddHH") return sdf.format(new Date()) } def getCurrentDate() { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss") return sdf.format(new Date()) } def getGitCommit() { def gitDir = new File("${new File("${rootDir}")}/.git") if (!gitDir.isDirectory()) { return 'non_git_build' } def cmd = 'git log --pretty=format:%h -1' def gitCommit = cmd.execute().text.trim() print gitCommit def cmd2 = 'git status -s' def gitStatus = cmd2.execute().text.trim() println '---------' print gitStatus if (gitStatus != null && !gitStatus.isEmpty()) { return 'local-build' } assert !gitCommit.isEmpty() gitCommit }