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