From e56bf3aae9fd40264f0d4dca95c2df604b0685e7 Mon Sep 17 00:00:00 2001 From: Salakar Date: Sat, 25 Aug 2018 13:38:05 +0100 Subject: [PATCH] add tests android app --- tests/android/.editorconfig | 10 ++ tests/android/app/BUCK | 66 +++++++ tests/android/app/build.gradle | 160 +++++++++++++++++ tests/android/app/google-services.json | 152 ++++++++++++++++ tests/android/app/keystore.jks | Bin 0 -> 2057 bytes tests/android/app/proguard-rules.pro | 63 +++++++ .../java/com/testing/DetoxTest.java | 24 +++ .../android/app/src/main/AndroidManifest.xml | 111 ++++++++++++ .../main/java/com/testing/MainActivity.java | 84 +++++++++ .../java/com/testing/MainApplication.java | 76 ++++++++ .../main/res/drawable-hdpi/ic_launcher.png | Bin 0 -> 5271 bytes .../main/res/drawable-mdpi/ic_launcher.png | Bin 0 -> 3055 bytes .../main/res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 7309 bytes .../main/res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 11703 bytes .../main/res/drawable-xxxhdpi/ic_launcher.png | Bin 0 -> 16380 bytes .../app/src/main/res/values/strings.xml | 3 + .../app/src/main/res/values/styles.xml | 8 + tests/android/build.gradle | 53 ++++++ tests/android/gradle.properties | 18 ++ .../android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 52266 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + tests/android/gradlew | 164 ++++++++++++++++++ tests/android/gradlew.bat | 90 ++++++++++ tests/android/keystores/BUCK | 8 + .../keystores/debug.keystore.properties | 4 + tests/android/settings.gradle | 11 ++ 26 files changed, 1111 insertions(+) create mode 100644 tests/android/.editorconfig create mode 100755 tests/android/app/BUCK create mode 100755 tests/android/app/build.gradle create mode 100644 tests/android/app/google-services.json create mode 100755 tests/android/app/keystore.jks create mode 100755 tests/android/app/proguard-rules.pro create mode 100755 tests/android/app/src/androidTest/java/com/testing/DetoxTest.java create mode 100755 tests/android/app/src/main/AndroidManifest.xml create mode 100755 tests/android/app/src/main/java/com/testing/MainActivity.java create mode 100755 tests/android/app/src/main/java/com/testing/MainApplication.java create mode 100755 tests/android/app/src/main/res/drawable-hdpi/ic_launcher.png create mode 100755 tests/android/app/src/main/res/drawable-mdpi/ic_launcher.png create mode 100755 tests/android/app/src/main/res/drawable-xhdpi/ic_launcher.png create mode 100755 tests/android/app/src/main/res/drawable-xxhdpi/ic_launcher.png create mode 100755 tests/android/app/src/main/res/drawable-xxxhdpi/ic_launcher.png create mode 100755 tests/android/app/src/main/res/values/strings.xml create mode 100755 tests/android/app/src/main/res/values/styles.xml create mode 100755 tests/android/build.gradle create mode 100755 tests/android/gradle.properties create mode 100644 tests/android/gradle/wrapper/gradle-wrapper.jar create mode 100755 tests/android/gradle/wrapper/gradle-wrapper.properties create mode 100755 tests/android/gradlew create mode 100755 tests/android/gradlew.bat create mode 100755 tests/android/keystores/BUCK create mode 100755 tests/android/keystores/debug.keystore.properties create mode 100755 tests/android/settings.gradle diff --git a/tests/android/.editorconfig b/tests/android/.editorconfig new file mode 100644 index 00000000..0f099897 --- /dev/null +++ b/tests/android/.editorconfig @@ -0,0 +1,10 @@ +# editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/tests/android/app/BUCK b/tests/android/app/BUCK new file mode 100755 index 00000000..d73aebd8 --- /dev/null +++ b/tests/android/app/BUCK @@ -0,0 +1,66 @@ +import re + +# To learn about Buck see [Docs](https://buckbuild.com/). +# To run your application with Buck: +# - install Buck +# - `npm start` - to start the packager +# - `cd android` +# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US` +# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck +# - `buck install -r android/app` - compile, install and run application +# + +lib_deps = [] +for jarfile in glob(['libs/*.jar']): + name = 'jars__' + re.sub(r'^.*/([^/]+)\.jar$', r'\1', jarfile) + lib_deps.append(':' + name) + prebuilt_jar( + name = name, + binary_jar = jarfile, + ) + +for aarfile in glob(['libs/*.aar']): + name = 'aars__' + re.sub(r'^.*/([^/]+)\.aar$', r'\1', aarfile) + lib_deps.append(':' + name) + android_prebuilt_aar( + name = name, + aar = aarfile, + ) + +android_library( + name = 'all-libs', + exported_deps = lib_deps +) + +android_library( + name = 'app-code', + srcs = glob([ + 'src/main/java/**/*.java', + ]), + deps = [ + ':all-libs', + ':build_config', + ':res', + ], +) + +android_build_config( + name = 'build_config', + package = 'com.example', +) + +android_resource( + name = 'res', + res = 'src/main/res', + package = 'com.example', +) + +android_binary( + name = 'app', + package_type = 'debug', + manifest = 'src/main/AndroidManifest.xml', + keystore = '//android/keystores:debug', + deps = [ + ':app-code', + ], +) diff --git a/tests/android/app/build.gradle b/tests/android/app/build.gradle new file mode 100755 index 00000000..383fd539 --- /dev/null +++ b/tests/android/app/build.gradle @@ -0,0 +1,160 @@ +apply plugin: "com.android.application" +apply plugin: "com.google.firebase.firebase-perf" +apply plugin: 'io.fabric' + +import com.android.build.OutputFile + +project.ext.react = [ + entryFile: "index.js" +] + +apply from: "../../node_modules/react-native/react.gradle" + +def enableSeparateBuildPerCPUArchitecture = false +def enableProguardInReleaseBuilds = false + +android { + compileSdkVersion 27 +// buildToolsVersion '27.0.2' + + defaultConfig { + applicationId "com.testing" + minSdkVersion 18 + targetSdkVersion 27 + versionCode 1 + versionName "1.0" + ndk { + abiFilters "armeabi-v7a", "x86" + } + + testBuildType System.getProperty('testBuildType', 'debug') + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + missingDimensionStrategy "minReactNative", "minReactNative46" + multiDexEnabled true + } + splits { + abi { + reset() + enable enableSeparateBuildPerCPUArchitecture + universalApk false // If true, also generate a universal APK + include "armeabi-v7a", "x86" + } + } + signingConfigs { + release { + storeFile file("keystore.jks") + storePassword "12345678" + keyAlias "key0" + keyPassword "12345678" + } + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" + signingConfig signingConfigs.release + } + } + // applicationVariants are e.g. debug, release + applicationVariants.all { variant -> + variant.outputs.each { output -> + // For each separate APK per architecture, set a unique version code as described here: + // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits + def versionCodes = ["armeabi-v7a": 1, "x86": 2] + def abi = output.getFilter(OutputFile.ABI) + if (abi != null) { // null for the universal-debug, universal-release variants + output.versionCodeOverride = + versionCodes.get(abi) * 1048576 + defaultConfig.versionCode + } + } + } + + packagingOptions { + exclude 'META-INF/DEPENDENCIES' + exclude 'META-INF/NOTICE' + exclude 'META-INF/LICENSE' + exclude 'META-INF/LICENSE.txt' + exclude 'META-INF/NOTICE.txt' + } +} + +dependencies { + implementation "com.facebook.react:react-native:+" + implementation fileTree(dir: "libs", include: ["*.jar"]) + + + + /* ---------------------------- + * REACT NATIVE FIREBASE + * ---------------------------- */ + + // Library as defined in settings.gradle + implementation project(':react-native-firebase') + // Required dependencies + //noinspection GradleCompatible + implementation "com.google.firebase:firebase-core:16.0.3" + implementation "com.google.android.gms:play-services-base:15.0.1" + + /* ------------------------- + * OPTIONAL FIREBASE SDKS + * ------------------------- */ + + // Ads + implementation('com.google.firebase:firebase-ads:15.0.1') { + // exclude `customtabs` as the support lib version is out of date + // we manually add it as a dependency below with a custom version + exclude group: 'com.android.support', module: 'customtabs' + } + // Authentication + implementation "com.google.firebase:firebase-auth:16.0.3" + // Performance Monitoring + implementation "com.google.firebase:firebase-perf:16.1.0" + // Remote Config + implementation "com.google.firebase:firebase-config:16.0.0" + // Cloud Storage + implementation "com.google.firebase:firebase-storage:16.0.1" + // Invites + implementation "com.google.firebase:firebase-invites:16.0.3" + // Real-time Database + implementation "com.google.firebase:firebase-database:16.0.1" + // Cloud Functions + implementation "com.google.firebase:firebase-functions:16.1.0" + // Cloud Firestore + implementation "com.google.firebase:firebase-firestore:17.1.0" + // Cloud Messaging / FCM + implementation "com.google.firebase:firebase-messaging:17.3.0" + // Crashlytics + implementation('com.crashlytics.sdk.android:crashlytics:2.9.3@aar') { + transitive = true + } + + /* -------------------------------- + * OPTIONAL ANDROID SUPPORT LIBS + * -------------------------------- */ + + // For Firebase Ads + implementation "com.android.support:customtabs:27.1.1" + // For React Native Firebase Notifications + implementation "com.android.support:appcompat-v7:27.1.1" + implementation 'com.android.support:support-annotations:27.1.1' + + /* ------------------------ + * TESTING SDKS/LIBRARIES + * ------------------------ */ + implementation(project(':jet')) { + transitive = false + } + androidTestImplementation(project(path: ":detox")) + androidTestImplementation 'junit:junit:4.12' + androidTestImplementation 'com.android.support.test:runner:1.0.2' + androidTestImplementation 'com.android.support.test:rules:1.0.2' +} + +// Run this once to be able to run the application with BUCK +// puts all compile dependencies into folder libs for BUCK to use +task copyDownloadableDepsToLibs(type: Copy) { + from configurations.compile + into 'libs' +} + +apply plugin: 'com.google.gms.google-services' diff --git a/tests/android/app/google-services.json b/tests/android/app/google-services.json new file mode 100644 index 00000000..4828b6f8 --- /dev/null +++ b/tests/android/app/google-services.json @@ -0,0 +1,152 @@ +{ + "project_info": { + "project_number": "305229645282", + "firebase_url": "https://rnfirebase-b9ad4.firebaseio.com", + "project_id": "rnfirebase-b9ad4", + "storage_bucket": "rnfirebase-b9ad4.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:305229645282:android:efe37851d57e1d05", + "android_client_info": { + "package_name": "com.reactnativefirebasedemo" + } + }, + "oauth_client": [ + { + "client_id": "305229645282-5fgq5kq024eqpvji5o0i7jq7q7bnnpl9.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "com.reactnativefirebasedemo", + "certificate_hash": "1f92c8aab0a091a3aaccfa144bf402bb97273494" + } + }, + { + "client_id": "305229645282-cvp6v0iogjjuuvi5g2dcb3lrr9n884a3.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "com.reactnativefirebasedemo", + "certificate_hash": "859f2afac694e21d26ca67e750c9875107c2e755" + } + }, + { + "client_id": "305229645282-j8ij0jev9ut24odmlk9i215pas808ugn.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyCzbBYFyX8d6VdSu7T4s10IWYbPc-dguwM" + } + ], + "services": { + "analytics_service": { + "status": 1 + }, + "appinvite_service": { + "status": 2, + "other_platform_oauth_client": [ + { + "client_id": "305229645282-t29pn6o2t7se1f7rvrfsll4r0pvd6fb6.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "com.invertase.RNFirebaseTests" + } + }, + { + "client_id": "305229645282-j8ij0jev9ut24odmlk9i215pas808ugn.apps.googleusercontent.com", + "client_type": 3 + } + ] + }, + "ads_service": { + "status": 2 + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:305229645282:android:c9de0f8cb930daf5", + "android_client_info": { + "package_name": "com.reactnativefirebaseexamples" + } + }, + "oauth_client": [ + { + "client_id": "305229645282-hu7tr12kgn5lfhq82l51b1sh66aaue5f.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "com.reactnativefirebaseexamples", + "certificate_hash": "1f92c8aab0a091a3aaccfa144bf402bb97273494" + } + }, + { + "client_id": "305229645282-j8ij0jev9ut24odmlk9i215pas808ugn.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyCzbBYFyX8d6VdSu7T4s10IWYbPc-dguwM" + } + ], + "services": { + "analytics_service": { + "status": 1 + }, + "appinvite_service": { + "status": 2, + "other_platform_oauth_client": [ + { + "client_id": "305229645282-t29pn6o2t7se1f7rvrfsll4r0pvd6fb6.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "com.invertase.RNFirebaseTests" + } + }, + { + "client_id": "305229645282-j8ij0jev9ut24odmlk9i215pas808ugn.apps.googleusercontent.com", + "client_type": 3 + } + ] + }, + "ads_service": { + "status": 2 + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:305229645282:android:af36d4d29a83e04c", + "android_client_info": { + "package_name": "com.testing" + } + }, + "oauth_client": [ + { + "client_id": "305229645282-j8ij0jev9ut24odmlk9i215pas808ugn.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyCzbBYFyX8d6VdSu7T4s10IWYbPc-dguwM" + } + ], + "services": { + "analytics_service": { + "status": 1 + }, + "appinvite_service": { + "status": 1, + "other_platform_oauth_client": [] + }, + "ads_service": { + "status": 2 + } + } + } + ], + "configuration_version": "1" +} diff --git a/tests/android/app/keystore.jks b/tests/android/app/keystore.jks new file mode 100755 index 0000000000000000000000000000000000000000..6be9060611fbc37fa30d2cfef167ddb6903661e6 GIT binary patch literal 2057 zcmV+k2=@2>?f&fm0006200031000311Z!n^FaQ7nU8Gr$(f|Mj0Wg9D{V)y&3M&Qy z1OX}n5di@O00e>r>4SM=UxkU`nR%&<7;yHJ4kyrJ`$Mu1edvQP3VO=Y6BxK}T1H@@ z5mkj87Yh+t(57*(LQmLEK?O%iqHO%{_t;nBr5U zw}bpw_ti`>$%FWBuUGJE5ynEw%X41rg6FCDA6DjCND?OQ1 zCMt!Exl_Gc{HE}2Ux|(O(H0lg7~aU~Js#zKmmh-)7Pfoln+xBQ&}m{hh}+^DaBFA@qdhjLvTJxYBK0sxi4zr7IR& z_lTstLnARJyjrQa4C}MqpHr}qp&{bPbTHKON%rx7lSKM7GE2Md7@n@VN@v>C)nj)dMQ^Wtj05`IQ9;m`QOa91;MdIfQAB)A1W!od*5 zpYzi7<*RoE2{h7qM7rShBDd^|GE`R!Ny+kTf65Pcwv%9)cH3vG~Xas`3Dcp}oFdOQK+654A zfn!_L0-q-3W0yg!wki~g7?vB*nc@NXw-w%k16kkn+lCIkhM5nWe=jGBlNuP>Q5qKt ziRx@@*16t0){4G)dzUPcXoR1omF(yRhqhX9YBg(ddUp=erUkQ|>;Rs6qYab|n0xa< z{gn1^zW=u4?GW;5%AUdjSvP*prwVLCE@H8C3OoDlRf0 zxCqZy$E5zD09Lp;kK70pNYI%RCa+#;6cIR8$_Z2-8Cy_!n7O>l4_o_EDKJ$!Q+sVi zbgSgd$YOwKlTq)h*$}Yi^)B@Wg7uGWG(!Jd{WV0DYNML2VKF#M7I5okgUxZ_%OW|( zAE%3(PW+$B_sDl3#6YGqKpqbU!Q&0)dyp$0Nqx3FwwI2Jqwu}63&q)yNF>M8Fbw7r zS@5*H@rbR&)eSOV0Vx1uF^Dj{+F#^oQ(>ut?!^{$@eRG@0A{PAE~i}tUhUE3K!VPT zP2TMEb;x#xk@f4YOpx=x?vQ)CV0Srb*Sh3AsD0}8MUjM}mCp`lGb`d{ z56Pg%j$}Zq6a<4L*^Y2o2DQd{_&2>pyd`7wqG>Dq3aGwI<{eMGVP;Q%W@8}#T_Wy} zwE8xBzvh?xC`&oEVv*q#5C)E>JXHVy00966SS~d%IRF3x!!UvZzc7LUr=SA@0RjR9 za=$yzFbxI?Duzgg_YDC73k3i$5HSug3Ytf&n5h4F(A+hDe6@4FLfG z1potr0S^E$f&mHwf&l>lm+613uazt4UMqek9n-AFtN05Lx1#XHulXhJDd0v{bdgu6 z!Pns)zCjVih=QvbI3KLEY|0q#hc3LgXWx-9bBkp1)Crq16tdqi;ip0C*7s>|PG9p^l3(i_fA21yT163Uk1QrAoT=Ki2FC#-m*A!ovR{B3dGUy9) zFbxI?Duzgg_YDC73k3iJf&l>lkNLBEsyIIsg*Y&sD?V$* zF`u0@%K%B%MX7nt!HFef04g5~Z7WhmrsWJ6>0}KQPM4nXCo06iHl4>*pF_wMSWq_} zMQl}+)fks1QRx2_ANU%Cb6kwaJnFC1X@Kx>kkC)K;2bK=L*%Wijy8>x^FQ+h3H6B3 n@Kkdhu~3^J$$*!+GIf1>A9b=S&WyI9iDjwko@kf;T%}hsq(igk literal 0 HcmV?d00001 diff --git a/tests/android/app/proguard-rules.pro b/tests/android/app/proguard-rules.pro new file mode 100755 index 00000000..9852871b --- /dev/null +++ b/tests/android/app/proguard-rules.pro @@ -0,0 +1,63 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Disabling obfuscation is useful if you collect stack traces from production crashes +# (unless you are using a system that supports de-obfuscate the stack traces). +-dontobfuscate + +# React Native + +# Keep our interfaces so they can be used by other ProGuard rules. +# See http://sourceforge.net/p/proguard/bugs/466/ +-keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip +-keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters + +# Do not strip any method/class that is annotated with @DoNotStrip +-keep @com.facebook.proguard.annotations.DoNotStrip class * +-keepclassmembers class * { + @com.facebook.proguard.annotations.DoNotStrip *; +} + +-keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * { + void set*(***); + *** get*(); +} + +-keep class * extends com.facebook.react.bridge.JavaScriptModule { *; } +-keep class * extends com.facebook.react.bridge.NativeModule { *; } +-keepclassmembers,includedescriptorclasses class * { native ; } +-keepclassmembers class * { @com.facebook.react.uimanager.UIProp ; } +-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactProp ; } +-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactPropGroup ; } + +-dontwarn com.facebook.react.** + +# okhttp + +-keepattributes Signature +-keepattributes *Annotation* +-keep class okhttp3.** { *; } +-keep interface okhttp3.** { *; } +-dontwarn okhttp3.** + +# okio + +-keep class sun.misc.Unsafe { *; } +-dontwarn java.nio.file.* +-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement +-dontwarn okio.** diff --git a/tests/android/app/src/androidTest/java/com/testing/DetoxTest.java b/tests/android/app/src/androidTest/java/com/testing/DetoxTest.java new file mode 100755 index 00000000..74c23acf --- /dev/null +++ b/tests/android/app/src/androidTest/java/com/testing/DetoxTest.java @@ -0,0 +1,24 @@ +package com.testing; + +import android.support.test.filters.LargeTest; +import android.support.test.rule.ActivityTestRule; +import android.support.test.runner.AndroidJUnit4; + +import com.wix.detox.Detox; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; + +@RunWith(AndroidJUnit4.class) +@LargeTest +public class DetoxTest { + + @Rule + public ActivityTestRule mActivityRule = new ActivityTestRule<>(MainActivity.class, false, false); + + @Test + public void runDetoxTests() throws InterruptedException { + Detox.runTests(mActivityRule); + } +} diff --git a/tests/android/app/src/main/AndroidManifest.xml b/tests/android/app/src/main/AndroidManifest.xml new file mode 100755 index 00000000..61b4e13e --- /dev/null +++ b/tests/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/android/app/src/main/java/com/testing/MainActivity.java b/tests/android/app/src/main/java/com/testing/MainActivity.java new file mode 100755 index 00000000..b0329405 --- /dev/null +++ b/tests/android/app/src/main/java/com/testing/MainActivity.java @@ -0,0 +1,84 @@ +package com.testing; + +import android.content.Intent; +import android.content.pm.PackageManager; +import android.net.Uri; +import android.os.Build; +import android.os.Bundle; +import android.provider.Settings; + +import com.facebook.react.ReactActivity; + +public class MainActivity extends ReactActivity { + + public static final int PERMISSION_REQ_CODE = 1234; + public static final int OVERLAY_PERMISSION_REQ_CODE = 1235; + + String[] perms = { + "android.permission.READ_EXTERNAL_STORAGE", + "android.permission.WRITE_EXTERNAL_STORAGE" + }; + + /** + * Returns the name of the main component registered from JavaScript. + * This is used to schedule rendering of the component. + */ + @Override + protected String getMainComponentName() { + return "testing"; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + checkWindowPerms(); + // ATTENTION: This was auto-generated to handle app links. + Intent appLinkIntent = getIntent(); + String appLinkAction = appLinkIntent.getAction(); + Uri appLinkData = appLinkIntent.getData(); + } + + public void checkWindowPerms() { + // Checking if device version > 22 and we need to use new permission model + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) { + // Checking if we can draw window overlay + if (!Settings.canDrawOverlays(this)) { + // Requesting permission for window overlay(needed for all react-native apps) + Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, + Uri.parse("package:" + getPackageName())); + startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE); + } + for (String perm : perms) { + // Checking each permission and if denied then requesting permissions + if (checkSelfPermission(perm) == PackageManager.PERMISSION_DENIED) { + requestPermissions(perms, PERMISSION_REQ_CODE); + break; + } + } + } + } + + // Window overlay permission intent result + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (requestCode == OVERLAY_PERMISSION_REQ_CODE) { + checkWindowPerms(); + } + } + + // Permission results + @Override + public void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults) { + switch (permsRequestCode) { + case PERMISSION_REQ_CODE: + // example how to get result of permissions requests (there can be more then one permission dialog) + // boolean readAccepted = grantResults[0]==PackageManager.PERMISSION_GRANTED; + // boolean writeAccepted = grantResults[1]==PackageManager.PERMISSION_GRANTED; + // checking permissions to prevent situation when user denied some permission + checkWindowPerms(); + break; + + } + } +} diff --git a/tests/android/app/src/main/java/com/testing/MainApplication.java b/tests/android/app/src/main/java/com/testing/MainApplication.java new file mode 100755 index 00000000..b2bf8f1f --- /dev/null +++ b/tests/android/app/src/main/java/com/testing/MainApplication.java @@ -0,0 +1,76 @@ +package com.testing; + +import android.app.Application; + +import com.facebook.react.ReactApplication; +import io.salakar.bridge.RNBridgePackage; +import com.facebook.react.ReactNativeHost; +import com.facebook.react.ReactPackage; +import com.facebook.react.shell.MainReactPackage; +import com.facebook.soloader.SoLoader; + +import io.invertase.firebase.RNFirebasePackage; +import io.invertase.firebase.admob.RNFirebaseAdMobPackage; +import io.invertase.firebase.analytics.RNFirebaseAnalyticsPackage; +import io.invertase.firebase.auth.RNFirebaseAuthPackage; +import io.invertase.firebase.config.RNFirebaseRemoteConfigPackage; +import io.invertase.firebase.database.RNFirebaseDatabasePackage; +import io.invertase.firebase.fabric.crashlytics.RNFirebaseCrashlyticsPackage; +import io.invertase.firebase.firestore.RNFirebaseFirestorePackage; +import io.invertase.firebase.functions.RNFirebaseFunctionsPackage; +import io.invertase.firebase.instanceid.RNFirebaseInstanceIdPackage; +import io.invertase.firebase.invites.RNFirebaseInvitesPackage; +//import io.invertase.firebase.links.RNFirebaseLinksPackage; +import io.invertase.firebase.messaging.RNFirebaseMessagingPackage; +import io.invertase.firebase.notifications.RNFirebaseNotificationsPackage; +import io.invertase.firebase.perf.RNFirebasePerformancePackage; +import io.invertase.firebase.storage.RNFirebaseStoragePackage; + + +import java.util.Arrays; +import java.util.List; + +public class MainApplication extends Application implements ReactApplication { + private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { + @Override + public boolean getUseDeveloperSupport() { + return BuildConfig.DEBUG; + } + + @Override + protected List getPackages() { + return Arrays.asList( + new MainReactPackage(), + new RNBridgePackage(), + new RNFirebasePackage(), + new RNFirebaseAdMobPackage(), + new RNFirebaseAnalyticsPackage(), + new RNFirebaseAuthPackage(), + new RNFirebaseRemoteConfigPackage(), + new RNFirebaseCrashlyticsPackage(), + new RNFirebaseDatabasePackage(), + new RNFirebaseFirestorePackage(), + new RNFirebaseFunctionsPackage(), + new RNFirebaseInstanceIdPackage(), + new RNFirebaseInvitesPackage(), +// new RNFirebaseLinksPackage(), + new RNFirebaseMessagingPackage(), + new RNFirebaseNotificationsPackage(), + new RNFirebasePerformancePackage(), + new RNFirebaseStoragePackage() + ); + } + }; + + @Override + public ReactNativeHost getReactNativeHost() { + return mReactNativeHost; + } + + @Override + public void onCreate() { + super.onCreate(); + SoLoader.init(this, /* native exopackage */ false); + } + +} diff --git a/tests/android/app/src/main/res/drawable-hdpi/ic_launcher.png b/tests/android/app/src/main/res/drawable-hdpi/ic_launcher.png new file mode 100755 index 0000000000000000000000000000000000000000..7164396bb30967ba6c18de6d7c96de542b3fee69 GIT binary patch literal 5271 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 z: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 WS3<-%|H&7S4Umyg6t5LE4*oBP9HF)V literal 0 HcmV?d00001 diff --git a/tests/android/app/src/main/res/drawable-xxxhdpi/ic_launcher.png b/tests/android/app/src/main/res/drawable-xxxhdpi/ic_launcher.png new file mode 100755 index 0000000000000000000000000000000000000000..e268634b4e9db4d446170e11c83ae2e24830d58c GIT binary patch literal 16380 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 M{gD=`643SkAHwIsrT_o{ literal 0 HcmV?d00001 diff --git a/tests/android/app/src/main/res/values/strings.xml b/tests/android/app/src/main/res/values/strings.xml new file mode 100755 index 00000000..7fec7c14 --- /dev/null +++ b/tests/android/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + RNF Test + diff --git a/tests/android/app/src/main/res/values/styles.xml b/tests/android/app/src/main/res/values/styles.xml new file mode 100755 index 00000000..319eb0ca --- /dev/null +++ b/tests/android/app/src/main/res/values/styles.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/tests/android/build.gradle b/tests/android/build.gradle new file mode 100755 index 00000000..d8439212 --- /dev/null +++ b/tests/android/build.gradle @@ -0,0 +1,53 @@ +buildscript { + repositories { + google() + jcenter() + maven { + url 'https://maven.fabric.io/public' + } + } + dependencies { + classpath 'com.android.tools.build:gradle:3.1.4' + classpath 'com.google.gms:google-services:4.0.1' + classpath 'com.google.firebase:firebase-plugins:1.1.5' + classpath 'io.fabric.tools:gradle:1.25.4' + } +} + +subprojects { + task listAllDependencies(type: DependencyReportTask) {} +} + +allprojects { + repositories { + mavenLocal() + google() + jcenter() + maven { + url "$rootDir/../node_modules/react-native/android" + } + } +} + +subprojects { + ext { + compileSdk = 27 + buildTools = "27.0.3" + minSdk = 18 + targetSdk = 26 + } + + afterEvaluate { project -> + if (!project.name.equalsIgnoreCase("app") + && project.hasProperty("android")) { + android { + compileSdkVersion compileSdk + buildToolsVersion buildTools + defaultConfig { + minSdkVersion minSdk + targetSdkVersion targetSdk + } + } + } + } +} diff --git a/tests/android/gradle.properties b/tests/android/gradle.properties new file mode 100755 index 00000000..e560a323 --- /dev/null +++ b/tests/android/gradle.properties @@ -0,0 +1,18 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx10248m -XX:MaxPermSize=256m +org.gradle.daemon=true +org.gradle.parallel=true +org.gradle.configureondemand=true +org.gradle.jvmargs=-Xmx3g -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +android.useDeprecatedNdk=true diff --git a/tests/android/gradle/wrapper/gradle-wrapper.jar b/tests/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..b5166dad4d90021f6a0b45268c0755719f1d5cd4 GIT binary patch literal 52266 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 z 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 literal 0 HcmV?d00001 diff --git a/tests/android/gradle/wrapper/gradle-wrapper.properties b/tests/android/gradle/wrapper/gradle-wrapper.properties new file mode 100755 index 00000000..7d98137c --- /dev/null +++ b/tests/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Sat Sep 09 20:32:40 IDT 2017 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip diff --git a/tests/android/gradlew b/tests/android/gradlew new file mode 100755 index 00000000..91a7e269 --- /dev/null +++ b/tests/android/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/tests/android/gradlew.bat b/tests/android/gradlew.bat new file mode 100755 index 00000000..8a0b282a --- /dev/null +++ b/tests/android/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/tests/android/keystores/BUCK b/tests/android/keystores/BUCK new file mode 100755 index 00000000..15da20e6 --- /dev/null +++ b/tests/android/keystores/BUCK @@ -0,0 +1,8 @@ +keystore( + name = 'debug', + store = 'debug.keystore', + properties = 'debug.keystore.properties', + visibility = [ + 'PUBLIC', + ], +) diff --git a/tests/android/keystores/debug.keystore.properties b/tests/android/keystores/debug.keystore.properties new file mode 100755 index 00000000..121bfb49 --- /dev/null +++ b/tests/android/keystores/debug.keystore.properties @@ -0,0 +1,4 @@ +key.store=debug.keystore +key.alias=androiddebugkey +key.store.password=android +key.alias.password=android diff --git a/tests/android/settings.gradle b/tests/android/settings.gradle new file mode 100755 index 00000000..c7fae7ff --- /dev/null +++ b/tests/android/settings.gradle @@ -0,0 +1,11 @@ +rootProject.name = 'RNFTests' +include ':jet' +project(':jet').projectDir = new File(rootProject.projectDir, '../node_modules/jet/android') + +include ':react-native-firebase' +project(':react-native-firebase').projectDir = new File(rootProject.projectDir, './../../android') + +include ':app' + +include ':detox' +project(':detox').projectDir = new File(rootProject.projectDir, '../node_modules/detox/android/detox')