apply plugin: 'com.android.application' apply plugin: 'com.alibaba.arouter' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' 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 externalNativeBuild { ndk { // 设置支持的SO库架构 abiFilters "armeabi-v7a" } } } signingConfigs { release { keyAlias = 'CarLauncher' storeFile file('../keystore/car_launcher.jks') storePassword 'ZDauto123456' keyPassword 'ZDauto123456' } } buildTypes { debug { debuggable = true minifyEnabled false signingConfig signingConfigs.release } release { minifyEnabled false zipAlignEnabled false shrinkResources false signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } sourceSets { main { manifest.srcFile 'src/main/AndroidManifest.xml' } launcher { manifest.srcFile 'src/launcher/AndroidManifest.xml' } independent { manifest.srcFile 'src/independent/AndroidManifest.xml' } e8xx { manifest.srcFile 'src/e8xx/AndroidManifest.xml' } em4 { manifest.srcFile 'src/em4/AndroidManifest.xml' } f8xxLauncherOnlineRelease { manifest.srcFile 'src/f8xxLauncherOnlineRelease/AndroidManifest.xml' } } flavorDimensions "product", "basic", "env" productFlavors { //独立app independent { dimension "basic" // 是否启动位置服务 buildConfigField 'boolean', 'LAUNCH_LOCATION_SERVICE', 'false' // 是否作为 launcher 运行 buildConfigField 'boolean', 'IS_LAUNCHER', 'false' buildConfigField 'String', 'SOCKET_APP_ID', '\"com.mogo.launcher\"' // 是否支持目的地导航策略 buildConfigField 'boolean', 'IS_SUPPORT_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH', 'true' } // launcher app launcher { dimension "basic" // 是否启动位置服务 buildConfigField 'boolean', 'LAUNCH_LOCATION_SERVICE', 'true' // 是否作为 launcher 运行 buildConfigField 'boolean', 'IS_LAUNCHER', 'true' buildConfigField 'String', 'SOCKET_APP_ID', '\"com.mogo.launcher\"' // 是否支持目的地导航策略 buildConfigField 'boolean', 'IS_SUPPORT_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH', 'false' } // f系列-分体机全系列,未细分 f8xx { applicationId rootProject.ext.android.fLauncherApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'true' manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true' // 是否支持查询导航目的地车友 buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true' // 是否支持桌面卡片刷新 buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'false' } // f系列-分体机 f80x { applicationId rootProject.ext.android.fLauncherApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'true' manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true' // 是否支持查询导航目的地车友 buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true' // 是否支持桌面卡片刷新 buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'false' } // e系列,采用Launcher方案 e8xx { applicationId rootProject.ext.android.launcherApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'true' manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonLauncherAmapApiValue] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true' // 是否支持查询导航目的地车友 buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true' // 是否支持桌面卡片刷新 buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'false' } // 同上 em4 { applicationId rootProject.ext.android.launcherApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'true' manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonLauncherAmapApiValue] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true' // 是否支持查询导航目的地车友 buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true' // 是否支持桌面卡片刷新 buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'false' } // e系列-2+32,对标D系列2+32,采用独立app的形式 em3 { applicationId rootProject.ext.android.independentApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'false' manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonIndependentAmapApiValue] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true' // 是否支持查询导航目的地车友 buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true' // 是否支持桌面卡片刷新 buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'true' } // e系列-1+16,对标D系列1+16,采用独立app形式 em1 { applicationId rootProject.ext.android.independentApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'false' manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonIndependentAmapApiValue] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true' // 是否支持查询导航目的地车友 buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true' // 是否支持桌面卡片刷新 buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'true' } // d系列 d8xx { applicationId rootProject.ext.android.independentApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'false' manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonIndependentAmapApiValue] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true' // 是否支持查询导航目的地车友 buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true' // 是否支持桌面卡片刷新 buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'true' } // d系列 2 + 32 d80x { applicationId rootProject.ext.android.independentApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'false' manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonIndependentAmapApiValue] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true' // 是否支持查询导航目的地车友 buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true' // 是否支持桌面卡片刷新 buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'true' } // d系列 1+16 版本 d82x { applicationId rootProject.ext.android.independentApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'false' manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonIndependentAmapApiValue] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true' // 是否支持查询导航目的地车友 buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true' // 是否支持桌面卡片刷新 buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'true' } // 比亚迪 bydauto { applicationId rootProject.ext.android.bydautoIndependentApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,其他车机,比亚迪定为1 buildConfigField 'int', 'CAR_MACHINE_TYPE', '1' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'true' manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.bydautoIndependentApiValue] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'true' // 是否支持换肤 buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'false' // 是否支持查询导航目的地车友 buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'false' // 是否支持桌面卡片刷新 buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'false' } qa { dimension "env" buildConfigField 'int', 'NET_ENV', '2' } online { dimension "env" buildConfigField 'int', 'NET_ENV', '3' } demo { dimension "env" buildConfigField 'int', 'NET_ENV', '4' } } packagingOptions { exclude 'META-INF/io.netty.versions.properties' } sourceSets { main { res.srcDirs = ['src/main/res', 'src/main/res-night'] } } } repositories { flatDir { dirs 'libs' } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) //Crash日志收集 implementation rootProject.ext.dependencies.crashSdk 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.carcallprovider implementation rootProject.ext.dependencies.carcall implementation rootProject.ext.dependencies.mogologlib compileOnly rootProject.ext.dependencies.adasapi compileOnly rootProject.ext.dependencies.adasconfigapi if (Boolean.valueOf(RELEASE)) { implementation rootProject.ext.dependencies.mogocommons implementation rootProject.ext.dependencies.modulecommon implementation rootProject.ext.dependencies.modulesearch implementation rootProject.ext.dependencies.mogomoduleguide implementation rootProject.ext.dependencies.mogomoduleauth implementation rootProject.ext.dependencies.modulemedia implementation rootProject.ext.dependencies.moduleservice implementation rootProject.ext.dependencies.modulesplash implementation rootProject.ext.dependencies.moduleV2x implementation rootProject.ext.dependencies.moduleshare implementation rootProject.ext.dependencies.tanluupload implementation rootProject.ext.dependencies.mogomonitor implementation rootProject.ext.dependencies.mogomoduleback implementation rootProject.ext.dependencies.guideshow } else { implementation project(':foudations:mogo-commons') implementation project(':modules:mogo-module-common') implementation project(':modules:mogo-module-search') implementation project(':modules:mogo-module-authorize') implementation project(':modules:mogo-module-media') implementation project(':modules:mogo-module-service') implementation project(':modules:mogo-module-splash') implementation project(':modules:mogo-module-v2x') implementation project(':modules:mogo-module-share') implementation project(':libraries:tanlulib') implementation project(':modules:mogo-module-monitor') implementation project(':modules:mogo-module-back') implementation project(':modules:mogo-module-guide') } apply from: "./functions/perform.gradle" apply from: "./functions/baseservices.gradle" apply from: "./functions/socketpush.gradle" apply from: "./functions/gpssimulator.gradle" apply from: "./functions/leftpanel.gradle" apply from: "./functions/skin.gradle" apply from: "./functions/crashreport.gradle" apply from: "./functions/widgets.gradle" apply from: "./functions/tts.gradle" } 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"