diff --git a/Jenkinsfile b/Jenkinsfile index d54e534..b91703c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,11 +58,8 @@ def workingBranch = 'master' def deployBranches = [ 'acceptance', 'production', ] -// Define the directory where the package (bundle) will be build -def buildDir = 'app/build/outputs/bundle' -// Define the directory where the package (apk) will be build. -// Fabric Crashlytics / Firebase App Distribution only support APKs as of June 2020 -def buildDirApk = 'app/build/outputs/apk' +// Define the parent directory where the apk or bundle will be build +def buildDir = 'app/build/outputs' // Initialize lazyConfig for this pipeline lazyConfig( @@ -73,6 +70,7 @@ ANDROID_HOME: '/opt/android/sdk', GRADLE_USER_HOME: '/opt/android/gradle', GRADLE_OPTS: '-XX:MaxMetaspaceSize=256m -Xmx1792m -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant -Dme.jenkins -Dorg.gradle.daemon=false -Dkotlin.compiler.execution.strategy=in-process', + ANDROID_BUNDLE: 'true', ANDROID_KEYALIAS: 'upload', ANDROID_KEYSTORE_CID: 'dummy-android', GOOGLE_API_CID: 'dappre-google-api', @@ -136,11 +134,7 @@ currentBuild.displayName = "#${env.BUILD_NUMBER} ${currentVersion.string}-${currentVersion.number}" }, run: { - // Fabric Crashlytics / Firebase App Distribution only support APKs as of June 2020 - if (! deployBranches.contains(lazyConfig['branch']) && lazyConfig['branch'] != workingBranch && lazyConfig.env.RELEASE ) - fastLane('android', 'build_apk') - else - fastLane('android', 'build') + fastLane('android', 'build') }, args: "-v /opt/android:/opt/android" + " -v /opt/certificates:/opt/certificates" @@ -149,13 +143,10 @@ in: [ 'centos7' ], on: 'android', post: { + // Process Unitest reports junit(testResults: 'fastlane/report.xml,**/build/test-results/*/*.xml', allowEmptyResults: true) - - // Fabric Crashlytics / Firebase App Distribution only support APKs as of June 2020 - if (! deployBranches.contains(lazyConfig['branch']) && lazyConfig['branch'] != workingBranch && lazyConfig.env.RELEASE ) - archiveArtifacts(artifacts: "${buildDirApk}/**", allowEmptyArchive: false) - else - archiveArtifacts(artifacts: "${buildDir}/**", allowEmptyArchive: false) + // Archive apk/aab and mapping to publish in later stage + archiveArtifacts(artifacts: "${buildDir}/**/*.apk,${buildDir}/**/*.aab,${buildDir}/**/mapping.txt", allowEmptyArchive: false) }, ] } @@ -165,10 +156,7 @@ onlyif = (! deployBranches.contains(lazyConfig['branch']) && lazyConfig['branch'] != workingBranch && lazyConfig.env.RELEASE ) tasks = [ pre: { - if (! deployBranches.contains(lazyConfig['branch']) && lazyConfig['branch'] != workingBranch && lazyConfig.env.RELEASE ) - unarchive(mapping:["${buildDirApk}/" : '.']) - else - unarchive(mapping:["${buildDir}/" : '.']) + unarchive(mapping:["${buildDir}/" : '.']) }, run: { if ( !lazyConfig.env.DRYRUN ) { @@ -240,10 +228,7 @@ input = 'Deploy to internal testers?' tasks = [ pre: { - if (! deployBranches.contains(lazyConfig['branch']) && lazyConfig['branch'] != workingBranch && lazyConfig.env.RELEASE ) - unarchive(mapping:["${buildDirApk}/" : '.']) - else - unarchive(mapping:["${buildDir}/" : '.']) + unarchive(mapping:["${buildDir}/" : '.']) }, run: { if ( !lazyConfig.env.DRYRUN ) { @@ -267,10 +252,7 @@ input = 'Deploy to alpha users?' tasks = [ pre: { - if (! deployBranches.contains(lazyConfig['branch']) && lazyConfig['branch'] != workingBranch && lazyConfig.env.RELEASE ) - unarchive(mapping:["${buildDirApk}/" : '.']) - else - unarchive(mapping:["${buildDir}/" : '.']) + unarchive(mapping:["${buildDir}/" : '.']) }, run: { if ( !lazyConfig.env.DRYRUN ) { @@ -297,10 +279,7 @@ input = 'Promote to beta users?' tasks = [ pre: { - if (! deployBranches.contains(lazyConfig['branch']) && lazyConfig['branch'] != workingBranch && lazyConfig.env.RELEASE ) - unarchive(mapping:["${buildDirApk}/" : '.']) - else - unarchive(mapping:["${buildDir}/" : '.']) + unarchive(mapping:["${buildDir}/" : '.']) }, run: { if ( !lazyConfig.env.DRYRUN ) { diff --git a/README.md b/README.md index 5ea3ee2..8c0e221 100644 --- a/README.md +++ b/README.md @@ -13,15 +13,32 @@ ### Configuration By default, Android SDK is expected under `~/android/sdk`. -It is possible to adapt this path in `docker-compose.yml`. -But it may also be specified in your `local.properties`! +It is possible to adapt this path in `local.properties` (not to be committed). + +### Setup + +If the current user id and group id are not 1000, it is required to define them using environment variables: + +``` +export _UID="$(id -u)" +export _GID="$(id -g)" +``` + +Build the container image: + +``` +docker-compose --compatibility build $OS_LABEL +``` + +Where OS_LABEL can take any supported value: + - centos7 ### Usage -The following command should build (if required) and start a shell session inside the container: +The following command should start a shell session inside the container: ``` -docker-compose --compatibility run --rm default +docker-compose --compatibility run --rm $OS_LABEL ``` From there, Gradle and Fastlane should work as expected: diff --git a/app/build.gradle b/app/build.gradle index 7b48d53..100f411 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,10 +20,10 @@ apply plugin: 'com.android.application' //apply plugin: 'jacoco' -//apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android' //apply plugin: 'kotlinx-serialization' //apply plugin: 'kotlin-android-extensions' -//apply plugin: 'kotlin-kapt' +apply plugin: 'kotlin-kapt' //apply plugin: 'kotlin-allopen' //apply plugin: 'androidx.navigation.safeargs.kotlin' apply plugin: 'com.google.firebase.crashlytics' @@ -42,27 +42,26 @@ compileSdkVersion build_versions.compile_sdk buildToolsVersion build_versions.build_tools - dataBinding { - enabled = true + buildFeatures { + dataBinding = true + // for view binding : + // viewBinding = true } -// viewBinding { -// enabled = true -// } -// kapt { -// correctErrorTypes true -// javacOptions { -// // Increase the max count of errors from annotation processors. -// // Default is 100. -// option("-Xmaxerrs", 500) -// } -// } + kapt { + correctErrorTypes true + javacOptions { + // Increase the max count of errors from annotation processors. + // Default is 100. + option("-Xmaxerrs", 500) + } + } defaultConfig { applicationId "net.dolden.dummyand" minSdkVersion build_versions.min_sdk targetSdkVersion build_versions.target_sdk - versionCode project.hasProperty('versionCode') ? project.property('versionCode') as int : 88 + versionCode project.hasProperty('versionCode') ? project.property('versionCode') as int : 89 versionName project.hasProperty('versionName') ? project.property('versionName') : "0.0.6" vectorDrawables.useSupportLibrary true multiDexEnabled true @@ -70,12 +69,12 @@ buildConfigField "boolean", "CRASHLYTICS", "true" javaCompileOptions { - annotationProcessorOptions { - arguments = [ - "room.schemaLocation" : "$projectDir/schemas".toString(), - "room.incremental" : "true", - "room.expandProjection": "true"] - } +// annotationProcessorOptions { +// arguments = [ +// "room.schemaLocation" : "$projectDir/schemas".toString(), +// "room.incremental" : "true", +// "room.expandProjection": "true"] +// } } } @@ -95,20 +94,22 @@ // is enabled. mappingFileUploadEnabled defaults to true if // minifyEnabled is true. shrinkResources true - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-glide.pro', 'proguard-fresco.pro', 'proguard-rules.pro' + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-glide.pro', 'proguard-rules.pro' debuggable false +// manifestPlaceholders = [allowBackup: true, fullBackupContent: true, crashlyticsCollectionEnabled: true] } debug { - minifyEnabled true - firebaseCrashlytics { - // If you don't need crash reporting for your debug build, - // you can speed up your build by disabling mapping file uploading. - mappingFileUploadEnabled false - } - useProguard false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-glide.pro', 'proguard-fresco.pro', 'proguard-rules.pro' + minifyEnabled false +// firebaseCrashlytics { +// // If you don't need crash reporting for your debug build, +// // you can speed up your build by disabling mapping file uploading. +// mappingFileUploadEnabled false +// } + + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-glide.pro', 'proguard-rules.pro' debuggable true - testCoverageEnabled !project.hasProperty('android.injected.invoked.from.ide') +// testCoverageEnabled !project.hasProperty('android.injected.invoked.from.ide') +// manifestPlaceholders = [allowBackup: false, fullBackupContent: false, crashlyticsCollectionEnabled: false] ext.enableCrashlytics = false } } @@ -120,13 +121,13 @@ sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } -// kotlinOptions { -// jvmTarget = "1.8" -// } + kotlinOptions { + jvmTarget = "1.8" + } sourceSets { androidTest.java.srcDirs += "src/test-common/java" test.java.srcDirs += "src/test-common/java" - test.java.srcDirs += "../networking/src/test/java" +// test.java.srcDirs += "../networking/src/test/java" } lintOptions { lintConfig rootProject.file('lint.xml') @@ -136,14 +137,6 @@ flavorDimensions "env" productFlavors { // May need to match branch name, passed by Jenkins PL as environment variable named BRANCH_NAME - systemtest { - resValue "string", "app_name", "DummyAnd STst" - //applicationIdSuffix ".stst" - applicationIdSuffix ".dev2" -// manifestPlaceholders = [errorBaseUrl : "https://systemtest-card.testonly.digital-me.nl/card", -// cardNodeBaseUrl: "https://systemtest-card.testonly.digital-me.nl/card", -// userNodeBaseUrl: "https://systemtest-user.testonly.digital-me.nl/user"] - } acceptance { resValue "string", "app_name", "DummyAnd Acc" @@ -170,28 +163,7 @@ } applicationVariants.all { variant -> - if (variant.buildType.name == "release") { - variant.outputs.all { output -> - // Avoid to rename, so Fastlane default will work for now - //output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace("app-release.apk", "dappre_${versionName}.${versionCode}.apk")) - - if (variant.getBuildType().isMinifyEnabled()) { - variant.getAssembleProvider().configure() { - it.doLast { - copy { - from variant.mappingFile - into output.outputFile.parent - // Avoid to rename, so Fastlane default will work for now - //rename { - // String fileName -> - // "mapping_${versionName}.${versionCode}.txt" - //} - } - } - } - } - } - } + // Do something about all variants - previously used to copy/move some file around } } @@ -216,6 +188,19 @@ } } +//apply plugin: 'hunter-debug' +// +//debugHunterExt { +// runVariant = 'DEBUG' +//} + +//apply plugin: 'hunter-timing' +//timingHunterExt { +// runVariant = 'DEBUG' +//// whitelist = ['com.quinn.hunter.timing.DataSource'] +//// blacklist = ['com.quinn.hunter.timing.black'] +//} + dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') @@ -239,7 +224,7 @@ // kapt 'com.squareup.inject:assisted-inject-processor-dagger2:0.5.2' // // kapt deps.lifecycle.compiler -// implementation deps.kotlin.stdlib8 + implementation deps.kotlin.stdlib8 // implementation 'org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.20.0-1.3.70-eap-274-2' // implementation 'com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:0.5.0' implementation deps.firebase_crashlytics diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index fcfa971..a262395 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -15,3 +15,79 @@ #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} + +-optimizationpasses 5 +-dontusemixedcaseclassnames +-dontskipnonpubliclibraryclasses +-dontskipnonpubliclibraryclassmembers +-dontpreverify +-verbose +-keepattributes SourceFile,LineNumberTable +-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* + +-keep public class * extends android.app.Activity +-keep public class * extends android.app.Application +-keep public class * extends android.app.Service +-keep public class * extends android.content.BroadcastReceiver +-keep public class * extends android.content.ContentProvider +-keep public class * extends android.app.backup.BackupAgentHelper +-keep public class * extends android.preference.Preference + +-dontwarn com.crashlytics.** +-keep class com.crashlytics.** { *; } + +-keep, includedescriptorclasses class net.dolden.dummyand.** +-keep, includedescriptorclasses class kotlinx.serialization.** +-keepnames class kotlin.jvm.internal.DefaultConstructorMarker +-keep class androidx.core.app.CoreComponentFactory { *; } + +-keep class androidx.appcompat.widget.Toolbar { *** mMenuView; } +-keep class androidx.appcompat.widget.ActionMenuView { *** mPresenter; } +-keep class androidx.appcompat.widget.ActionMenuPresenter { *** mOverflowButton; } + +-keepnames class androidx.navigation.fragment.NavHostFragment + +-keepattributes *Annotation*, InnerClasses +-dontnote kotlinx.serialization.SerializationKt +-keep,includedescriptorclasses class net.dolden.dummyand.**$$serializer { *; } # <-- change package name to your app's + +-keep class org.jboss.netty.** { *; } +-keep class org.spongycastle.** +-keep class com.google.** { *; } +-keep class android.support.v7.widget.SearchView { public *; } +-keep class com.synnapps.carouselview.** { *; } +-keepclassmembers class * extends android.app.Activity { + public void *(android.view.View); +} + +# ServiceLoader support +-keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {} +-keepnames class kotlinx.coroutines.CoroutineExceptionHandler {} + +# Most of volatile fields are updated with AFU and should not be mangled +-keepclassmembernames class kotlinx.** { + volatile ; +} + +-keepclassmembers enum * { + public static **[] values(); + public static ** valueOf(java.lang.String); +} + +-keep class * implements android.os.Parcelable { + public static final android.os.Parcelable$Creator *; +} + +-dontwarn org.jboss.netty.** + +-dontwarn javax.naming.** +-dontwarn java.nio.file.Files +-dontwarn java.nio.file.Path +-dontwarn java.nio.file.OpenOption +-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement +-dontwarn okhttp3.** +-dontwarn okio.** +-dontwarn javax.annotation.Nullable +-dontwarn javax.annotation.ParametersAreNonnullByDefault + +-ignorewarnings \ No newline at end of file diff --git a/build.gradle b/build.gradle index 9af14f1..a80cd05 100644 --- a/build.gradle +++ b/build.gradle @@ -3,14 +3,14 @@ buildscript { apply from: 'versions.gradle' addRepos(repositories) - + ext { -// ktlintVersion = '0.33.0' + ktlintVersion = '0.33.0' } dependencies { classpath deps.android_gradle_plugin -// classpath deps.kotlin.plugin + classpath deps.kotlin.plugin // classpath deps.kotlin.serialization // classpath deps.kotlin.android_extensions // classpath deps.kotlin.allopen @@ -19,32 +19,35 @@ classpath deps.google_services.plugin // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files + //classpath 'com.netflix.nebula:gradle-lint-plugin:10.4.2' } - - repositories { + repositories { google() } } -//plugins { -// id "com.diffplug.gradle.spotless" version "3.27.2" -// -// // Example usage: -// // ./gradlew dependencyUpdates -Drevision=release -DoutputFormatter=plain -// id "com.github.ben-manes.versions" version "0.28.0" -//} +plugins { + id "com.diffplug.gradle.spotless" version "3.29.0" + + // Example usage: + // ./gradlew dependencyUpdates -Drevision=release -DoutputFormatter=plain + id "com.github.ben-manes.versions" version "0.28.0" +} + +//apply plugin: 'nebula.lint' +//gradleLint.rules = ['all-dependency'] // add as many rules here as you'd like allprojects { addRepos(repositories) } -//spotless { -// kotlin { -// target "**/*.kt" -// ktlint(ktlintVersion) -// } -//} + spotless { + kotlin { + target "**/*.kt" + ktlint(ktlintVersion) + } + } -task clean(type: Delete) { - delete rootProject.buildDir -} +//task clean(type: Delete) { +// delete rootProject.buildDir +//} diff --git a/docker-compose.yml b/docker-compose.yml index 95e5caa..f8d3063 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,6 @@ version: '3' services: - default: + centos7: build: context: lazyDir dockerfile: centos7.Dockerfile diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 97815be..226c6ad 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -127,10 +127,10 @@ desc "Display infos about the app" lane :info do |options| - UI.message("App version name = #{getVersionName()}") - UI.message("App version number = #{getVersionCode()}") + UI.message("App version name = #{getVersionName()}") + UI.message("App version number = #{getVersionCode()}") UI.message("App Flavor = #{getFlavorName(options)}") - UI.message("App ID = #{getPackageName(options)}") + UI.message("App ID = #{getPackageName(options)}") end desc "Validate the current setup" @@ -171,86 +171,21 @@ ) end - desc "Build the apk" - lane :build_apk do |options| - gradle( - task: "clean assemble", - build_type: 'Release', - flavor: "#{getFlavorName(options)}", - ) - end - - desc "Build the bundle" + desc "Build the apk or the bundle depending of the environment" lane :build do |options| + build_task = ENV['ANDROID_BUNDLE'] == 'true' ? 'bundle' : 'assemble' gradle( - task: "clean bundle", + task: "clean #{build_task}", build_type: 'Release', flavor: "#{getFlavorName(options)}", ) end - desc "Bump version code/build number" - private_lane :bump do |options| - increment_version_code( - var_name: "versionCode|versionBuild", - verbose: true, - ) - end - - desc "Tag as a new version" - private_lane :tag do |options| - git_commit( - path: "app/build.gradle", - message: "Increment version code to #{lane_context[SharedValues::VERSION_CODE]} for next release", - ) - add_git_tag( - tag: "#{ENV['VERSION']}-#{lane_context[SharedValues::VERSION_CODE]}", - message: "Create new tag for version #{ENV['VERSION']}-#{lane_context[SharedValues::VERSION_CODE]}", - ) - push_to_git_remote( - local_branch: "HEAD", - remote_branch: "master", - ) - end - - desc "Build and deploy the bundle for Alpha testing in Google Play store" - lane :deploy_alpha do |options| - bump - gradle( - task: "clean bundle", - build_type: 'Release', - ) - sh("cp -vf metadata/android/en-US/changelogs/latest.txt metadata/android/en-US/changelogs/#{lane_context[SharedValues::VERSION_CODE]}.txt") - sh("git add metadata/android/en-US/changelogs/#{lane_context[SharedValues::VERSION_CODE]}.txt") - sh("git add metadata/android/en-US/changelogs/latest.txt") - sh("cp -vf metadata/android/nl-NL/changelogs/latest.txt metadata/android/nl-NL/changelogs/#{lane_context[SharedValues::VERSION_CODE]}.txt") - sh("git add metadata/android/nl-NL/changelogs/#{lane_context[SharedValues::VERSION_CODE]}.txt") - sh("git add metadata/android/nl-NL/changelogs/latest.txt") - git_commit( - path: [ - "fastlane/metadata/android/en-US/changelogs/latest.txt", - "fastlane/metadata/android/en-US/changelogs/#{lane_context[SharedValues::VERSION_CODE]}.txt", - "fastlane/metadata/android/nl-NL/changelogs/latest.txt", - "fastlane/metadata/android/nl-NL/changelogs/#{lane_context[SharedValues::VERSION_CODE]}.txt", - ], - message: "Provide changelogs for this version", - ) - supply( - aab: "app/build/outputs/bundle/#{getFlavorName(options)}Release/app-#{getFlavorName(options)}-release.aab", - mapping: "app/build/outputs/mapping/#{getFlavorName(options)}/release/mapping.txt", - track: 'internal', - skip_upload_aab: false, - skip_upload_metadata: false, - skip_upload_images: true, - skip_upload_screenshots: true, - ) - tag - end - desc "Update metadata only, including images and screenshots" lane :deploy_metadata do |options| supply( skip_upload_aab: true, + skip_upload_apk: true, skip_upload_metadata: false, skip_upload_images: false, skip_upload_screenshots: false, @@ -265,31 +200,42 @@ if ! firebase_api_token UI.user_error!("No Firebase API token found in environment (FIREBASE_API_TOKEN)") else - find_firebase_app_id( - app_identifier: get_application_id(getFlavorName(options)), - ) - firebase_app_distribution( - app: lane_context[SharedValues::GOOGLE_APP_ID], - apk_path: "app/build/outputs/apk/#{getFlavorName(options)}/release/app-#{getFlavorName(options)}-release.apk", - firebase_cli_token: firebase_api_token, - release_notes_file: 'fastlane/metadata/android/en-US/changelogs/latest.txt', - groups: firebase_groups, - ) + find_firebase_app_id( + app_identifier: get_application_id(getFlavorName(options)), + ) + firebase_app_distribution( + app: lane_context[SharedValues::GOOGLE_APP_ID], + apk_path: "app/build/outputs/apk/#{getFlavorName(options)}/release/app-#{getFlavorName(options)}-release.apk", + firebase_cli_token: firebase_api_token, + release_notes_file: 'fastlane/metadata/android/en-US/changelogs/latest.txt', + groups: firebase_groups, + ) end end desc "Deploy a new internal version to the Google Play" lane :internal do |options| - supply( - aab: "app/build/outputs/bundle/#{getFlavorName(options)}Release/app-#{getFlavorName(options)}-release.aab", - mapping: "app/build/outputs/mapping/#{getFlavorName(options)}/release/mapping.txt", - track: 'internal', - skip_upload_aab: false, - skip_upload_metadata: false, - skip_upload_images: false, - skip_upload_screenshots: false, - package_name: "#{getPackageName(options)}", - ) + # Define general options + options = { + :track => 'internal', + :mapping => "app/build/outputs/mapping/#{getFlavorName(options)}Release/mapping.txt", + :skip_upload_metadata => false, + :skip_upload_images => false, + :skip_upload_screenshots => false, + :package_name => "#{getPackageName(options)}", + } + + # Add specific options for bundle or apk + if ENV['ANDROID_BUNDLE'] == 'true' + options[:aab] = "app/build/outputs/bundle/#{getFlavorName(options)}Release/app-#{getFlavorName(options)}-release.aab" + options[:skip_upload_aab] = false + else + options[:apk] = "app/build/outputs/apk/#{getFlavorName(options)}/release/app-#{getFlavorName(options)}-release.apk" + options[:skip_upload_apk] = false + end + + # Call supply with the final options + supply(options) end desc "Deploy a new alpha version to the Google Play" @@ -298,6 +244,7 @@ track: 'internal', track_promote_to: 'alpha', skip_upload_aab: true, + skip_upload_apk: true, skip_upload_metadata: true, skip_upload_images: true, skip_upload_screenshots: true, @@ -312,6 +259,7 @@ track: 'alpha', track_promote_to: 'beta', skip_upload_aab: true, + skip_upload_apk: true, skip_upload_metadata: true, skip_upload_images: true, skip_upload_screenshots: true, @@ -326,6 +274,7 @@ track: 'beta', track_promote_to: 'production', skip_upload_aab: true, + skip_upload_apk: true, skip_upload_metadata: true, skip_upload_images: true, skip_upload_screenshots: true, diff --git a/fastlane/metadata/android/en-US/changelogs/90.txt b/fastlane/metadata/android/en-US/changelogs/90.txt new file mode 100644 index 0000000..ed3b331 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/90.txt @@ -0,0 +1,3 @@ +- Switch to new signing key - reinstall needed +- Nothing else visible +- Update base image to CentOS 7.8 diff --git a/fastlane/metadata/android/nl-NL/changelogs/90.txt b/fastlane/metadata/android/nl-NL/changelogs/90.txt new file mode 100644 index 0000000..0274f99 --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/90.txt @@ -0,0 +1,3 @@ +- Wisselen nieuwe specifiek sleutel - reinstall nodig +- Niets anders zichtbaar +- Bijwerken base image met CentOS 7.8 diff --git a/gradle.properties b/gradle.properties index dbbf8aa..aeeb9fd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,42 +1,32 @@ # Project-wide Gradle settings. - # IDE (e.g. Android Studio) users: # Gradle settings configured through the IDE *will override* # any settings specified in this file. - # For more details on how to configure your build environment visit # http://www.gradle.org/docs/current/userguide/build_environment.html - # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. # Default value: -Xmx10248m -XX:MaxPermSize=256m # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 #org.gradle.jvmargs=\ -#-XX:NewSize=24m \ -#-XX:MaxNewSize=48m \ -#-XX:OldSize=32m \ -#-XX:MetaspaceSize=96m \ -#-XX:MaxMetaspaceSize=128m \ -#-XX:CompressedClassSpaceSize=32m \ -#-XX:ReservedCodeCacheSize=28m \ -#-Xms128m -Xmx768m \ +#-XX:MaxMetaspaceSize=160m \ +#-Xmx1280m \ #-Dfile.encoding=UTF-8 \ #-Duser.country=US \ #-Duser.language=en \ #-Duser.variant \ #-Dme.jenkins -#android.enableJetifier=true -#android.useAndroidX=true -#kotlin.incremental=true -#kapt.incremental.apt=true -#android.databinding.incremental=true -#android.enableR8=true +android.enableJetifier=true +android.useAndroidX=true +kotlin.incremental=true +kapt.incremental.apt=true +android.databinding.incremental=true +# android.debug.obsoleteApi=true +# android.enableSeparateAnnotationProcessing=true # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects org.gradle.parallel=true org.gradle.daemon=true -org.gradle.caching=true -android.useAndroidX=true -android.enableJetifier=true +org.gradle.caching=true \ No newline at end of file diff --git a/lazyDir/centos7.Dockerfile b/lazyDir/centos7.Dockerfile index 75d1e0d..0580b9d 100644 --- a/lazyDir/centos7.Dockerfile +++ b/lazyDir/centos7.Dockerfile @@ -127,9 +127,10 @@ ARG gid=1000 ARG group=android -# Add user to build -RUN groupadd -g "${gid}" "${group}" && \ - useradd -ms /bin/bash -g "${group}" -u "${uid}" "${user}" +# Add or modify user and group for build and runtime (convenient) +RUN id ${user} > /dev/null 2>&1 && \ + { groupmod -g "${gid}" "${group}" && usermod -md /home/${user} -s /bin/bash -g "${group}" -u "${uid}" "${user}"; } || \ + { groupadd -g "${gid}" "${group}" && useradd -md /home/${user} -s /bin/bash -g "${group}" -u "${uid}" "${user}"; } # Copy requirements in non-root user home directory COPY Gemfile Gemfile.lock "/home/${user}/" @@ -160,5 +161,9 @@ ENV LC_ALL "${locale}" ENV USER ${user} +ENV SKIP_SLOW_FASTLANE_WARNING="YES" \ + FASTLANE_SKIP_UPDATE_CHECK="YES" \ + FASTLANE_OPT_OUT_USAGE="YES" + # Get script directory from lazyLib at last to avoid warning w/o invalidating the cache ARG dir=. diff --git a/versions.gradle b/versions.gradle index e0ae074..c5fde93 100644 --- a/versions.gradle +++ b/versions.gradle @@ -2,7 +2,7 @@ def versions = [:] versions.json = "20190722" versions.arch_core = "2.1.0" -versions.room = "2.2.4" +versions.room = "2.2.5" versions.lifecycle = "2.2.0" versions.fragment_ktx = " 1.2.3" versions.activity_ktx = "1.1.0" @@ -11,10 +11,10 @@ versions.legacy_support = "1.0.0" versions.recyclerview_selection = "1.1.0-rc01" versions.viewpager2 = "1.0.0" -versions.material = "1.1.0-rc02" +versions.material = "1.2.0-alpha06" versions.support = "1.1.0" -versions.app_compat = "1.2.0-alpha03" -versions.dagger = '2.26' +versions.app_compat = "1.2.0-beta01" +versions.dagger = '2.27' versions.assisted_inject = '0.5.0' versions.junit = '4.13' versions.espresso = "3.2.0" @@ -28,31 +28,31 @@ versions.mockito_all = "1.10.19" versions.mockito_android = '3.3.3' versions.dexmaker = "2.19.0" -versions.constraint_layout = "2.0.0-beta4" +versions.constraint_layout = "2.0.0-beta6" versions.glide = '4.11.0' versions.timber = "4.7.1" versions.slf4j = "1.7.28" -versions.android_gradle_plugin = '3.6.1' +versions.android_gradle_plugin = '4.0.0' versions.rxjava2 = "2.2.19" versions.rx_android = "2.1.1" versions.atsl_runner = "1.2.0" versions.atsl_rules = "1.2.0" versions.atsl_junit = "1.1.1" versions.hamcrest = "1.3" -versions.kotlin = '1.3.70' +versions.kotlin = '1.4-M2' versions.paging = "2.1.1" versions.navigation_testing = "1.0.0-alpha08" versions.navigation_plugin = "2.2.0" -versions.navigation = "2.2.1" +versions.navigation = "2.2.2" versions.work = "2.3.3" -versions.crashlytics_gradle_plugin = "2.0.0-beta02" +versions.crashlytics_gradle_plugin = "2.1.1" versions.google_services = "4.3.3" versions.vision = "20.0.0" -versions.firebase = "17.3.0" -versions.firebase_crashlytics = "17.0.0-beta01" -versions.firebase_messaging = "20.1.5" +versions.firebase = "17.4.2" +versions.firebase_crashlytics = "17.0.0" +versions.firebase_messaging = "20.2.0" versions.firebase_dynamic_links = "19.1.0" -versions.firebase_analytics = "17.3.0" +versions.firebase_analytics = "17.4.2" versions.firebase_ml_vision = "24.0.1" versions.firebase_ml_vision_image_label = "19.0.0" versions.firebase_ml_vision_automl = "18.0.3" @@ -61,8 +61,8 @@ versions.ui_automator = '2.2.0' versions.gson = '2.8.5' versions.ktx = '1.2.0' -versions.preference = '1.1.0' -versions.coroutines = '1.3.4' +versions.preference = '1.1.1' +versions.coroutines = '1.3.7' versions.data_binding_compiler = versions.android_gradle_plugin def deps = [:] @@ -151,7 +151,7 @@ kotlin.serialization = "org.jetbrains.kotlin:kotlin-serialization:$versions.kotlin" kotlin.allopen = "org.jetbrains.kotlin:kotlin-allopen:$versions.kotlin" kotlin.android_extensions = "org.jetbrains.kotlin:kotlin-android-extensions:$versions.kotlin" -kotlin.version = "1.3.70" +kotlin.version = "$versions.kotlin" deps.kotlin = kotlin @@ -182,7 +182,7 @@ build_versions.min_sdk = 16 build_versions.compile_sdk = 29 build_versions.target_sdk = 29 -build_versions.build_tools = "29.0.0" +build_versions.build_tools = "29.0.2" ext.build_versions = build_versions def work = [:] @@ -248,7 +248,7 @@ handler.google() handler.jcenter() // handler.maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } - handler.maven { url 'http://dl.bintray.com/kotlin/kotlin-eap' } + handler.maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' } // For the support libraries handler.maven { url "https://maven.google.com" } // com.github.javiersantos:AppUpdater