From 7551dd19a4d7137081eaccf7537ff9305a8439ae Mon Sep 17 00:00:00 2001 From: Daniel Gomez Rico Date: Fri, 4 May 2018 19:02:45 -0300 Subject: [PATCH 1/2] Merge branch 'develop' of github.com:MakinGiants/banjen into develop * 'develop' of github.com:MakinGiants/banjen: (164 commits) Downgrade espresso to 3.0.1 Update to circle ci 2 Update dependencies (kotlin 1.2.21) Update dependencies (kotlin 1.2) Fix bad build tools for circle ci Prepare 1.5.1 Update deps Repare 1.5.0 Delay ads initialization Prepare version Prepare release Remove wait device Use sdk 21 for tests Use android 24 for tests Add firebase test script Remove not needed coverage task Fix spoon artifact on circleci Update animations and button style Fix failing tests Update to espresso 3 ... From 07567dc6f995944600ec7846c58cf52759ae0098 Mon Sep 17 00:00:00 2001 From: Daniel Gomez Rico Date: Sun, 3 Jun 2018 12:07:21 -0500 Subject: [PATCH 2/2] Update dependencies Update ci emulator setup Update ci emulator setup Update all dependencies Remove tests from circleci It does not support android emulator anymore. Update dependencies versions Fix env variables not found Testing Testing Testing Testing Tests --- CHANGELOG.md | 9 ++ app/build.gradle | 83 +++++++++++++------ app/proguard-rules.pro | 2 +- .../android/banjotuner/EarActivityTest.kt | 2 +- .../android/banjotuner/EarRobot.kt | 16 ++-- app/src/debug/google-services.json | 42 ---------- app/src/main/AndroidManifest.xml | 51 +++++++----- .../android/banjotuner/EarActivity.kt | 5 +- build.gradle | 28 +++++-- circle.yml | 17 ++-- dependencies.gradle | 9 +- gradle/wrapper/gradle-wrapper.properties | 4 +- scripts/cp-env-to-properties.sh | 12 --- 13 files changed, 145 insertions(+), 135 deletions(-) delete mode 100644 app/src/debug/google-services.json delete mode 100755 scripts/cp-env-to-properties.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 2bd4af3..b9ee066 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,13 @@ +# 1.5.5 +- Instant app + +# 1.5.4 +- Update kotlin to 1.2.51. + # 1.5.2 # 1.5.3 +- Update android gradle plugin to 3.x. +- Update kotlin to 1.2.41. +- Update firebase to 15.0.0. - Sdk to 27 - Update dependencies: + Firebase diff --git a/app/build.gradle b/app/build.gradle index edc1b30..99076f2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,16 +2,17 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'io.fabric' apply plugin: 'com.github.ben-manes.versions' -apply plugin: 'spoon' +apply plugin: "com.jaredsburrows.spoon" apply from: '../jacoco.gradle' def appId = "com.makingiants.android.banjotuner" -def appVersionName = "1.5.3" -def appVersionCode = 112 +def appVersionName = "1.5.5" +def appVersionCode = 114 + android { compileSdkVersion setup.targetSdk - buildToolsVersion setup.buildTools + flavorDimensions "default" defaultConfig { applicationId appId @@ -25,7 +26,7 @@ android { // Enable just English configs for dependencies, allowing to shrink apk size more resConfigs "en", "pt" - resValue "string", "ads_unit_id_banner", "$BANJEN_ADS_UNIT_ID_BANNER" + resValue "string", "ads_unit_id_banner", "${System.getenv("BANJEN_ADS_UNIT_ID_BANNER")}" } buildTypes { @@ -43,10 +44,10 @@ android { proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } + } - packagingOptions { - exclude 'META-INF/services/org.xmlpull.v1.XmlPullParserFactory' - } + packagingOptions { + exclude 'META-INF/services/org.xmlpull.v1.XmlPullParserFactory' } signingConfigs { @@ -60,6 +61,32 @@ android { } } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + lintOptions { + abortOnError false + } + + + // Build an instant app zip of our single APK. This saves having to create a feature module, an + // instant app module, and a traditional application module just to get an aab and instant zip. + applicationVariants.all { variant -> + variant.outputs.all { output -> + if (output.outputFile.name.endsWith('.apk')) { + def zipInstant = tasks.create("zipInstant${variant.name.capitalize()}", Zip) { + from(output.outputFile) + archiveName = "instant-${output.name}.zip" + destinationDir = output.outputFile.parentFile + } + zipInstant.dependsOn(output.assemble) + tasks.getByName('assemble').dependsOn(zipInstant) + } + } + } + } def excludeAnnotations = { @@ -67,37 +94,41 @@ def excludeAnnotations = { } dependencies { - compile "com.android.support:appcompat-v7:${deps.supportLib}" - compile "org.jetbrains.kotlin:kotlin-stdlib:$deps.kotlin" + implementation "com.android.support:appcompat-v7:${deps.supportLib}" + implementation "org.jetbrains.kotlin:kotlin-stdlib:$deps.kotlin" // Ads/Crash - compile 'com.crashlytics.sdk.android:crashlytics:2.9.1' - compile "com.google.firebase:firebase-core:${deps.firebase}" - compile "com.google.firebase:firebase-ads:${deps.firebase}" + implementation 'com.crashlytics.sdk.android:crashlytics:2.9.4' + implementation "com.google.firebase:firebase-core:${deps.firebase}", { + exclude group: 'com.android.support' + } + implementation "com.google.firebase:firebase-ads:${deps.firebase}", { + exclude group: 'com.android.support' + } - testCompile 'junit:junit:4.12' - testCompile "org.jetbrains.kotlin:kotlin-stdlib:$deps.kotlin" - testCompile "org.jetbrains.kotlin:kotlin-test-junit:$deps.kotlin" + testImplementation 'junit:junit:4.12' + testImplementation "org.jetbrains.kotlin:kotlin-stdlib:$deps.kotlin" + testImplementation "org.jetbrains.kotlin:kotlin-test-junit:$deps.kotlin" - androidTestCompile 'com.android.support.test.espresso:espresso-core:3.0.1', excludeAnnotations - androidTestCompile 'com.android.support.test:runner:1.0.1', excludeAnnotations - androidTestCompile 'com.android.support.test:rules:1.0.1', excludeAnnotations + androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2', excludeAnnotations + androidTestImplementation 'com.android.support.test:runner:1.0.2', excludeAnnotations + androidTestImplementation 'com.android.support.test:rules:1.0.2', excludeAnnotations - androidTestCompile 'com.squareup.spoon:spoon-client:1.7.1' - androidTestCompile 'com.jraska:falcon-spoon-compat:1.0.4', { + //androidTestImplementation 'com.squareup.spoon:spoon-client:1.7.1' + androidTestImplementation "com.squareup.spoon:spoon-client:2.0.0-SNAPSHOT" // For Spoon snapshot, until 2.0.0 is released + androidTestImplementation 'com.jraska:falcon-spoon-compat:2.0.1', { exclude group: 'com.squareup.spoon', module: 'spoon-client' } } -jacoco { - toolVersion = deps.jacoco -} - spoon { debug = true codeCoverage = true - grantAllPermissions = true + noAnimations = true + grantAll = true } + + apply plugin: 'com.google.gms.google-services' \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 7e4e161..0a2849b 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -1,5 +1,5 @@ -optimizations code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/* --optimizationpasses 5 +-optimizationpasses 10 -allowaccessmodification # Crashlytics diff --git a/app/src/androidTest/java/com/makingiants/android/banjotuner/EarActivityTest.kt b/app/src/androidTest/java/com/makingiants/android/banjotuner/EarActivityTest.kt index 04f8ba1..baca31e 100644 --- a/app/src/androidTest/java/com/makingiants/android/banjotuner/EarActivityTest.kt +++ b/app/src/androidTest/java/com/makingiants/android/banjotuner/EarActivityTest.kt @@ -12,7 +12,7 @@ import org.junit.runner.RunWith class EarActivityTest { @Rule @JvmField - var activityRule: ActivityTestRule = ActivityTestRule(EarActivity::class.java) + var activityRule = ActivityTestRule(EarActivity::class.java) fun test_isPlaying(index: Int) = withEarRobot(activityRule.activity) { click(index) diff --git a/app/src/androidTest/java/com/makingiants/android/banjotuner/EarRobot.kt b/app/src/androidTest/java/com/makingiants/android/banjotuner/EarRobot.kt index e9b6273..9115ce1 100644 --- a/app/src/androidTest/java/com/makingiants/android/banjotuner/EarRobot.kt +++ b/app/src/androidTest/java/com/makingiants/android/banjotuner/EarRobot.kt @@ -7,13 +7,19 @@ import android.media.AudioManager import android.support.test.espresso.Espresso.onView import android.support.test.espresso.action.ViewActions import android.support.test.espresso.matcher.ViewMatchers.withText -import com.jraska.falcon.FalconSpoon +import com.jraska.falcon.FalconSpoonRule import org.hamcrest.Matchers import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue +import org.junit.Rule + + class EarRobot(val activity: Activity) { + @Rule + val falconSpoonRule = FalconSpoonRule() + val audioService by lazy { activity.getSystemService(Context.AUDIO_SERVICE) as AudioManager } init { @@ -22,18 +28,18 @@ class EarRobot(val activity: Activity) { } fun click(buttonIndex: Int) { - FalconSpoon.screenshot(activity, "before-click-$buttonIndex") + falconSpoonRule.screenshot(activity, "before-click-$buttonIndex") onView(withText(Matchers.startsWith("$buttonIndex"))).perform(ViewActions.click()) - FalconSpoon.screenshot(activity, "after-click-$buttonIndex") + falconSpoonRule.screenshot(activity, "after-click-$buttonIndex") } fun checkIsPlaying() { - FalconSpoon.screenshot(activity, "isPLaying") + falconSpoonRule.screenshot(activity, "isPLaying") assertTrue(audioService.isMusicActive) } fun checkIsNotPlaying() { - FalconSpoon.screenshot(activity, "checkIsNotPlaying") + falconSpoonRule.screenshot(activity, "checkIsNotPlaying") assertFalse(audioService.isMusicActive) } diff --git a/app/src/debug/google-services.json b/app/src/debug/google-services.json deleted file mode 100644 index f328bcc..0000000 --- a/app/src/debug/google-services.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "project_info": { - "project_number": "345014694643", - "firebase_url": "https://banjen-android-staging.firebaseio.com", - "project_id": "banjen-android-staging", - "storage_bucket": "banjen-android-staging.appspot.com" - }, - "client": [ - { - "client_info": { - "mobilesdk_app_id": "1:345014694643:android:864a4f6704c2ae3e", - "android_client_info": { - "package_name": "com.makingiants.android.banjotuner" - } - }, - "oauth_client": [ - { - "client_id": "345014694643-cm4s0v1kb81agmga61hlou1thsa8ac6v.apps.googleusercontent.com", - "client_type": 3 - } - ], - "api_key": [ - { - "current_key": "AIzaSyCtevdzggMH3aLAHTIpSzJuUWbzWhrQlVQ" - } - ], - "services": { - "analytics_service": { - "status": 1 - }, - "appinvite_service": { - "status": 1, - "other_platform_oauth_client": [] - }, - "ads_service": { - "status": 2 - } - } - } - ], - "configuration_version": "1" -} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 03aadc5..8a8705e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,30 +1,39 @@ + xmlns:tools="http://schemas.android.com/tools" + package="com.makingiants.android.banjotuner" + android:targetSandboxVersion="2" + tools:targetApi="27"> - - + - + + - + - - - + - - - - + + + + + + + + diff --git a/app/src/main/java/com/makingiants/android/banjotuner/EarActivity.kt b/app/src/main/java/com/makingiants/android/banjotuner/EarActivity.kt index 90c5545..66d383b 100644 --- a/app/src/main/java/com/makingiants/android/banjotuner/EarActivity.kt +++ b/app/src/main/java/com/makingiants/android/banjotuner/EarActivity.kt @@ -45,6 +45,7 @@ class EarActivity : AppCompatActivity(), View.OnClickListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + setContentView(R.layout.activity_ear_ads) Fabric.with(Fabric.Builder(this) .kits(Crashlytics()) @@ -53,8 +54,6 @@ class EarActivity : AppCompatActivity(), View.OnClickListener { firebaseAnalytics.logEvent("screenview", Bundle().apply { putString("name", "ear") }) - setContentView(R.layout.activity_ear_ads) - soundsRadioGroup.setOnCheckedChangeListener { radioGroup, i -> (0 until radioGroup.childCount) .map { radioGroup.getChildAt(it) as ToggleButton } @@ -98,7 +97,7 @@ class EarActivity : AppCompatActivity(), View.OnClickListener { } } - fun handleAnimation(button: Button, shouldShow: Boolean = false) { + private fun handleAnimation(button: Button, shouldShow: Boolean = false) { if (shouldShow) { ViewCompat.setElevation(button, elevationPixels) button.startAnimation(clickAnimation) diff --git a/build.gradle b/build.gradle index c7cfb12..c3d3aff 100644 --- a/build.gradle +++ b/build.gradle @@ -4,26 +4,40 @@ buildscript { repositories { jcenter() mavenCentral() + + // Crashlytics maven { url 'https://maven.fabric.io/public' } + + // For Spoon snapshot + maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } + + google() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.3' // because 2.2.3 and 2.3.0+ breaks jacoco support + classpath 'com.android.tools.build:gradle:3.3.0-alpha03' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$deps.kotlin" // Firebase - classpath 'com.google.gms:google-services:3.2.1' - classpath 'io.fabric.tools:gradle:1.25.1' + classpath 'com.google.gms:google-services:4.0.1' + classpath 'io.fabric.tools:gradle:1.25.4' // Extras - classpath 'com.stanfy.spoon:spoon-gradle-plugin:1.2.2' - classpath 'com.github.ben-manes:gradle-versions-plugin:0.17.0' + //classpath 'com.stanfy.spoon:spoon-gradle-plugin:1.2.2' + classpath "com.jaredsburrows:gradle-spoon-plugin:1.4.0" + classpath 'com.github.ben-manes:gradle-versions-plugin:0.20.0' } } allprojects { repositories { jcenter() - maven { url 'https://maven.fabric.io/public' } // Crashlytics - maven { url "https://maven.google.com" } + + // Crashlytics + maven { url 'https://maven.fabric.io/public' } + + // For Spoon snapshot + maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } + + google() } } \ No newline at end of file diff --git a/circle.yml b/circle.yml index 1988541..261785d 100644 --- a/circle.yml +++ b/circle.yml @@ -8,23 +8,20 @@ jobs: JVM_OPTS: -Xmx3200m steps: - checkout + - run: name: Setup environment keys - command: bash scripts/cp-env-to-properties.sh + command: | + echo $BANJEN_GOOGLE_SERVICES > google-services.base64 + base64 -d google-services.base64 > app/google-services.json + - run: name: Instal Dependencies command: bash scripts/install-dependencies.sh - - run: - name: Setup emulator - command: sdkmanager "system-images;android-22;default;armeabi-v7a" && echo "no" | avdmanager create avd -n test -k "system-images;android-22;default;armeabi-v7a" - - run: - name: Launch emulator - command: export LD_LIBRARY_PATH=${ANDROID_HOME}/emulator/lib64:${ANDROID_HOME}/emulator/lib64/qt/lib && - mksdcard -l e 128M mysdcard.img && emulator64-arm -avd test -noaudio -no-boot-anim -no-window -accel on -sdcard mysdcard.img - background: true - run: - name: Run Tests - command: ./gradlew spoonDebugAndroidTest -PdisablePreDex --stacktrace --console=plain + name: Build + command: ./gradlew build -PdisablePreDex --stacktrace --console=plain - store_artifacts: path: app/build/outputs diff --git a/dependencies.gradle b/dependencies.gradle index 51ef44c..a6d410a 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,12 +1,11 @@ ext { - deps = [kotlin : "1.2.40", + deps = [kotlin : "1.2.51", supportLib: "27.1.1", - firebase : "12.0.1", - jacoco : "0.7.9"] + firebase : "15.0.0"] + setup = [targetSdk : 27, - minSdk : 14, - buildTools: "27.0.3"] + minSdk : 14] } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 6149bf6..213dd7f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Apr 25 11:50:48 BRT 2018 +#Mon Jul 23 19:47:31 COT 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-all.zip diff --git a/scripts/cp-env-to-properties.sh b/scripts/cp-env-to-properties.sh deleted file mode 100755 index 20dbf8d..0000000 --- a/scripts/cp-env-to-properties.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash -# -# Copy env variables to app module gradle properties file -# - -PROPERTIES_FILE_PATH=gradle.properties - -set +x // dont print the next lines on run script - -printenv | tr ' ' '\n' > $PROPERTIES_FILE_PATH - -set -x