mirror of
https://github.com/ev-map/EVMap.git
synced 2026-01-05 21:47:46 -05:00
259 lines
9.9 KiB
Groovy
259 lines
9.9 KiB
Groovy
plugins {
|
|
id 'com.adarshr.test-logger' version '3.1.0'
|
|
}
|
|
|
|
apply plugin: 'com.android.application'
|
|
apply plugin: 'kotlin-android'
|
|
apply plugin: 'kotlin-parcelize'
|
|
apply plugin: 'kotlin-kapt'
|
|
apply plugin: 'androidx.navigation.safeargs.kotlin'
|
|
apply plugin: 'com.mikepenz.aboutlibraries.plugin'
|
|
|
|
android {
|
|
compileSdkVersion 31
|
|
buildToolsVersion "30.0.3"
|
|
|
|
defaultConfig {
|
|
applicationId "net.vonforst.evmap"
|
|
minSdkVersion 21
|
|
targetSdkVersion 31
|
|
// NOTE: always increase versionCode by 2 since automotive flavor uses versionCode + 1
|
|
versionCode 86
|
|
versionName "1.3.3"
|
|
|
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
}
|
|
|
|
signingConfigs {
|
|
release {
|
|
def isRunningOnCI = System.getenv("CI") == "true"
|
|
if (isRunningOnCI) {
|
|
// configure keystore
|
|
storeFile = file("../_ci/keystore.jks")
|
|
storePassword = System.getenv("KEYSTORE_PASSWORD")
|
|
keyAlias = System.getenv("KEYSTORE_ALIAS")
|
|
keyPassword = System.getenv("KEYSTORE_ALIAS_PASSWORD")
|
|
}
|
|
}
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
minifyEnabled false
|
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
|
signingConfig signingConfigs.release
|
|
}
|
|
debug {
|
|
applicationIdSuffix ".debug"
|
|
debuggable true
|
|
}
|
|
}
|
|
|
|
flavorDimensions "dependencies", "automotive"
|
|
productFlavors {
|
|
foss {
|
|
dimension "dependencies"
|
|
}
|
|
google {
|
|
dimension "dependencies"
|
|
versionNameSuffix "-google"
|
|
}
|
|
normal {
|
|
dimension "automotive"
|
|
}
|
|
automotive {
|
|
dimension "automotive"
|
|
versionNameSuffix "-automotive"
|
|
versionCode defaultConfig.versionCode + 1
|
|
minSdkVersion 29
|
|
}
|
|
}
|
|
variantFilter { variant ->
|
|
def names = variant.flavors*.name
|
|
// Android Automotive OS app is always based on Google variant
|
|
if (names.contains("automotive") && !names.contains("google")) {
|
|
setIgnore(true)
|
|
}
|
|
}
|
|
|
|
compileOptions {
|
|
coreLibraryDesugaringEnabled true
|
|
targetCompatibility = JavaVersion.VERSION_1_8
|
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
|
}
|
|
|
|
kotlinOptions {
|
|
jvmTarget = JavaVersion.VERSION_1_8.toString()
|
|
}
|
|
|
|
buildFeatures {
|
|
dataBinding = true
|
|
viewBinding true
|
|
}
|
|
lint {
|
|
disable 'NullSafeMutableLiveData'
|
|
}
|
|
|
|
testOptions {
|
|
unitTests.includeAndroidResources true
|
|
}
|
|
|
|
// add API keys from environment variable if not set in apikeys.xml
|
|
applicationVariants.all { variant ->
|
|
ext.env = System.getenv()
|
|
def goingelectricKey = env.GOINGELECTRIC_API_KEY ?: project.findProperty("GOINGELECTRIC_API_KEY")
|
|
if (goingelectricKey != null) {
|
|
variant.resValue "string", "goingelectric_key", goingelectricKey
|
|
}
|
|
def openchargemapKey = env.OPENCHARGEMAP_API_KEY ?: project.findProperty("OPENCHARGEMAP_API_KEY")
|
|
if (openchargemapKey == null && project.hasProperty("OPENCHARGEMAP_API_KEY_ENCRYPTED")) {
|
|
openchargemapKey = decode(project.findProperty("OPENCHARGEMAP_API_KEY_ENCRYPTED"), "FmK.d,-f*p+rD+WK!eds")
|
|
}
|
|
if (openchargemapKey != null) {
|
|
variant.resValue "string", "openchargemap_key", openchargemapKey
|
|
}
|
|
def googleMapsKey = env.GOOGLE_MAPS_API_KEY ?: project.findProperty("GOOGLE_MAPS_API_KEY")
|
|
if (googleMapsKey != null && variant.flavorName.startsWith('google')) {
|
|
variant.resValue "string", "google_maps_key", googleMapsKey
|
|
}
|
|
def mapboxKey = env.MAPBOX_API_KEY ?: project.findProperty("MAPBOX_API_KEY")
|
|
if (mapboxKey == null && project.hasProperty("MAPBOX_API_KEY_ENCRYPTED")) {
|
|
mapboxKey = decode(project.findProperty("MAPBOX_API_KEY_ENCRYPTED"), "FmK.d,-f*p+rD+WK!eds")
|
|
}
|
|
if (mapboxKey != null) {
|
|
variant.resValue "string", "mapbox_key", mapboxKey
|
|
}
|
|
def chargepriceKey = env.CHARGEPRICE_API_KEY ?: project.findProperty("CHARGEPRICE_API_KEY")
|
|
if (chargepriceKey == null && project.hasProperty("CHARGEPRICE_API_KEY_ENCRYPTED")) {
|
|
chargepriceKey = decode(project.findProperty("CHARGEPRICE_API_KEY_ENCRYPTED"), "FmK.d,-f*p+rD+WK!eds")
|
|
}
|
|
if (chargepriceKey != null) {
|
|
variant.resValue "string", "chargeprice_key", chargepriceKey
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
configurations {
|
|
googleNormalImplementation {}
|
|
googleAutomotiveImplementation {}
|
|
}
|
|
|
|
dependencies {
|
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
|
implementation 'androidx.appcompat:appcompat:1.4.2'
|
|
implementation 'androidx.core:core-ktx:1.8.0'
|
|
implementation 'androidx.core:core-splashscreen:1.0.0-rc01'
|
|
implementation "androidx.activity:activity-ktx:1.4.0"
|
|
implementation "androidx.fragment:fragment-ktx:1.4.1"
|
|
implementation 'androidx.cardview:cardview:1.0.0'
|
|
implementation 'androidx.preference:preference-ktx:1.2.0'
|
|
implementation 'com.google.android.material:material:1.6.1'
|
|
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
|
implementation 'androidx.recyclerview:recyclerview:1.2.1'
|
|
implementation 'androidx.browser:browser:1.4.0'
|
|
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
|
|
implementation 'com.github.johan12345:CustomBottomSheetBehavior:f69f532660'
|
|
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
|
|
implementation 'com.squareup.retrofit2:converter-moshi:2.9.0'
|
|
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
|
|
implementation 'com.squareup.okhttp3:okhttp-urlconnection:4.9.0'
|
|
implementation 'com.squareup.moshi:moshi-kotlin:1.13.0'
|
|
implementation 'com.squareup.moshi:moshi-adapters:1.13.0'
|
|
implementation 'moe.banana:moshi-jsonapi:3.5.0'
|
|
implementation 'moe.banana:moshi-jsonapi-retrofit-converter:3.5.0'
|
|
implementation 'io.coil-kt:coil:1.1.0'
|
|
implementation 'com.github.johan12345:StfalconImageViewer:5082ebd392'
|
|
implementation "com.mikepenz:aboutlibraries-core:$about_libs_version"
|
|
implementation "com.mikepenz:aboutlibraries:$about_libs_version"
|
|
implementation 'com.airbnb.android:lottie:4.1.0'
|
|
implementation 'io.michaelrocks.bimap:bimap:1.1.0'
|
|
implementation 'com.mapzen.android:lost:3.0.2'
|
|
implementation 'com.google.guava:guava:29.0-android'
|
|
implementation 'com.github.pengrad:mapscaleview:1.6.0'
|
|
implementation 'com.github.romandanylyk:PageIndicatorView:b1bad589b5'
|
|
|
|
// Android Auto
|
|
def carAppVersion = '1.2.0-rc01'
|
|
googleImplementation "androidx.car.app:app:$carAppVersion"
|
|
googleNormalImplementation "androidx.car.app:app-projected:$carAppVersion"
|
|
googleAutomotiveImplementation "androidx.car.app:app-automotive:$carAppVersion"
|
|
|
|
// AnyMaps
|
|
def anyMapsVersion = '3c67d7a1dc'
|
|
implementation "com.github.johan12345.AnyMaps:anymaps-base:$anyMapsVersion"
|
|
googleImplementation "com.github.johan12345.AnyMaps:anymaps-google:$anyMapsVersion"
|
|
googleImplementation 'com.google.android.gms:play-services-maps:18.0.2'
|
|
implementation("com.github.johan12345.AnyMaps:anymaps-mapbox:$anyMapsVersion") {
|
|
exclude group: 'com.mapbox.mapboxsdk', module: 'mapbox-android-accounts'
|
|
exclude group: 'com.mapbox.mapboxsdk', module: 'mapbox-android-telemetry'
|
|
}
|
|
|
|
// Google Places
|
|
implementation 'com.google.android.libraries.places:places:2.6.0'
|
|
googleImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.4.1'
|
|
|
|
// Mapbox Geocoding
|
|
implementation 'com.mapbox.mapboxsdk:mapbox-sdk-services:5.5.0'
|
|
|
|
// navigation library
|
|
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
|
|
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
|
|
|
|
// viewmodel library
|
|
def lifecycle_version = "2.4.1"
|
|
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
|
|
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
|
|
|
|
// room library
|
|
def room_version = "2.4.2"
|
|
implementation "androidx.room:room-runtime:$room_version"
|
|
kapt "androidx.room:room-compiler:$room_version"
|
|
implementation "androidx.room:room-ktx:$room_version"
|
|
|
|
// billing library
|
|
def billing_version = "4.1.0"
|
|
googleImplementation "com.android.billingclient:billing:$billing_version"
|
|
googleImplementation "com.android.billingclient:billing-ktx:$billing_version"
|
|
|
|
// ACRA (crash reporting)
|
|
def acraVersion = "5.8.4"
|
|
implementation("ch.acra:acra-mail:$acraVersion")
|
|
implementation("ch.acra:acra-dialog:$acraVersion")
|
|
implementation("ch.acra:acra-limiter:$acraVersion")
|
|
|
|
// debug tools
|
|
implementation 'com.facebook.stetho:stetho:1.5.1'
|
|
implementation 'com.facebook.stetho:stetho-okhttp3:1.5.1'
|
|
|
|
// testing
|
|
testImplementation 'junit:junit:4.13.2'
|
|
testImplementation "com.squareup.okhttp3:mockwebserver:4.9.0"
|
|
//noinspection GradleDependency
|
|
testImplementation 'org.json:json:20080701'
|
|
|
|
// testing for car app
|
|
testGoogleImplementation "androidx.car.app:app-testing:$carAppVersion"
|
|
testGoogleImplementation 'org.robolectric:robolectric:4.7.3'
|
|
testGoogleImplementation 'androidx.test:core:1.4.0'
|
|
|
|
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
|
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
|
|
|
|
kapt "com.squareup.moshi:moshi-kotlin-codegen:1.13.0"
|
|
|
|
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
|
|
}
|
|
|
|
private static String decode(String s, String key) {
|
|
return new String(xorWithKey(s.decodeBase64(), key.getBytes()), "UTF-8");
|
|
}
|
|
|
|
private static byte[] xorWithKey(byte[] a, byte[] key) {
|
|
byte[] out = new byte[a.length];
|
|
for (int i = 0; i < a.length; i++) {
|
|
out[i] = (byte) (a[i] ^ key[i%key.length]);
|
|
}
|
|
return out;
|
|
}
|