381 lines
14 KiB
Groovy
381 lines
14 KiB
Groovy
import groovy.json.JsonOutput
|
||
import groovy.json.JsonSlurper
|
||
|
||
import java.text.SimpleDateFormat
|
||
|
||
apply plugin: 'com.android.application'
|
||
apply plugin: 'kotlin-android'
|
||
apply plugin: 'kotlin-android-extensions'
|
||
apply plugin: 'bugly'
|
||
|
||
apply from: rootProject.file('gradle/bytex/bytex.gradle')
|
||
|
||
bugly {
|
||
appId = 'ac71228f85' // 注册时分配的App ID
|
||
appKey = '3c736249-d6be-4066-b577-b7a6dc975cf7' // 注册时分配的App Key
|
||
}
|
||
|
||
Properties properties = new Properties()
|
||
properties.load(project.rootProject.file("gradle.properties").newDataInputStream())
|
||
|
||
android {
|
||
compileSdkVersion rootProject.ext.android.compileSdkVersion
|
||
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
|
||
}
|
||
|
||
packagingOptions {
|
||
exclude 'META-INF/proguard/coroutines.pro'
|
||
exclude 'META-INF/*'
|
||
exclude "/lib/armeabi-v7a/*.so"
|
||
pickFirst 'lib/arm64-v8a/libc++_shared.so'
|
||
}
|
||
|
||
signingConfigs {
|
||
release {
|
||
keyAlias = 'CarLauncher'
|
||
storeFile file('../keystore/car_launcher.jks')
|
||
storePassword 'ZDauto123456'
|
||
keyPassword 'ZDauto123456'
|
||
}
|
||
releaseEB5 {
|
||
keyAlias = 'android_platform'
|
||
storeFile file('../keystore/EB5/car_launcher.jks')
|
||
storePassword 'ZDauto123456'
|
||
keyPassword 'ZDauto123456'
|
||
}
|
||
}
|
||
buildTypes {
|
||
debug {
|
||
debuggable true
|
||
minifyEnabled false
|
||
zipAlignEnabled false
|
||
shrinkResources false
|
||
signingConfig signingConfigs.release
|
||
manifestPlaceholders = [
|
||
MAP_SDK_VERSION : properties.getProperty("MAP_SDK_VERSION"),
|
||
// 高德地图鉴权信息
|
||
AMAP_API_VALUE : rootProject.ext.android.fLauncherAmapApiValue,
|
||
]
|
||
}
|
||
release {
|
||
debuggable false
|
||
minifyEnabled false
|
||
zipAlignEnabled false
|
||
shrinkResources false
|
||
signingConfig signingConfigs.release
|
||
|
||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||
manifestPlaceholders = [
|
||
MAP_SDK_VERSION : properties.getProperty("MAP_SDK_VERSION"),
|
||
// 高德地图鉴权信息
|
||
AMAP_API_VALUE : rootProject.ext.android.fLauncherAmapApiValue,
|
||
]
|
||
}
|
||
}
|
||
compileOptions {
|
||
sourceCompatibility JavaVersion.VERSION_1_8
|
||
targetCompatibility JavaVersion.VERSION_1_8
|
||
}
|
||
|
||
lintOptions {
|
||
checkReleaseBuilds false
|
||
abortOnError false
|
||
}
|
||
|
||
kotlinOptions {
|
||
jvmTarget = '1.8'
|
||
}
|
||
|
||
sourceSets {
|
||
main {
|
||
manifest.srcFile 'src/main/AndroidManifest.xml'
|
||
}
|
||
}
|
||
// 项目 business
|
||
// 业务线 product
|
||
// 车型 vehicle
|
||
flavorDimensions "project","product","role","vehicle" ,"basic", "env"
|
||
productFlavors {
|
||
// launcher app
|
||
launcher {
|
||
dimension "basic"
|
||
// 是否作为 launcher 运行
|
||
buildConfigField 'boolean', 'IS_LAUNCHER', 'true'
|
||
buildConfigField 'String', 'SOCKET_APP_ID', '\"com.mogo.launcher\"'
|
||
buildConfigField 'String', 'WORKING_BRANCH_NAME', getWorkingBranchName()
|
||
buildConfigField 'String', 'WORKING_BRANCH_HASH', getWorkingBranchHash()
|
||
buildConfigField 'String', 'APP_BUILD_TIME', getBuildTime()
|
||
buildConfigField 'String', 'MAP_SDK_VERSION', "\"${MAP_SDK_VERSION}\""
|
||
buildConfigField 'String', 'MAP_SDK_OPT_VERSION', "\"${MAP_SDK_OPERATION_VERSION}\""
|
||
}
|
||
|
||
mogo {
|
||
dimension "project"
|
||
buildConfigField 'String', 'URLs', "\"${readFileToJson("mogo").replace("\"", "\\\"")}\""
|
||
buildConfigField 'String', 'tempConfig', "\"${readFileToJsonTemp("mogo").replace("\"", "\\\"")}\""
|
||
}
|
||
yantai {
|
||
dimension "project"
|
||
buildConfigField 'String', 'URLs', "\"${readFileToJson("yantai").replace("\"", "\\\"")}\""
|
||
buildConfigField 'String', 'tempConfig', "\"${readFileToJsonTemp("yantai").replace("\"", "\\\"")}\""
|
||
}
|
||
|
||
dali {
|
||
dimension "project"
|
||
buildConfigField 'String', 'URLs', "\"${readFileToJson("dali").replace("\"", "\\\"")}\""
|
||
buildConfigField 'String', 'tempConfig', "\"${readFileToJsonTemp("dali").replace("\"", "\\\"")}\""
|
||
}
|
||
saas {
|
||
dimension "project"
|
||
buildConfigField 'String', 'URLs', "\"${readFileToJson("saas").replace("\"", "\\\"")}\""
|
||
buildConfigField 'String', 'tempConfig', "\"${readFileToJsonTemp("saas").replace("\"", "\\\"")}\""
|
||
}
|
||
// 配置网络环境,QA、线上、演示
|
||
qa {
|
||
dimension "env"
|
||
buildConfigField 'int', 'NET_ENV', '2'
|
||
}
|
||
online {
|
||
dimension "env"
|
||
buildConfigField 'int', 'NET_ENV', '3'
|
||
}
|
||
demo {
|
||
dimension "env"
|
||
buildConfigField 'int', 'NET_ENV', '4'
|
||
}
|
||
}
|
||
apply from: "./script/roleFlavors/driver.gradle"
|
||
apply from: "./script/roleFlavors/passenger.gradle"
|
||
apply from: "./script/roleFlavors/driverpassenger.gradle"
|
||
|
||
apply from: "./script/productFlavors/bus.gradle"
|
||
apply from: "./script/productFlavors/charter.gradle"
|
||
apply from: "./script/productFlavors/noop.gradle"
|
||
apply from: "./script/productFlavors/shuttle.gradle"
|
||
apply from: "./script/productFlavors/sweeperOperate.gradle"
|
||
apply from: "./script/productFlavors/sweeperCloud.gradle"
|
||
apply from: "./script/productFlavors/taxi.gradle"
|
||
// 配置不同渠道参数,直接影响功能完整度
|
||
apply from: "./script/vehicleFlavors/fPadLenovo.gradle"
|
||
apply from: "./script/vehicleFlavors/ochJL.gradle"
|
||
apply from: "./script/vehicleFlavors/ochJL.gradle"
|
||
apply from: "./script/vehicleFlavors/ochM2.gradle"
|
||
apply from: "./script/vehicleFlavors/ochDFHQ.gradle"
|
||
apply from: "./script/vehicleFlavors/ochFT.gradle"
|
||
//包车
|
||
apply from: "./script/vehicleFlavors/ochM1.gradle"
|
||
apply from: "./script/flavorfilter/flavorsFilterConfig.gradle"
|
||
|
||
packagingOptions {
|
||
exclude 'META-INF/io.netty.versions.properties'
|
||
}
|
||
|
||
useLibrary 'android.test.runner'
|
||
useLibrary 'android.test.base'
|
||
useLibrary 'android.test.mock'
|
||
}
|
||
|
||
repositories {
|
||
flatDir {
|
||
dirs 'libs'
|
||
}
|
||
}
|
||
|
||
dependencies {
|
||
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
|
||
implementation rootProject.ext.dependencies.androidxappcompat
|
||
implementation rootProject.ext.dependencies.arouter
|
||
implementation rootProject.ext.dependencies.boostmultidex
|
||
|
||
// debugImplementation rootProject.ext.dependencies.debugleakcanary
|
||
// releaseImplementation rootProject.ext.dependencies.releaseleakcanary
|
||
implementation rootProject.ext.dependencies.android_start_up
|
||
implementation rootProject.ext.dependencies.lancetx_runtime
|
||
implementation rootProject.ext.dependencies.mogocustommap
|
||
|
||
implementation project(':core:function-impl:mogo-core-function-startup')
|
||
implementation project(':core:function-impl:mogo-core-function-devatools')
|
||
implementation project(':core:function-impl:mogo-core-function-datacenter')
|
||
implementation project(':core:function-impl:mogo-core-function-biz')
|
||
implementation project(':core:function-impl:mogo-core-function-hmi')
|
||
implementation project(':core:function-impl:mogo-core-function-map')
|
||
implementation project(':core:function-impl:mogo-core-function-chat')
|
||
implementation project(':core:function-impl:mogo-core-function-patch')
|
||
implementation project(':foudations:mogo-commons')
|
||
implementation project(':core:mogo-core-function-call')
|
||
implementation project(':core:mogo-core-utils')
|
||
implementation project(':core:mogo-core-res')
|
||
|
||
androidTestImplementation project(':core:mogo-core-function-call')
|
||
androidTestImplementation project(':core:mogo-core-res')
|
||
|
||
|
||
apply from: "./script/functions/och.gradle"
|
||
|
||
androidTestImplementation rootProject.ext.dependencies.androidx_test_core
|
||
androidTestImplementation rootProject.ext.dependencies.androidx_test_core_ktx
|
||
androidTestImplementation rootProject.ext.dependencies.androidx_unit_ext
|
||
androidTestImplementation rootProject.ext.dependencies.androidx_unit_ext_ktx
|
||
androidTestImplementation rootProject.ext.dependencies.androidx_runner
|
||
androidTestImplementation rootProject.ext.dependencies.androidx_espresso_core
|
||
androidTestImplementation rootProject.ext.dependencies.localbroadcastmanager
|
||
androidTestImplementation rootProject.ext.dependencies.downloader
|
||
}
|
||
|
||
|
||
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"
|
||
}
|
||
}
|
||
|
||
apply from: "./regroup.gradle"
|
||
|
||
/**
|
||
* @return 获取当前分支名称
|
||
*/
|
||
def getWorkingBranchName() {
|
||
def workingBranchName = ""
|
||
def proc = "git rev-parse --abbrev-ref HEAD".execute()
|
||
proc.in.eachLine { line -> workingBranchName = line }
|
||
proc.err.eachLine { line -> println line }
|
||
proc.waitFor()
|
||
workingBranchName = "\"${workingBranchName}\""
|
||
println "Working branch name: " + workingBranchName
|
||
return workingBranchName
|
||
}
|
||
/**
|
||
* @return 获取当前分支hash
|
||
*/
|
||
def getWorkingBranchHash() {
|
||
def workingBranchHash = ""
|
||
def proc = "git log -n1 --format=format:%h".execute()
|
||
proc.in.eachLine { line -> workingBranchHash = line }
|
||
proc.err.eachLine { line -> println line }
|
||
proc.waitFor()
|
||
println "Working branch hash: " + workingBranchHash
|
||
return "\"${workingBranchHash}\""
|
||
}
|
||
|
||
static def getBuildTime() {
|
||
def buildTimeFormat = "yyyy-MM-dd HH:mm:ss"
|
||
//设置时间格式
|
||
SimpleDateFormat formatter = new SimpleDateFormat(buildTimeFormat, Locale.getDefault())
|
||
//获取当前时间
|
||
Date curDate = new Date(System.currentTimeMillis())
|
||
def buildTime = formatter.format(curDate)
|
||
return "\"${buildTime}\""
|
||
}
|
||
|
||
Object readFileToJson(env) {
|
||
try {
|
||
// 加载config.json 文件
|
||
File file = new File("${rootDir}/app/config/urlConfig.json")
|
||
def jsonSlurper = new JsonSlurper()
|
||
// 解析json
|
||
def config = jsonSlurper.parse(file)
|
||
def flavorNames = variantName()
|
||
def jsonOutput = new JsonOutput()
|
||
config.each {key, value ->
|
||
// 匹配flavor对应的 json
|
||
if(flavorNames.toLowerCase().contains(key)){
|
||
return jsonOutput.toJson(value.get(env))
|
||
}
|
||
}
|
||
// 保底原则
|
||
return jsonOutput.toJson(config.get(env).get(flavorNames))
|
||
} catch (IOException e) {
|
||
e.printStackTrace()
|
||
}
|
||
return null
|
||
}
|
||
|
||
|
||
def variantName() {
|
||
if(gradle.startParameter.taskNames.size()>0) {
|
||
for (String taskName : gradle.startParameter.taskNames) {
|
||
|
||
if (taskName.contains("Yantai")) {
|
||
project.dependencies.add('implementation', project.project(':tts:tts-iflytek'))
|
||
}else if (taskName.contains("Mogo") || taskName.contains("Saas")) {
|
||
project.dependencies.add('implementation', project.project(':tts:tts-pad'))
|
||
}else if (taskName.contains("Dali")) {
|
||
project.dependencies.add('implementation', project.project(':tts:tts-pad'))
|
||
}else {
|
||
|
||
}
|
||
|
||
taskName = taskName.replace("Debug", "")
|
||
taskName = taskName.replace("Release", "")
|
||
if (taskName.endsWith("Qa")) {
|
||
return "qa"
|
||
} else if (taskName.endsWith("Online")) {
|
||
return "online"
|
||
} else if (taskName.endsWith("Demo")) {
|
||
return "demo"
|
||
}
|
||
}
|
||
}
|
||
return "qa"
|
||
|
||
}
|
||
|
||
Object readFileToJsonTemp(env){
|
||
try {
|
||
// 加载config.json 文件
|
||
File file = new File("${rootDir}/app/config/tempConfig.json")
|
||
def jsonSlurper = new JsonSlurper()
|
||
// 解析json
|
||
def config = jsonSlurper.parse(file)
|
||
def flavorNames = variantVehicleName()
|
||
def jsonOutput = new JsonOutput()
|
||
def getKey = flavorNames
|
||
config.get(env).each {key, value ->
|
||
// 匹配flavor对应的 json
|
||
if(flavorNames.toLowerCase().contains(key)){
|
||
getKey = key
|
||
return true
|
||
}
|
||
}
|
||
return jsonOutput.toJson(config.get(env).get(getKey))
|
||
} catch (IOException e) {
|
||
e.printStackTrace()
|
||
}
|
||
return null
|
||
}
|
||
|
||
def variantVehicleName() {
|
||
if(gradle.startParameter.taskNames.size()>0) {
|
||
for (String taskName : gradle.startParameter.taskNames) {
|
||
if (taskName.contains("Debug") | taskName.contains("Release")) {
|
||
return taskName
|
||
}
|
||
}
|
||
}
|
||
return "buspassenger"
|
||
}
|
||
|