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