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 rootProject.versionCode as int versionName rootProject.versionName 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", "basic", "env" productFlavors { //独立app independent{ dimension "basic" sourceSets { main { manifest.srcFile 'src/independent/AndroidManifest.xml' } } applicationId rootProject.ext.android.applicationId } // launcher app launcher{ dimension "basic" sourceSets { main { manifest.srcFile 'src/launcher/AndroidManifest.xml' } } applicationId rootProject.ext.android.zhidadoApplicationId } // f系列-分体机全系列,未细分 f8xx{ dimension "product" } // e系列 e8xx { dimension "product" } // d系列 d8xx { dimension "product" } 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])") } } configurations { f8xxLauncherQaDebugImplementation f8xxLauncherDemoDebugImplementation f8xxLauncherOnlineDebugImplementation e8xxLauncherQaDebugImplementation e8xxLauncherDemoDebugImplementation e8xxLauncherOnlineDebugImplementation d8xxIndependentQaDebugImplementation d8xxIndependentDemoDebugImplementation d8xxIndependentOnlineDebugImplementation f8xxLauncherQaReleaseImplementation f8xxLauncherDemoReleaseImplementation f8xxLauncherOnlineReleaseImplementation e8xxLauncherQaReleaseImplementation e8xxLauncherDemoReleaseImplementation e8xxLauncherOnlineReleaseImplementation d8xxIndependentQaReleaseImplementation d8xxIndependentDemoReleaseImplementation d8xxIndependentOnlineReleaseImplementation } 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.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)) { launcherImplementation rootProject.ext.dependencies.modulemainlauncher independentImplementation rootProject.ext.dependencies.modulemainindependent implementation 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 implementation rootProject.ext.dependencies.modulemedia } else { launcherImplementation project(':main-extensions:mogo-module-main-launcher') // launcherImplementation project(':modules:mogo-module-main') independentImplementation project(':main-extensions:mogo-module-main-independent') 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') implementation project(':modules:mogo-module-media') } } //android.applicationVariants.all { variant -> // variant.outputs.all { //这里修改apk文件名 // outputFileName = "Launcher2.0_V${android.defaultConfig.versionName}_${getCurrentDate()}_${variant.name}_${getGitCommit()}.apk" // println outputFileName // } //} android.applicationVariants.all { variant -> def buildTime = new Date().format("yyyyMMdd", TimeZone.getTimeZone("GMT+08:00")) def flavor = variant.productFlavors.collect { it.name }.join('-') variant.outputs.all { output -> outputFileName = [ rootProject.applicationName, "v${variant.versionName}", buildTime, flavor.length() > 0 ? "[${flavor}]" : "", variant.buildType.name ].findAll { it.length() > 0 }.join('_') << ".apk" } } 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 }