diff --git a/.gitignore b/.gitignore index faf41b56..412b7d04 100644 --- a/.gitignore +++ b/.gitignore @@ -189,3 +189,10 @@ $RECYCLE.BIN/ # End of https://www.gitignore.io/api/macos,opencv,windows,androidstudio + +secrets.tar.gz +medic-official.keystore +playstore-secret.json + +fastlane/* +!fastlane/Fastfile \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..ca6e7d75 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,52 @@ +language: android +dist: trusty +jdk: oraclejdk8 +android: + components: + - tools + - platform-tools + - build-tools-28.0.2 + - android-28 + - extra-android-m2repository + - extra-google-m2repository +env: +- GRADLE_OPTS="-XX:MaxPermSize=2048M" +before_install: +- openssl aes-256-cbc -K $encrypted_d751a50dc857_key -iv $encrypted_d751a50dc857_iv -in secrets.tar.gz.enc -out secrets.tar.gz -d +- tar -xf ./secrets.tar.gz +- gem update --system +- gem install fastlane --no-document --quiet +install: +- echo y | sdkmanager "ndk-bundle" +- echo y | sdkmanager "cmake;3.6.4111459" +- echo y | sdkmanager --channel=3 --channel=1 "cmake;3.10.2.4988404" +before_script: +- export ANDROID_NDK_HOME=$ANDROID_HOME/ndk-bundle +stages: +- name: test +- name: deploy + if: tag IS present +jobs: + include: + - stage: test + script: ./gradlew --daemon --parallel test + - stage: deploy + script: fastlane deploy +before_cache: +- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock +- rm -fr $HOME/.gradle/caches/*/plugin-resolution/ +cache: + directories: + - "$HOME/.gradle/caches/" + - "$HOME/.gradle/wrapper/" + - "$HOME/.android/build-cache" +deploy: + provider: releases + skip_cleanup: true + overwrite: true + api_key: + secure: oaUQr+Kn8Eikrlc5Hwo5NVn/4W+xc6VdcYdBHpOEC6Oi+oO5Yp/hNZMUxg7DKBJs9moRRGfqdFhFIj5XO6hCYgJgPOA6ZC51nOQzkNoYgWwPAKf6PvCu8JQ25XTMVc9nCyHTz7LcP3cxYKSaOZt0IAYCKeBjogPJQ4dtNSvFmy0WAx4OYBHj+P0djWWHi2XlBLRsaRn430b+XyHooeOiSbOtgOT5Vk3vcruCaojL0uat3f+384yyD140qKspJ568OqF/wCzuAK8N3ex3MFXU6Giv9JdUA+ZDLhFN2lHMK7cqUaCqsAxF2gYyUNSXoG+RptBDtqn5JsqmsoMgtJW6ygcIHoC4Q6IIEtz/jUiueOnLuu2MB4e6+ft3MZfjaztnSrMjRXdU5ewv9avv70Ibh8mhDNxOBRqgbtDTR5tdNTwiyaBIY0D9nbzrNw1HU5Ti74KvAvOLA/k6kuO5/9t9V2j8HbUOfh08EttqUB4brDBVnpwZwxhDkrMfSkJJHd7Z7mBo2nsDMBG1xGQ12ZD0YCOj/QV/nm4+KeUeWEIwqj76E8y8/z+n49JcjhejK486oLI1/bOKufX9MQeAXNqBKKLIZDwzDRbBhVq9tulbw4IsA374PspQE1e0zxzOFNnahTFbrOTaLiMSqiEjjLLHx/piLKd5QyV0dWDP97iGhVA= + file: ./app/build/outputs/apk/**/*.apk + on: + repo: medic/rdt-capture + branch: master diff --git a/README.md b/README.md index e7564966..646684a2 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,11 @@ The current version is 999 || versionParts[2] > 999) + throw new RuntimeException('Version part greater than 999 not allowed.') + + versionCode = (1000 * 1000 * versionParts[0]) + 1000 * versionParts[1] + versionParts[2] + if (versionCode > 2100000000 / 10) + throw new RuntimeException('versionCode bigger than max allowed by Google Play.') + } + + return versionCode +} + +def getVersionName = { + System.env.TRAVIS_TAG ?: 'SNAPSHOT' +} + android { compileSdkVersion 26 defaultConfig { applicationId "edu.washington.cs.ubicomplab.rdt_reader" minSdkVersion 21 targetSdkVersion 26 - versionCode 1 - versionName "1.0" + versionCode getVersionCode() + versionName getVersionName() + archivesBaseName = "${project.name}-${versionName}" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" externalNativeBuild { cmake { @@ -15,12 +41,24 @@ android { } } } + + signingConfigs { + release { + storeFile file(System.env.ANDROID_KEYSTORE_PATH ?: signingConfigs.debug.storeFile) + storePassword System.env.ANDROID_KEYSTORE_PASSWORD ?: signingConfigs.debug.storePassword + keyAlias System.env.ANDROID_KEY_ALIAS ?: signingConfigs.debug.keyAlias + keyPassword System.env.ANDROID_KEY_PASSWORD ?: signingConfigs.debug.keyPassword + } + } + buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release } } + externalNativeBuild { cmake { path "CMakeLists.txt" diff --git a/build.gradle b/build.gradle index 987b8a37..410bffa3 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.0.1' + classpath 'com.android.tools.build:gradle:3.3.2' // NOTE: Do not place your application dependencies here; they belong diff --git a/fastlane/Fastfile b/fastlane/Fastfile new file mode 100644 index 00000000..0fd3ab81 --- /dev/null +++ b/fastlane/Fastfile @@ -0,0 +1,29 @@ +# This file contains the fastlane.tools configuration +# You can find the documentation at https://docs.fastlane.tools +# + +default_platform(:android) + +platform :android do + desc "Build and deploy on Google Play" + lane :deploy do + gradleTaskName = "assembleRelease" + version = ENV['TRAVIS_TAG'].empty? ? 'SNAPSHOT' : ENV['TRAVIS_TAG'] + + gradle(task: gradleTaskName) + + supply( + package_name: "edu.washington.cs.ubicomplab.rdt_reader", + track: "alpha", + json_key: "playstore-secret.json", + apk: "app/build/outputs/apk/release/app-#{version}-release.apk", + skip_upload_aab: true, + skip_upload_metadata: true, + skip_upload_images: true, + skip_upload_screenshots: true, + validate_only: false, + + timeout: 3600, + ) + end +end diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 34fef76c..36173859 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Fri Jan 12 17:07:22 PST 2018 +#Fri Jun 21 02:12:19 PDT 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip diff --git a/secrets.tar.gz.enc b/secrets.tar.gz.enc new file mode 100644 index 00000000..17bc3a28 Binary files /dev/null and b/secrets.tar.gz.enc differ