diff --git a/android/app/build.gradle b/android/app/build.gradle index 683fa0ca8e..d16064aab1 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -5,8 +5,10 @@ apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.grad import com.android.build.OutputFile /** - * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets - * and bundleReleaseJsAndAssets). + * The react.gradle file registers a task for each build variant: + * - bundlePrJsAndAssets + * - bundleDebugJsAndAssets + * - bundleReleaseJsAndAssets * These basically call `react-native bundle` with the correct arguments during the Android build * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the * bundle directly from the development server. Below you can see all the possible configurations @@ -74,8 +76,9 @@ import com.android.build.OutputFile * ] */ project.ext.react = [ - nodeExecutableAndArgs: ["node", "--max-old-space-size=8192"], - entryFile: "index.android.js" + nodeExecutableAndArgs: ["node", "--max-old-space-size=8192"], + entryFile: "index.android.js", + bundleInPr: true, ] apply from: "../../node_modules/react-native/react.gradle" @@ -203,6 +206,13 @@ android { proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" signingConfig signingConfigs.release } + pr { + initWith release + applicationIdSuffix ".pr" + versionNameSuffix ".pr" + resValue "string", "app_name", "Status PR" + matchingFallbacks = ["debug", "release"] + } } // applicationVariants are e.g. debug, release applicationVariants.all { variant -> diff --git a/android/app/src/debug/res/values/strings.xml b/android/app/src/debug/res/values/strings.xml index fd27483b60..c7db857287 100644 --- a/android/app/src/debug/res/values/strings.xml +++ b/android/app/src/debug/res/values/strings.xml @@ -1,3 +1,3 @@ Status Debug - \ No newline at end of file + diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 1a7dca9247..16d83f115d 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -1,7 +1,6 @@ - Status Your phone appears to be ROOTED, by pressing CONTINUE you understand and accept the risks in using this software. Continue Exit status-im - \ No newline at end of file + diff --git a/android/app/src/pr/AndroidManifest.xml b/android/app/src/pr/AndroidManifest.xml new file mode 100644 index 0000000000..daa2f037e6 --- /dev/null +++ b/android/app/src/pr/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/android/app/src/pr/google-services.json b/android/app/src/pr/google-services.json new file mode 100644 index 0000000000..df831f5356 --- /dev/null +++ b/android/app/src/pr/google-services.json @@ -0,0 +1,42 @@ +{ + "project_info": { + "project_number": "854811651919", + "firebase_url": "https://status-react-app.firebaseio.com", + "project_id": "status-react-app", + "storage_bucket": "status-react-app.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:854811651919:android:11ee7444ded8a00a", + "android_client_info": { + "package_name": "im.status.ethereum.pr" + } + }, + "oauth_client": [ + { + "client_id": "854811651919-gua52csicclb5p9gr4eeu33ukk0aaphj.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAOF4W1j8GYeXzzVKRfNKlXywD6bx0rJtQ" + } + ], + "services": { + "analytics_service": { + "status": 1 + }, + "appinvite_service": { + "status": 1, + "other_platform_oauth_client": [] + }, + "ads_service": { + "status": 2 + } + } + } + ], + "configuration_version": "1" +} diff --git a/android/app/src/pr/res/values/strings.xml b/android/app/src/pr/res/values/strings.xml new file mode 100644 index 0000000000..5bc6dcce61 --- /dev/null +++ b/android/app/src/pr/res/values/strings.xml @@ -0,0 +1,3 @@ + + Status PR + diff --git a/android/app/src/release/res/values/strings.xml b/android/app/src/release/res/values/strings.xml new file mode 100644 index 0000000000..917ca04be8 --- /dev/null +++ b/android/app/src/release/res/values/strings.xml @@ -0,0 +1,3 @@ + + Status + diff --git a/ci/android.groovy b/ci/android.groovy index 1395a46e31..cf61713939 100644 --- a/ci/android.groovy +++ b/ci/android.groovy @@ -3,9 +3,16 @@ cmn = load 'ci/common.groovy' def bundle(type = 'nightly') { /* Disable Gradle Daemon https://stackoverflow.com/questions/38710327/jenkins-builds-fail-using-the-gradle-daemon */ def gradleOpt = "-PbuildUrl='${currentBuild.absoluteUrl}' -Dorg.gradle.daemon=false " - if (type == 'release') { + def target = "release" + + if (type in ['pr', 'e2e']) { + /* PR builds shouldn't replace normal releases */ + target = 'pr' + } else if (type == 'release') { gradleOpt += "-PreleaseVersion='${cmn.version()}'" } + env.APK_PATH = "android/app/build/outputs/apk/${target}/app-${target}.apk" + dir('android') { withCredentials([ string( @@ -18,11 +25,11 @@ def bundle(type = 'nightly') { passwordVariable: 'STATUS_RELEASE_KEY_PASSWORD' ) ]) { - sh "./gradlew assembleRelease ${gradleOpt}" + sh "./gradlew assemble${target.capitalize()} ${gradleOpt}" } } def pkg = cmn.pkgFilename(type, 'apk') - sh "cp android/app/build/outputs/apk/release/app-release.apk ${pkg}" + sh "cp ${env.APK_PATH} ${pkg}" return pkg } diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 925ff3d5d5..aa03023721 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -226,12 +226,15 @@ end platform :android do + # Optional env variables + APK_PATH = ENV["APK_PATH"] || "android/app/build/outputs/apk/release/app-release.apk" + desc "Deploy a new internal build to Google Play" desc "expects GOOGLE_PLAY_JSON_KEY environment variable" lane :nightly do upload_to_play_store( track: "internal", - apk: "android/app/build/outputs/apk/release/app-release.apk", + apk: APK_PATH, json_key_data: ENV["GOOGLE_PLAY_JSON_KEY"] ) @@ -242,7 +245,7 @@ platform :android do lane :release do upload_to_play_store( track: "alpha", - apk: "android/app/build/outputs/apk/release/app-release.apk", + apk: APK_PATH, json_key_data: ENV["GOOGLE_PLAY_JSON_KEY"] ) end @@ -266,7 +269,7 @@ platform :android do desc "---" desc "Output: writes `fastlane/diawi.out` file url of the uploded file" lane :upload_diawi do - upload_to_diawi("android/app/build/outputs/apk/release/app-release.apk") + upload_to_diawi(APK_PATH) end desc "`fastlane android saucelabs` - upload .apk to sauce labs" @@ -277,7 +280,7 @@ platform :android do desc "will fails if file isn't there" lane :saucelabs do upload_to_saucelabs( - "android/app/build/outputs/apk/release/app-release.apk" + APK_PATH ) end end