Upgrade react-native to 0.60.5

- Use community net-info, react-native-webview instead of deprecated react-native classes
- Remove react-native-tcp
- Upgrade react-native libs (react-native-camera, react-native-firebase, react-native-mail, react-native-udp, react-native-webview-bridge)
- Do not include `:react-native-android` module explicitly
- Take advantage of RN AutoLinking
- nix: Update Gradle dependencies
This commit is contained in:
Pedro Pombeiro 2019-08-06 18:16:51 +02:00
parent 5db0a58ab8
commit 9feb31bd3b
No known key found for this signature in database
GPG Key ID: C4A24185B2AA48A1
43 changed files with 3760 additions and 10914 deletions

4
.eslintrc.js Normal file
View File

@ -0,0 +1,4 @@
module.exports = {
root: true,
extends: '@react-native-community',
};

View File

@ -20,15 +20,20 @@
# Ignore duplicate module providers # Ignore duplicate module providers
# For RN Apps installed via npm, "Libraries" folder is inside node_modules/react-native but in the source repo it is in the root # For RN Apps installed via npm, "Libraries" folder is inside node_modules/react-native but in the source repo it is in the root
.*/Libraries/react-native/React.js node_modules/react-native/Libraries/react-native/React.js
.*/Libraries/react-native/ReactNative.js .*/Libraries/react-native/ReactNative.js
.*/node_modules/jest-runtime/build/__tests__/.* .*/node_modules/jest-runtime/build/__tests__/.*
; Ignore polyfills ; Ignore polyfills
.*/Libraries/polyfills/.* node_modules/react-native/Libraries/polyfills/.*
; Ignore metro ; These should not be required directly
.*/node_modules/metro/.* ; require from fbjs/lib instead: require('fbjs/lib/warning')
node_modules/warning/.*
; Flow doesn't support platforms
.*/Libraries/Utilities/HMRLoadingView.js
[untyped]
.*/node_modules/@react-native-community/cli/.*/.*
[include] [include]
@ -40,11 +45,31 @@ node_modules/react-native/flow/
esproposal.optional_chaining=enable esproposal.optional_chaining=enable
esproposal.nullish_coalescing=enable esproposal.nullish_coalescing=enable
module.system=haste
esproposal.class_static_fields=enable esproposal.class_static_fields=enable
esproposal.class_instance_fields=enable esproposal.class_instance_fields=enable
module.file_ext=.js
module.file_ext=.json
module.file_ext=.ios.js
module.system=haste
module.system.haste.use_name_reducers=true
# get basename
# get basename
module.system.haste.name_reducers='^\(.*\)\.native$' -> '\1'
module.system.haste.name_reducers='^\(.*\)\.native$' -> '\1'
module.system.haste.paths.blacklist=.*/__tests__/.*
module.system.haste.paths.blacklist=.*/__tests__/.*
module.system.haste.paths.blacklist=.*/__mocks__/.*
module.system.haste.paths.blacklist=.*/__mocks__/.*
module.system.haste.paths.blacklist=<PROJECT_ROOT>/node_modules/react-native/Libraries/Animated/src/polyfills/.*
module.system.haste.paths.whitelist=<PROJECT_ROOT>/node_modules/react-native/Libraries/.*
module.system.haste.paths.whitelist=<PROJECT_ROOT>/node_modules/react-native/Libraries/.*
module.system.haste.paths.whitelist=<PROJECT_ROOT>/node_modules/react-native/RNTester/.*
module.system.haste.paths.whitelist=<PROJECT_ROOT>/node_modules/react-native/IntegrationTests/.*
module.system.haste.paths.blacklist=<PROJECT_ROOT>/node_modules/react-native/Libraries/react-native/react-native-implementation.js
module.system.haste.paths.blacklist=<PROJECT_ROOT>/node_modules/react-native/Libraries/Animated/src/polyfills/.*
experimental.strict_type_args=true experimental.strict_type_args=true
munge_underscores=true munge_underscores=true
@ -67,4 +92,4 @@ suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(<VERSION>\\)? *\\(site=[a-z,_]*
suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy
[version] [version]
^0.92.0 ^0.98.0

4
.gitignore vendored
View File

@ -96,8 +96,8 @@ doo-index.html
Statusgo.framework Statusgo.framework
#ios #ios
ios/Pods /ios/Pods/
ios/StatusIm.xcworkspace /ios/StatusIm.xcworkspace
.ruby-version .ruby-version
status-e2e/ status-e2e/

6
.prettierrc.js Normal file
View File

@ -0,0 +1,6 @@
module.exports = {
bracketSpacing: false,
jsxBracketSameLine: true,
singleQuote: true,
trailingComma: 'all',
};

View File

@ -79,13 +79,15 @@ import com.sun.org.apache.xalan.internal.xsltc.compiler.Copy
project.ext.react = [ project.ext.react = [
nodeExecutableAndArgs: ["node", "--max-old-space-size=16384"], nodeExecutableAndArgs: ["node", "--max-old-space-size=16384"],
entryFile: "index.android.js", entryFile: "index.android.js",
enableHermes: false, // clean and rebuild if changing
bundleInPr: true, bundleInPr: true,
inputExcludes: ["android/**", "ios/**", "react-native/**", "src/**", "test/**"] inputExcludes: ["android/**", "ios/**", "react-native/**", "src/**", "test/**"]
] ]
configurations.all { // NOTE: Uncomment if building RN from a fork
exclude group: 'com.facebook.react', module: 'react-native' // configurations.all {
} // exclude group: 'com.facebook.react', module: 'react-native'
// }
apply from: "../../node_modules/react-native/react.gradle" apply from: "../../node_modules/react-native/react.gradle"
@ -104,6 +106,28 @@ def enableSeparateBuildPerCPUArchitecture = false
*/ */
def enableProguardInReleaseBuilds = false def enableProguardInReleaseBuilds = false
/**
* The preferred build flavor of JavaScriptCore.
*
* For example, to use the international variant, you can use:
* `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
*
* The international variant includes ICU i18n library and necessary data
* allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
* give correct results when using with locales other than en-US. Note that
* this variant is about 6MiB larger per architecture than default.
*/
def jscFlavor = 'org.webkit:android-jsc:+'
/**
* Whether to enable the Hermes VM.
*
* This should be set on project.ext.react and mirrored here. If it is not set
* on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
* and the benefits of using Hermes will therefore be sharply reduced.
*/
def enableHermes = project.ext.react.get("enableHermes", false);
def getVersionCode = { -> def getVersionCode = { ->
new ByteArrayOutputStream().withStream { stdOut -> new ByteArrayOutputStream().withStream { stdOut ->
if (project.hasProperty("versionCode")) { if (project.hasProperty("versionCode")) {
@ -162,6 +186,7 @@ android {
ndk { ndk {
abiFilters getEnvOrConfig('NDK_ABI_FILTERS').split(';') abiFilters getEnvOrConfig('NDK_ABI_FILTERS').split(';')
} }
missingDimensionStrategy 'react-native-camera', 'general'
} }
/** /**
* Arbitrary project metadata * Arbitrary project metadata
@ -179,8 +204,15 @@ android {
packagingOptions { packagingOptions {
exclude 'META-INF/rxjava.properties' exclude 'META-INF/rxjava.properties'
exclude '/lib/mips64/**' exclude '/lib/mips64/**'
exclude '/lib/arm64-v8a/**'
exclude '/lib/armeabi/**' exclude '/lib/armeabi/**'
pickFirst '**/armeabi-v7a/libc++_shared.so'
pickFirst '**/x86/libc++_shared.so'
pickFirst '**/arm64-v8a/libc++_shared.so'
pickFirst '**/x86_64/libc++_shared.so'
pickFirst '**/x86/libjsc.so'
pickFirst '**/armeabi-v7a/libjsc.so'
/** Fix for: Execution failed for task ':app:transformNativeLibsWithStripDebugSymbolForDebug'. /** Fix for: Execution failed for task ':app:transformNativeLibsWithStripDebugSymbolForDebug'.
* with recent version of ndk (17.0.4754217) * with recent version of ndk (17.0.4754217)
*/ */
@ -192,6 +224,12 @@ android {
javaMaxHeapSize "8g" javaMaxHeapSize "8g"
} }
signingConfigs { signingConfigs {
debug {
storeFile file('debug.keystore')
storePassword 'android'
keyAlias 'androiddebugkey'
keyPassword 'android'
}
release { release {
/* environment variables take precedence over gradle.properties file */ /* environment variables take precedence over gradle.properties file */
storeFile file(getEnvOrConfig('STATUS_RELEASE_STORE_FILE').replaceAll("~", System.properties['user.home'])) storeFile file(getEnvOrConfig('STATUS_RELEASE_STORE_FILE').replaceAll("~", System.properties['user.home']))
@ -213,9 +251,13 @@ android {
applicationIdSuffix ".debug" applicationIdSuffix ".debug"
debuggable true debuggable true
versionNameSuffix "-SNAPSHOT" versionNameSuffix "-SNAPSHOT"
signingConfig signingConfigs.debug
resValue "string", "build_config_package", "im.status.ethereum" resValue "string", "build_config_package", "im.status.ethereum"
} }
release { release {
// Caution! In production, you need to generate your own keystore file.
// see https://facebook.github.io/react-native/docs/signed-apk-android.
signingConfig signingConfigs.debug
minifyEnabled enableProguardInReleaseBuilds minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
signingConfig signingConfigs.release signingConfig signingConfigs.release
@ -242,6 +284,7 @@ android {
output.versionCodeOverride = output.versionCodeOverride =
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
} }
} }
} }
@ -256,44 +299,33 @@ android {
} }
dependencies { dependencies {
implementation project(':@react-native-community_netinfo')
implementation project(':react-native-background-timer')
implementation project(':react-native-svg')
implementation 'com.android.support:multidex:1.0.2'
implementation project(':react-native-splash-screen')
implementation project(':react-native-image-resizer')
implementation project(':react-native-dialogs')
implementation fileTree(dir: "libs", include: ["*.jar"]) implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.facebook.react:react-native:+" // From node_modules
if (enableHermes) {
def hermesPath = "../../node_modules/hermesvm/android/";
debugImplementation files(hermesPath + "hermes-debug.aar")
releaseImplementation files(hermesPath + "hermes-release.aar")
prImplementation files(hermesPath + "hermes-release.aar")
} else {
implementation jscFlavor
}
implementation 'com.android.support:multidex:1.0.2'
implementation project(':react-native-dialogs')
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}" implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
// Force using exact RN version instead of relying on gradle dependency resolution // Force using exact RN version instead of relying on gradle dependency resolution
// https://docs.gradle.org/current/userguide/introduction_dependency_management.html#sec:dependency_resolution // https://docs.gradle.org/current/userguide/introduction_dependency_management.html#sec:dependency_resolution
// NOTE: Uncomment if building RN from a fork
//compile ("com.facebook.react:react-native:0.55.4") { force = true } // From node_modules //compile ("com.facebook.react:react-native:0.55.4") { force = true } // From node_modules
implementation project(':react-native-android')
implementation project(':react-native-languages')
implementation project(':react-native-status') implementation project(':react-native-status')
implementation project(':react-native-fs')
implementation project(':react-native-image-crop-picker')
implementation project(':react-native-webview-bridge') implementation project(':react-native-webview-bridge')
implementation project(':react-native-touch-id')
implementation project(':react-native-config')
implementation project(':react-native-firebase')
implementation project(':react-native-shake')
implementation project(':react-native-gesture-handler')
implementation project(':react-native-screens')
implementation project(':RNMail')
compile ('com.google.android.gms:play-services-base:16.0.1') {
force = true
}
compile (project(':react-native-camera')) {
exclude group: "com.google.android.gms"
compile 'com.android.support:exifinterface:28.+'
}
implementation project(':react-native-status-keycard') implementation project(':react-native-status-keycard')
implementation 'com.google.firebase:firebase-core:16.0.3' //this decides your firebase SDK version implementation "com.google.android.gms:play-services-base:${rootProject.ext.googlePlayServicesVersion}"
implementation 'com.google.firebase:firebase-messaging:17.1.0' implementation 'com.google.firebase:firebase-core:16.0.9' //this decides your firebase SDK version
implementation project(':react-native-keychain') implementation 'com.google.firebase:firebase-messaging:18.0.0'
compile 'com.github.status-im:function:0.0.1' implementation 'com.github.status-im:function:0.0.1'
implementation 'com.facebook.fresco:animated-gif:1.10.0' implementation 'com.facebook.fresco:animated-gif:1.10.0'
} }
@ -318,5 +350,7 @@ task hemroidBuild(type: Exec) {
preBuild.dependsOn hemroidBuild preBuild.dependsOn hemroidBuild
// Must be at bottom to avoid dependency collision // Must be at bottom to avoid dependency collision
apply plugin: "com.google.gms.google-services" apply plugin: 'com.google.gms.google-services'
com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)

BIN
android/app/debug.keystore Normal file

Binary file not shown.

View File

@ -9,13 +9,6 @@
# Add any project specific keep options here: # 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 # 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). # (unless you are using a system that supports de-obfuscate the stack traces).
-dontobfuscate -dontobfuscate

View File

@ -83,11 +83,6 @@
<action android:name="com.google.firebase.MESSAGING_EVENT" /> <action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter> </intent-filter>
</service> </service>
<service android:name="io.invertase.firebase.messaging.RNFirebaseInstanceIdService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
<service android:name="io.invertase.firebase.messaging.RNFirebaseBackgroundMessagingService" /> <service android:name="io.invertase.firebase.messaging.RNFirebaseBackgroundMessagingService" />
<provider <provider
android:name="android.support.v4.content.FileProvider" android:name="android.support.v4.content.FileProvider"

View File

@ -1,41 +1,24 @@
package im.status.ethereum; package im.status.ethereum;
import android.support.multidex.MultiDexApplication; import android.support.multidex.MultiDexApplication;
import android.util.Log;
import com.facebook.react.PackageList;
import com.facebook.hermes.reactexecutor.HermesExecutorFactory;
import com.facebook.react.bridge.JavaScriptExecutorFactory;
import com.aakashns.reactnativedialogs.ReactNativeDialogsPackage; import com.aakashns.reactnativedialogs.ReactNativeDialogsPackage;
import com.facebook.react.ReactApplication; import com.facebook.react.ReactApplication;
import com.reactnativecommunity.netinfo.NetInfoPackage;
import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage; import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
import com.facebook.soloader.SoLoader; import com.facebook.soloader.SoLoader;
import com.github.alinz.reactnativewebviewbridge.WebViewBridgePackage; import com.github.alinz.reactnativewebviewbridge.WebViewBridgePackage;
import com.horcrux.svg.SvgPackage;
import com.lugg.ReactNativeConfig.ReactNativeConfigPackage;
import com.oblador.keychain.KeychainPackage;
import com.ocetnik.timer.BackgroundTimerPackage;
import com.reactcommunity.rnlanguages.RNLanguagesPackage;
import com.reactnative.ivpusic.imagepicker.PickerPackage;
import com.rnfs.RNFSPackage;
import com.rnfingerprint.FingerprintAuthPackage;
import org.devio.rn.splashscreen.SplashScreenReactPackage;
import org.reactnative.camera.RNCameraPackage;
import java.util.Arrays;
import java.util.List; import java.util.List;
import fr.bamlab.rnimageresizer.ImageResizerPackage;
import im.status.ethereum.function.Function;
import im.status.ethereum.keycard.RNStatusKeycardPackage; import im.status.ethereum.keycard.RNStatusKeycardPackage;
import im.status.ethereum.module.StatusPackage; import im.status.ethereum.module.StatusPackage;
import io.invertase.firebase.RNFirebasePackage;
import io.invertase.firebase.messaging.RNFirebaseMessagingPackage; import io.invertase.firebase.messaging.RNFirebaseMessagingPackage;
import io.invertase.firebase.notifications.RNFirebaseNotificationsPackage; import io.invertase.firebase.notifications.RNFirebaseNotificationsPackage;
import com.chirag.RNMail.*;
import com.clipsub.RNShake.RNShakeEventPackage;
import com.swmansion.gesturehandler.react.RNGestureHandlerPackage;
import com.swmansion.rnscreens.RNScreensPackage;
public class MainApplication extends MultiDexApplication implements ReactApplication { public class MainApplication extends MultiDexApplication implements ReactApplication {
@ -48,32 +31,14 @@ public class MainApplication extends MultiDexApplication implements ReactApplica
@Override @Override
protected List<ReactPackage> getPackages() { protected List<ReactPackage> getPackages() {
StatusPackage statusPackage = new StatusPackage(RootUtil.isDeviceRooted()); StatusPackage statusPackage = new StatusPackage(RootUtil.isDeviceRooted());
Function<String, String> callRPC = statusPackage.getCallRPC(); List<ReactPackage> packages = new PackageList(this).getPackages();
return Arrays.asList( packages.add(statusPackage);
new MainReactPackage(), packages.add(new RNFirebaseMessagingPackage());
new NetInfoPackage(), packages.add(new RNFirebaseNotificationsPackage());
new RNMail(), packages.add(new ReactNativeDialogsPackage());
new RNFirebasePackage(), packages.add(new RNStatusKeycardPackage());
new RNFirebaseMessagingPackage(), packages.add(new WebViewBridgePackage(BuildConfig.DEBUG_WEBVIEW == "1"));
new RNFirebaseNotificationsPackage(), return packages;
new BackgroundTimerPackage(),
new SvgPackage(),
new SplashScreenReactPackage(),
statusPackage,
new RNStatusKeycardPackage(),
new RNLanguagesPackage(),
new RNCameraPackage(),
new RNFSPackage(),
new ReactNativeDialogsPackage(),
new ImageResizerPackage(),
new PickerPackage(),
new WebViewBridgePackage(BuildConfig.DEBUG_WEBVIEW == "1", callRPC),
new ReactNativeConfigPackage(),
new KeychainPackage(),
new RNShakeEventPackage(),
new FingerprintAuthPackage(),
new RNGestureHandlerPackage(),
new RNScreensPackage());
} }
@Override @Override

View File

@ -7,5 +7,7 @@
<item name="colorControlNormal">@color/primary</item> <item name="colorControlNormal">@color/primary</item>
<item name="colorControlActivated">@color/primary</item> <item name="colorControlActivated">@color/primary</item>
<item name="android:windowBackground">@color/background</item> <item name="android:windowBackground">@color/background</item>
<item name="android:textColor">#000000</item>
</style> </style>
</resources> </resources>

View File

@ -9,7 +9,9 @@ ext {
compileSdkVersion = Integer.valueOf(project.compileSdkVersion) compileSdkVersion = Integer.valueOf(project.compileSdkVersion)
targetSdkVersion = Integer.valueOf(project.targetSdkVersion) targetSdkVersion = Integer.valueOf(project.targetSdkVersion)
supportLibVersion = project.supportLibVersion supportLibVersion = project.supportLibVersion
gradleBuildTools = project.gradleBuildTools gradlePluginVersion = project.gradlePluginVersion
googlePlayServicesVersion = project.googlePlayServicesVersion
googlePlayServicesVisionVersion = project.googlePlayServicesVisionVersion
} }
buildscript { buildscript {
@ -19,10 +21,8 @@ buildscript {
jcenter() jcenter()
} }
dependencies { dependencies {
classpath project.ext.gradleBuildTools classpath "com.android.tools.build:gradle:${project.ext.gradlePluginVersion}"
// google-services downgraded from 4.1.0 because of classpath 'com.google.gms:google-services:4.2.0'
// https://github.com/invertase/react-native-firebase/issues/766#issuecomment-365116012
classpath 'com.google.gms:google-services:4.0.1'
classpath 'de.undercouch:gradle-download-task:3.1.2' classpath 'de.undercouch:gradle-download-task:3.1.2'
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong
@ -54,12 +54,20 @@ allprojects {
repositories { repositories {
mavenLocal() mavenLocal()
maven { url "$rootDir/../node_modules/react-native/android" } maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url("$rootDir/../node_modules/react-native/android")
}
maven {
// Android JSC is installed from npm
url("$rootDir/../node_modules/jsc-android/dist")
}
google() google()
jcenter() jcenter()
// for geth, function, and status-go // for geth, function, and status-go
flatDir { dirs "libs", System.env.STATUS_GO_ANDROID_LIBDIR } flatDir { dirs "libs", System.env.STATUS_GO_ANDROID_LIBDIR }
maven { url "https://jitpack.io" } maven { url "https://jitpack.io" }
} }
} }

View File

@ -21,12 +21,17 @@
# $keytool -genkey -v -keystore ./status-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias status # $keytool -genkey -v -keystore ./status-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias status
# Version requirements used throughout the Gradle scripts # Version requirements used throughout the Gradle scripts
minSdkVersion=18 minSdkVersion=23
compileSdkVersion=28 compileSdkVersion=28
targetSdkVersion=28 targetSdkVersion=28
buildToolsVersion=28.0.3 buildToolsVersion=28.0.3
supportLibVersion=28.0.0 supportLibVersion=28.0.0
gradleBuildTools=com.android.tools.build:gradle:3.4.1 gradlePluginVersion=3.4.1
googlePlayServicesVersion=16.0.1
googlePlayServicesVisionVersion=17.0.2
android.useAndroidX=true
android.enableJetifier=true
STATUS_RELEASE_STORE_FILE=~/.gradle/status-im.keystore STATUS_RELEASE_STORE_FILE=~/.gradle/status-im.keystore
STATUS_RELEASE_STORE_PASSWORD=password STATUS_RELEASE_STORE_PASSWORD=password

View File

@ -1,8 +0,0 @@
keystore(
name = "debug",
properties = "debug.keystore.properties",
store = "debug.keystore",
visibility = [
"PUBLIC",
],
)

View File

@ -1,4 +0,0 @@
key.store=debug.keystore
key.alias=androiddebugkey
key.store.password=android
key.alias.password=android

View File

@ -6,50 +6,15 @@ pluginManagement {
} }
rootProject.name = 'StatusIm' rootProject.name = 'StatusIm'
apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
include ':react-native-nfc-manager' include ':react-native-nfc-manager'
project(':react-native-nfc-manager').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-nfc-manager/android') project(':react-native-nfc-manager').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-nfc-manager/android')
include ':react-native-firebase'
project(':react-native-firebase').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-firebase/android')
include ':react-native-background-timer'
project(':react-native-background-timer').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-background-timer/android')
include ':react-native-svg'
project(':react-native-svg').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-svg/android')
include ':app' include ':app'
include ':react-native-splash-screen'
project(':react-native-splash-screen').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-splash-screen/android')
include ':react-native-image-resizer'
project(':react-native-image-resizer').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-image-resizer/android')
include ':react-native-dialogs' include ':react-native-dialogs'
project(':react-native-dialogs').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-dialogs/android') project(':react-native-dialogs').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-dialogs/android')
include ':react-native-languages'
project(':react-native-languages').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-languages/android')
include ':react-native-status' include ':react-native-status'
project(':react-native-status').projectDir = new File(rootProject.projectDir, '../modules/react-native-status/android') project(':react-native-status').projectDir = new File(rootProject.projectDir, '../modules/react-native-status/android')
include ':react-native-camera'
project(':react-native-camera').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-camera/android')
include ':react-native-status-keycard' include ':react-native-status-keycard'
project(':react-native-status-keycard').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-status-keycard/android') project(':react-native-status-keycard').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-status-keycard/android')
include ':react-native-fs'
project(':react-native-fs').projectDir = new File(settingsDir, '../node_modules/react-native-fs/android')
include ':react-native-image-crop-picker'
project(':react-native-image-crop-picker').projectDir = new File(settingsDir, '../node_modules/react-native-image-crop-picker/android')
include ':react-native-keychain'
project(':react-native-keychain').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-keychain/android')
include ':react-native-webview-bridge' include ':react-native-webview-bridge'
project(':react-native-webview-bridge').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webview-bridge/android') project(':react-native-webview-bridge').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webview-bridge/android')
include ':react-native-touch-id'
project(':react-native-touch-id').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-touch-id/android')
include ':react-native-config'
project(':react-native-config').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-config/android')
include ':react-native-android'
project(':react-native-android').projectDir = new File(rootProject.projectDir, '../node_modules/react-native/ReactAndroid')
include ':RNMail', ':app'
project(':RNMail').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-mail/android')
include ':react-native-shake'
project(':react-native-shake').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-shake/android')
include ':react-native-gesture-handler'
project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/android')
include ':react-native-screens'
project(':react-native-screens').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-screens/android')
include ':@react-native-community_netinfo'
project(':@react-native-community_netinfo').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/netinfo/android')

File diff suppressed because it is too large Load Diff

View File

@ -31,7 +31,6 @@ var TopLevel = {
"callPrivateRPC" : function () {}, "callPrivateRPC" : function () {},
"callRPC" : function () {}, "callRPC" : function () {},
"canImplyAuthentication" : function () {}, "canImplyAuthentication" : function () {},
"capture" : function () {},
"catch" : function () {}, "catch" : function () {},
"Chance" : function () {}, "Chance" : function () {},
"changePin" : function () {}, "changePin" : function () {},
@ -480,6 +479,7 @@ var TopLevel = {
"SyncInstallation" : function () {}, "SyncInstallation" : function () {},
"SyncInstallationHandler" : function () {}, "SyncInstallationHandler" : function () {},
"t" : function () {}, "t" : function () {},
"takePictureAsync" : function () {},
"Text" : function () {}, "Text" : function () {},
"text" : function () {}, "text" : function () {},
"TextEncoder" : function () {}, "TextEncoder" : function () {},

View File

@ -7,37 +7,45 @@ target 'StatusIm' do
platform :ios, '9.0' platform :ios, '9.0'
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
# use_frameworks! # use_frameworks!
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
# Pods for StatusIm # Pods for StatusIm
pod 'Firebase/Core' pod 'Firebase/Core', '~> 5.5'
pod 'Firebase/Messaging' pod 'Firebase/Messaging', '~> 5.5'
# RCTImage is requered by react-native-svg pod 'React', :path => '../node_modules/react-native/'
pod 'React', :path => '../node_modules/react-native', :subspecs => ['RCTImage',] pod 'React-Core', :path => '../node_modules/react-native/React'
pod 'React-DevSupport', :path => '../node_modules/react-native/React'
pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
# RCTImage is required by react-native-svg
pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
pod 'React-RCTWebSocket', :path => '../node_modules/react-native/Libraries/WebSocket'
pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga' pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
pod 'react-native-background-timer', :path => '../node_modules/react-native-background-timer'
pod 'RNKeychain', :path => '../node_modules/react-native-keychain'
pod 'react-native-camera', path: '../node_modules/react-native-camera'
pod 'TouchID', path: '../node_modules/react-native-touch-id'
pod 'SQLCipher', '~>3.0'
pod 'SSZipArchive'
# when removing svg pod, RCTImage is needed to be removed from React subspecs # when removing svg pod, RCTImage is needed to be removed from React subspecs
pod 'RNSVG', :path => '../node_modules/react-native-svg' pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
pod 'react-native-netinfo', :path => '../node_modules/@react-native-community/netinfo' pod 'react-native-image-resizer', :path => '../node_modules/react-native-image-resizer'
pod 'SQLCipher', '~>3.0'
pod 'SSZipArchive'
target 'StatusImTests' do target 'StatusImTests' do
inherit! :search_paths inherit! :search_paths
# Pods for testing # Pods for testing
end end
end use_native_modules!
post_install do |installer|
installer.pods_project.targets.each do |target|
if target.name == "React"
target.remove_from_project
end
end
end end

View File

@ -1,99 +1,251 @@
PODS: PODS:
- Firebase/Core (5.7.0): - boost-for-react-native (1.63.0)
- Crashlytics (3.13.4):
- Fabric (~> 1.10.2)
- DoubleConversion (1.1.6)
- Fabric (1.10.2)
- Firebase/Core (5.20.2):
- Firebase/CoreOnly - Firebase/CoreOnly
- FirebaseAnalytics (= 5.1.1) - FirebaseAnalytics (= 5.8.1)
- Firebase/CoreOnly (5.7.0): - Firebase/CoreOnly (5.20.2):
- FirebaseCore (= 5.1.2) - FirebaseCore (= 5.4.1)
- Firebase/Messaging (5.7.0): - Firebase/Messaging (5.20.2):
- Firebase/CoreOnly - Firebase/CoreOnly
- FirebaseMessaging (= 3.1.1) - FirebaseMessaging (= 3.5.0)
- FirebaseAnalytics (5.1.1): - FirebaseAnalytics (5.8.1):
- FirebaseCore (~> 5.1) - FirebaseCore (~> 5.4)
- FirebaseInstanceID (~> 3.2) - FirebaseInstanceID (~> 3.8)
- GoogleAppMeasurement (~> 5.1) - GoogleAppMeasurement (= 5.8.1)
- GoogleUtilities/AppDelegateSwizzler (~> 5.2.0) - GoogleUtilities/AppDelegateSwizzler (~> 5.2)
- GoogleUtilities/MethodSwizzler (~> 5.2.0) - GoogleUtilities/MethodSwizzler (~> 5.2)
- GoogleUtilities/Network (~> 5.2) - GoogleUtilities/Network (~> 5.2)
- "GoogleUtilities/NSData+zlib (~> 5.2)" - "GoogleUtilities/NSData+zlib (~> 5.2)"
- nanopb (~> 0.3) - nanopb (~> 0.3)
- FirebaseCore (5.1.2): - FirebaseAnalyticsInterop (1.4.0)
- GoogleUtilities/Logger (~> 5.2) - FirebaseCore (5.4.1):
- FirebaseInstanceID (3.2.1):
- FirebaseCore (~> 5.1)
- GoogleUtilities/Environment (~> 5.2) - GoogleUtilities/Environment (~> 5.2)
- FirebaseMessaging (3.1.1): - GoogleUtilities/Logger (~> 5.2)
- FirebaseCore (~> 5.0) - FirebaseInstanceID (3.8.1):
- FirebaseInstanceID (~> 3.0) - FirebaseCore (~> 5.2)
- GoogleUtilities/Reachability (~> 5.2) - GoogleUtilities/Environment (~> 5.2)
- GoogleUtilities/UserDefaults (~> 5.2)
- FirebaseMessaging (3.5.0):
- FirebaseAnalyticsInterop (~> 1.1)
- FirebaseCore (~> 5.2)
- FirebaseInstanceID (~> 3.6)
- GoogleUtilities/Environment (~> 5.3)
- GoogleUtilities/Reachability (~> 5.3)
- GoogleUtilities/UserDefaults (~> 5.3)
- Protobuf (~> 3.1) - Protobuf (~> 3.1)
- GoogleAppMeasurement (5.1.1): - Folly (2018.10.22.00):
- GoogleUtilities/AppDelegateSwizzler (~> 5.2.0) - boost-for-react-native
- GoogleUtilities/MethodSwizzler (~> 5.2.0) - DoubleConversion
- Folly/Default (= 2018.10.22.00)
- glog
- Folly/Default (2018.10.22.00):
- boost-for-react-native
- DoubleConversion
- glog
- glog (0.3.5)
- GoogleAppMeasurement (5.8.1):
- GoogleUtilities/AppDelegateSwizzler (~> 5.2)
- GoogleUtilities/MethodSwizzler (~> 5.2)
- GoogleUtilities/Network (~> 5.2) - GoogleUtilities/Network (~> 5.2)
- "GoogleUtilities/NSData+zlib (~> 5.2)" - "GoogleUtilities/NSData+zlib (~> 5.2)"
- nanopb (~> 0.3) - nanopb (~> 0.3)
- GoogleUtilities/AppDelegateSwizzler (5.2.2): - GoogleUtilities/AppDelegateSwizzler (5.8.0):
- GoogleUtilities/Environment - GoogleUtilities/Environment
- GoogleUtilities/Logger - GoogleUtilities/Logger
- GoogleUtilities/Network - GoogleUtilities/Network
- GoogleUtilities/Environment (5.2.2) - GoogleUtilities/Environment (5.8.0)
- GoogleUtilities/Logger (5.2.2): - GoogleUtilities/Logger (5.8.0):
- GoogleUtilities/Environment - GoogleUtilities/Environment
- GoogleUtilities/MethodSwizzler (5.2.2): - GoogleUtilities/MethodSwizzler (5.8.0):
- GoogleUtilities/Logger - GoogleUtilities/Logger
- GoogleUtilities/Network (5.2.2): - GoogleUtilities/Network (5.8.0):
- GoogleUtilities/Logger - GoogleUtilities/Logger
- "GoogleUtilities/NSData+zlib" - "GoogleUtilities/NSData+zlib"
- GoogleUtilities/Reachability - GoogleUtilities/Reachability
- "GoogleUtilities/NSData+zlib (5.2.2)" - "GoogleUtilities/NSData+zlib (5.8.0)"
- GoogleUtilities/Reachability (5.2.2): - GoogleUtilities/Reachability (5.8.0):
- GoogleUtilities/Logger - GoogleUtilities/Logger
- nanopb (0.3.8): - GoogleUtilities/UserDefaults (5.8.0):
- nanopb/decode (= 0.3.8) - GoogleUtilities/Logger
- nanopb/encode (= 0.3.8) - nanopb (0.3.901):
- nanopb/decode (0.3.8) - nanopb/decode (= 0.3.901)
- nanopb/encode (0.3.8) - nanopb/encode (= 0.3.901)
- Protobuf (3.6.1) - nanopb/decode (0.3.901)
- React (0.59.10): - nanopb/encode (0.3.901)
- React/Core (= 0.59.10) - Protobuf (3.9.0)
- QBImagePickerController (3.4.0)
- React (0.60.5):
- React-Core (= 0.60.5)
- React-DevSupport (= 0.60.5)
- React-RCTActionSheet (= 0.60.5)
- React-RCTAnimation (= 0.60.5)
- React-RCTBlob (= 0.60.5)
- React-RCTImage (= 0.60.5)
- React-RCTLinking (= 0.60.5)
- React-RCTNetwork (= 0.60.5)
- React-RCTSettings (= 0.60.5)
- React-RCTText (= 0.60.5)
- React-RCTVibration (= 0.60.5)
- React-RCTWebSocket (= 0.60.5)
- React-Core (0.60.5):
- Folly (= 2018.10.22.00)
- React-cxxreact (= 0.60.5)
- React-jsiexecutor (= 0.60.5)
- yoga (= 0.60.5.React)
- React-cxxreact (0.60.5):
- boost-for-react-native (= 1.63.0)
- DoubleConversion
- Folly (= 2018.10.22.00)
- glog
- React-jsinspector (= 0.60.5)
- React-DevSupport (0.60.5):
- React-Core (= 0.60.5)
- React-RCTWebSocket (= 0.60.5)
- React-jsi (0.60.5):
- boost-for-react-native (= 1.63.0)
- DoubleConversion
- Folly (= 2018.10.22.00)
- glog
- React-jsi/Default (= 0.60.5)
- React-jsi/Default (0.60.5):
- boost-for-react-native (= 1.63.0)
- DoubleConversion
- Folly (= 2018.10.22.00)
- glog
- React-jsiexecutor (0.60.5):
- DoubleConversion
- Folly (= 2018.10.22.00)
- glog
- React-cxxreact (= 0.60.5)
- React-jsi (= 0.60.5)
- React-jsinspector (0.60.5)
- react-native-background-timer (2.1.1): - react-native-background-timer (2.1.1):
- React - React
- react-native-camera (1.1.5): - react-native-camera (3.3.3):
- React - React
- react-native-camera/RCT (= 1.1.5) - react-native-camera/RCT (= 3.3.3)
- react-native-camera/RN (= 1.1.5) - react-native-camera/RN (= 3.3.3)
- react-native-camera/RCT (1.1.5): - react-native-camera/RCT (3.3.3):
- React - React
- react-native-camera/RN (1.1.5): - react-native-camera/RN (3.3.3):
- React - React
- React/Core (0.59.10): - react-native-image-resizer (1.0.0):
- yoga (= 0.59.10.React) - React
- React/RCTImage (0.59.10): - react-native-mail (4.0.0):
- React/Core - React
- React/RCTNetwork - react-native-netinfo (4.2.1):
- React/RCTNetwork (0.59.10): - React
- React/Core - react-native-shake (3.3.1):
- React
- react-native-splash-screen (3.2.0):
- React
- react-native-webview (6.11.1):
- React
- react-native-webview-bridge (0.33.17):
- React
- React-RCTActionSheet (0.60.5):
- React-Core (= 0.60.5)
- React-RCTAnimation (0.60.5):
- React-Core (= 0.60.5)
- React-RCTBlob (0.60.5):
- React-Core (= 0.60.5)
- React-RCTNetwork (= 0.60.5)
- React-RCTWebSocket (= 0.60.5)
- React-RCTImage (0.60.5):
- React-Core (= 0.60.5)
- React-RCTNetwork (= 0.60.5)
- React-RCTLinking (0.60.5):
- React-Core (= 0.60.5)
- React-RCTNetwork (0.60.5):
- React-Core (= 0.60.5)
- React-RCTSettings (0.60.5):
- React-Core (= 0.60.5)
- React-RCTText (0.60.5):
- React-Core (= 0.60.5)
- React-RCTVibration (0.60.5):
- React-Core (= 0.60.5)
- React-RCTWebSocket (0.60.5):
- React-Core (= 0.60.5)
- RNFirebase (5.5.6):
- Firebase/Core
- React
- RNFirebase/Crashlytics (= 5.5.6)
- RNFirebase/Crashlytics (5.5.6):
- Crashlytics
- Fabric
- Firebase/Core
- React
- RNFS (2.14.1):
- React
- RNGestureHandler (1.3.0):
- React
- RNImageCropPicker (0.25.0):
- QBImagePickerController
- React-Core
- React-RCTImage
- RSKImageCropper
- RNKeychain (3.0.0-rc.3): - RNKeychain (3.0.0-rc.3):
- React - React
- RNSVG (9.7.1): - RNLanguages (3.0.2):
- React - React
- RNScreens (1.0.0-alpha.22):
- React
- RNSVG (9.8.4):
- React
- RSKImageCropper (2.2.3)
- SQLCipher (3.4.2): - SQLCipher (3.4.2):
- SQLCipher/standard (= 3.4.2) - SQLCipher/standard (= 3.4.2)
- SQLCipher/common (3.4.2) - SQLCipher/common (3.4.2)
- SQLCipher/standard (3.4.2): - SQLCipher/standard (3.4.2):
- SQLCipher/common - SQLCipher/common
- SSZipArchive (2.1.4) - SSZipArchive (2.2.2)
- TouchID (4.4.1): - TouchID (4.4.1):
- React - React
- yoga (0.59.10.React) - yoga (0.60.5.React)
DEPENDENCIES: DEPENDENCIES:
- Firebase/Core - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- Firebase/Messaging - Firebase/Core (~> 5.5)
- Firebase/Messaging (~> 5.5)
- Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
- React (from `../node_modules/react-native/`)
- React-Core (from `../node_modules/react-native/React`)
- React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)
- React-DevSupport (from `../node_modules/react-native/React`)
- React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
- React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
- React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
- react-native-background-timer (from `../node_modules/react-native-background-timer`) - react-native-background-timer (from `../node_modules/react-native-background-timer`)
- react-native-camera (from `../node_modules/react-native-camera`) - react-native-camera (from `../node_modules/react-native-camera`)
- React/RCTImage (from `../node_modules/react-native`) - react-native-image-resizer (from `../node_modules/react-native-image-resizer`)
- react-native-mail (from `../node_modules/react-native-mail`)
- "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)"
- react-native-shake (from `../node_modules/react-native-shake`)
- react-native-splash-screen (from `../node_modules/react-native-splash-screen`)
- react-native-webview (from `../node_modules/react-native-webview`)
- react-native-webview-bridge (from `../node_modules/react-native-webview-bridge`)
- React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
- React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
- React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
- React-RCTImage (from `../node_modules/react-native/Libraries/Image`)
- React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`)
- React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`)
- React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)
- React-RCTText (from `../node_modules/react-native/Libraries/Text`)
- React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
- React-RCTWebSocket (from `../node_modules/react-native/Libraries/WebSocket`)
- RNFirebase (from `../node_modules/react-native-firebase/ios`)
- RNFS (from `../node_modules/react-native-fs`)
- RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
- RNImageCropPicker (from `../node_modules/react-native-image-crop-picker`)
- RNKeychain (from `../node_modules/react-native-keychain`) - RNKeychain (from `../node_modules/react-native-keychain`)
- RNLanguages (from `../node_modules/react-native-languages`)
- RNScreens (from `../node_modules/react-native-screens`)
- RNSVG (from `../node_modules/react-native-svg`) - RNSVG (from `../node_modules/react-native-svg`)
- SQLCipher (~> 3.0) - SQLCipher (~> 3.0)
- SSZipArchive - SSZipArchive
@ -102,8 +254,12 @@ DEPENDENCIES:
SPEC REPOS: SPEC REPOS:
https://github.com/cocoapods/specs.git: https://github.com/cocoapods/specs.git:
- boost-for-react-native
- Crashlytics
- Fabric
- Firebase - Firebase
- FirebaseAnalytics - FirebaseAnalytics
- FirebaseAnalyticsInterop
- FirebaseCore - FirebaseCore
- FirebaseInstanceID - FirebaseInstanceID
- FirebaseMessaging - FirebaseMessaging
@ -111,18 +267,84 @@ SPEC REPOS:
- GoogleUtilities - GoogleUtilities
- nanopb - nanopb
- Protobuf - Protobuf
- QBImagePickerController
- RSKImageCropper
- SQLCipher - SQLCipher
- SSZipArchive - SSZipArchive
EXTERNAL SOURCES: EXTERNAL SOURCES:
DoubleConversion:
:podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
Folly:
:podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec"
glog:
:podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
React: React:
:path: "../node_modules/react-native" :path: "../node_modules/react-native/"
React-Core:
:path: "../node_modules/react-native/React"
React-cxxreact:
:path: "../node_modules/react-native/ReactCommon/cxxreact"
React-DevSupport:
:path: "../node_modules/react-native/React"
React-jsi:
:path: "../node_modules/react-native/ReactCommon/jsi"
React-jsiexecutor:
:path: "../node_modules/react-native/ReactCommon/jsiexecutor"
React-jsinspector:
:path: "../node_modules/react-native/ReactCommon/jsinspector"
react-native-background-timer: react-native-background-timer:
:path: "../node_modules/react-native-background-timer" :path: "../node_modules/react-native-background-timer"
react-native-camera: react-native-camera:
:path: "../node_modules/react-native-camera" :path: "../node_modules/react-native-camera"
react-native-image-resizer:
:path: "../node_modules/react-native-image-resizer"
react-native-mail:
:path: "../node_modules/react-native-mail"
react-native-netinfo:
:path: "../node_modules/@react-native-community/netinfo"
react-native-shake:
:path: "../node_modules/react-native-shake"
react-native-splash-screen:
:path: "../node_modules/react-native-splash-screen"
react-native-webview:
:path: "../node_modules/react-native-webview"
react-native-webview-bridge:
:path: "../node_modules/react-native-webview-bridge"
React-RCTActionSheet:
:path: "../node_modules/react-native/Libraries/ActionSheetIOS"
React-RCTAnimation:
:path: "../node_modules/react-native/Libraries/NativeAnimation"
React-RCTBlob:
:path: "../node_modules/react-native/Libraries/Blob"
React-RCTImage:
:path: "../node_modules/react-native/Libraries/Image"
React-RCTLinking:
:path: "../node_modules/react-native/Libraries/LinkingIOS"
React-RCTNetwork:
:path: "../node_modules/react-native/Libraries/Network"
React-RCTSettings:
:path: "../node_modules/react-native/Libraries/Settings"
React-RCTText:
:path: "../node_modules/react-native/Libraries/Text"
React-RCTVibration:
:path: "../node_modules/react-native/Libraries/Vibration"
React-RCTWebSocket:
:path: "../node_modules/react-native/Libraries/WebSocket"
RNFirebase:
:path: "../node_modules/react-native-firebase/ios"
RNFS:
:path: "../node_modules/react-native-fs"
RNGestureHandler:
:path: "../node_modules/react-native-gesture-handler"
RNImageCropPicker:
:path: "../node_modules/react-native-image-crop-picker"
RNKeychain: RNKeychain:
:path: "../node_modules/react-native-keychain" :path: "../node_modules/react-native-keychain"
RNLanguages:
:path: "../node_modules/react-native-languages"
RNScreens:
:path: "../node_modules/react-native-screens"
RNSVG: RNSVG:
:path: "../node_modules/react-native-svg" :path: "../node_modules/react-native-svg"
TouchID: TouchID:
@ -131,25 +353,63 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon/yoga" :path: "../node_modules/react-native/ReactCommon/yoga"
SPEC CHECKSUMS: SPEC CHECKSUMS:
Firebase: 734a4f92957aa6c40e7ae3fda3d9359e1890aa87 boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
FirebaseAnalytics: 993577e91157feb40945abedd6ab346d8a4b6ac8 Crashlytics: 2dfd686bcb918dc10ee0e76f7f853fe42c7bd552
FirebaseCore: 3a97432acb324b439fbed338e642f9cbb516a63d DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2
FirebaseInstanceID: ea5af6920d0a4a29b40459d055bebe4a6c1333c4 Fabric: 706c8b8098fff96c33c0db69cbf81f9c551d0d74
FirebaseMessaging: 698c94dd1e3436346c29bb9c85dcdca4c4a0c30b Firebase: 0c8cf33f266410c61ab3e2265cfa412200351d9c
GoogleAppMeasurement: f7507b39b70ad0bd80b3d81518b2f43868974307 FirebaseAnalytics: ece1aa57a4f43c64d53a648b5a5e05151aae947b
GoogleUtilities: 06b66f9567769a7958db20a92f0128b2843e49d5 FirebaseAnalyticsInterop: d48b6ab67bcf016a05e55b71fc39c61c0cb6b7f3
nanopb: 5601e6bca2dbf1ed831b519092ec110f66982ca3 FirebaseCore: f1a9a8be1aee4bf71a2fc0f4096df6788bdfda61
Protobuf: 1eb9700044745f00181c136ef21b8ff3ad5a0fd5 FirebaseInstanceID: a122b0c258720cf250551bb2bedf48c699f80d90
React: 1d605e098d69bdf08960787f3446f0a9dc2e2ccf FirebaseMessaging: 4235f949ce1c4e827aeb19705ba5c53f9b85aa10
Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51
glog: 7b113d8578aa09b57aa5945dd002bc37d0ab4fb5
GoogleAppMeasurement: ffe513e90551844a739e7bcbb1d2aca1c28a4338
GoogleUtilities: 04fce34bcd5620c1ee76fb79172105c74a4df335
nanopb: 2901f78ea1b7b4015c860c2fdd1ea2fee1a18d48
Protobuf: 1097ca58584c8d9be81bfbf2c5ff5975648dd87a
QBImagePickerController: d54cf93db6decf26baf6ed3472f336ef35cae022
React: c438ccc7e14e86d4702bb92d7e262f549ffaa995
React-Core: c76495f5c14e73c0f803b89c3fa83f804da61bd6
React-cxxreact: f64bc64cf4682d6ea5a064f6017da72482858682
React-DevSupport: 30336bca00f72681eac995d21a31b963e7d5cfec
React-jsi: 40f467ff088c811c6630acccb4aea57ea7ccb1b5
React-jsiexecutor: e4b4717060a0cd8d0270323b5655a68c95432efd
React-jsinspector: 044105eea064aec81adc5e4d777a8f6589e7d094
react-native-background-timer: bb7a98c8e97fc7c290de2d423dd09ddb73dcbcbb react-native-background-timer: bb7a98c8e97fc7c290de2d423dd09ddb73dcbcbb
react-native-camera: 68ad5143d2d0636236d46c7de8d2a6455ca52a36 react-native-camera: 9c50d7def800895e7991ccda6203929553ceec9c
react-native-image-resizer: 04a3409e7d4ad646c4468671c69dec490def139c
react-native-mail: ff4aba592530d80ac96eea6c1ca03114b84d630a
react-native-netinfo: a91b5cf92ed3ada997cfe2bf067633386eb19fd8
react-native-shake: e9d1368d6f0ec7e48c8afc91e379b81006b9ba42
react-native-splash-screen: a49be22f0f6648b8416f3bd28258645eeaa5b42b
react-native-webview: ad9581723f4d401c22cb3a371811d4dc9310df56
react-native-webview-bridge: c712d20bbe7e2a2fabdd5d8ccdfec5e704455763
React-RCTActionSheet: 08864c609d9f959abf3d51fdd93f8bc6e91f21eb
React-RCTAnimation: a4547e9fac2627ded3df9d302f5558b475faf819
React-RCTBlob: 62d5c263a2adb8f7a2cafd601beba18a2d99cbbb
React-RCTImage: 963859de2b05d2037d1b7842cdbddc8d7f3a2f3b
React-RCTLinking: 5998a7db9a6156ed112b006d01f76b2d1cc83d98
React-RCTNetwork: 0b676e8194f3f893db813007d37e37e9820173a3
React-RCTSettings: fdd7606f1b6050eced69fc6046d5db6768aefd57
React-RCTText: 36c0532feb5521cb295ba80e7e44b70cf1c36fc7
React-RCTVibration: dabb8d59bb47e1d9124b3f77bfdc1b33d42b0a74
React-RCTWebSocket: 2e7f6e98fd6d2bf447d145e499c3a235cc13e350
RNFirebase: ca408d6bee0ca9383bd0cfe84f40b01370b8ad4d
RNFS: 6a2bfb5d0b14cf0ad72667f76202358abba4aacf
RNGestureHandler: 7ccf2f3f60458e084f9ada01fbaf610f6fef073c
RNImageCropPicker: c406db73f02f11bf3a887f856ff04ee50af173f4
RNKeychain: 627c6095cef215dd3d9804a9a9cf45ab96aa3997 RNKeychain: 627c6095cef215dd3d9804a9a9cf45ab96aa3997
RNLanguages: e3ae05ef105937645218272429dac0c3f7633451
RNScreens: 354046589421edc3d83d5c6212475bf1fb9a731d
RNSVG: 2e097b92aaa6d4e0f354fd7c49cbf3b17f8b3920 RNSVG: 2e097b92aaa6d4e0f354fd7c49cbf3b17f8b3920
RSKImageCropper: a446db0e8444a036b34f3c43db01b2373baa4b2a
SQLCipher: f9fcf29b2e59ced7defc2a2bdd0ebe79b40d4990 SQLCipher: f9fcf29b2e59ced7defc2a2bdd0ebe79b40d4990
SSZipArchive: 41455d4b8d2b6ab93990820b50dc697c2554a322 SSZipArchive: fa16b8cc4cdeceb698e5e5d9f67e9558532fbf23
TouchID: b0640fedb86fa2db2fe1df15b61594ad49e76288 TouchID: b0640fedb86fa2db2fe1df15b61594ad49e76288
yoga: 128daf064cacaede0c3bb27424b6b4c71052e6cd yoga: 88c514f310aff89b94a14c5fbf44b95735af0cb7
PODFILE CHECKSUM: c4092792db2b9d33023311d0876998d7be256942 PODFILE CHECKSUM: eada5ca1782f4a5407527b6bb8f04e5fe4ab1e49
COCOAPODS: 1.5.3 COCOAPODS: 1.5.3

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:StatusIm.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>

View File

@ -3,10 +3,10 @@
"version": "0.0.1", "version": "0.0.1",
"private": true, "private": true,
"scripts": { "scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start" "start": "react-native start"
}, },
"dependencies": { "dependencies": {
"@react-native-community/netinfo": "^3.2.1", "@react-native-community/netinfo": "^4.1.5",
"bignumber.js": "git+https://github.com/status-im/bignumber.js.git#v4.0.2-status", "bignumber.js": "git+https://github.com/status-im/bignumber.js.git#v4.0.2-status",
"buffer": "^5.4.2", "buffer": "^5.4.2",
"chance": "^1.1.0", "chance": "^1.1.0",
@ -17,30 +17,31 @@
"i18n-js": "^3.3.0", "i18n-js": "^3.3.0",
"identicon.js": "git+https://github.com/status-im/identicon.js.git#v1.2.1-status", "identicon.js": "git+https://github.com/status-im/identicon.js.git#v1.2.1-status",
"qrcode": "^1.4.1", "qrcode": "^1.4.1",
"react": "16.8.3", "react": "16.8.6",
"react-dom": "16.4.2", "react-dom": "16.4.2",
"react-native": "git+https://github.com/status-im/react-native.git#v0.59.10", "react-native": "0.60.5",
"react-native-background-timer": "^2.1.1", "react-native-background-timer": "^2.1.1",
"react-native-camera": "git+https://github.com/status-im/react-native-camera.git#v1.1.5-1-status", "react-native-camera": "3.3.3",
"react-native-config": "git+https://github.com/status-im/react-native-config.git#0.11.2-1", "react-native-config": "git+https://github.com/status-im/react-native-config.git#0.11.2-1-status",
"react-native-dialogs": "^1.0.5", "react-native-dialogs": "1.0.4",
"react-native-fetch-polyfill": "^1.1.3", "react-native-fetch-polyfill": "1.1.2",
"react-native-firebase": "5.1.1", "react-native-firebase": "5.5.6",
"react-native-fs": "^2.14.1", "react-native-fs": "2.14.1",
"react-native-gesture-handler": "1.3.0", "react-native-gesture-handler": "1.3.0",
"react-native-image-crop-picker": "^0.18.2", "react-native-image-crop-picker": "0.25.0",
"react-native-image-resizer": "git+https://github.com/status-im/react-native-image-resizer.git#1.0.0-1-status", "react-native-image-resizer": "git+https://github.com/status-im/react-native-image-resizer.git#1.0.0-1-status",
"react-native-keychain": "git+https://github.com/status-im/react-native-keychain.git#v.3.0.0-status", "react-native-keychain": "git+https://github.com/status-im/react-native-keychain.git#v.3.0.0-status",
"react-native-languages": "^3.0.2", "react-native-languages": "^3.0.2",
"react-native-mail": "git+https://github.com/status-im/react-native-mail.git#v3.0.8_status", "react-native-mail": "git+https://github.com/status-im/react-native-mail.git#v4.0.0-status",
"react-native-navigation-twopane": "git+https://github.com/status-im/react-native-navigation-twopane.git#v0.0.2-status", "react-native-navigation-twopane": "git+https://github.com/status-im/react-native-navigation-twopane.git#v0.0.2-status",
"react-native-screens": "1.0.0-alpha.22", "react-native-screens": "1.0.0-alpha.22",
"react-native-shake": "^3.3.1", "react-native-shake": "^3.3.1",
"react-native-splash-screen": "^3.2.0", "react-native-splash-screen": "^3.2.0",
"react-native-status-keycard": "^2.5.7", "react-native-status-keycard": "^2.5.7",
"react-native-svg": "9.7.1", "react-native-svg": "9.8.4",
"react-native-touch-id": "^4.4.1", "react-native-touch-id": "^4.4.1",
"react-native-webview-bridge": "git+https://github.com/status-im/react-native-webview-bridge.git#fix/classnames-colision", "react-native-webview": "6.11.1",
"react-native-webview-bridge": "git+https://github.com/status-im/react-native-webview-bridge.git#fix/community-webview",
"react-navigation": "3.11.0", "react-navigation": "3.11.0",
"web3-utils": "^1.2.1" "web3-utils": "^1.2.1"
}, },

File diff suppressed because it is too large Load Diff

View File

@ -6,12 +6,10 @@ import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager; import com.facebook.react.uimanager.ViewManager;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import im.status.ethereum.function.Function;
import statusgo.Statusgo;
public class StatusPackage implements ReactPackage { public class StatusPackage implements ReactPackage {
private boolean rootedDevice; private boolean rootedDevice;
@ -22,21 +20,15 @@ public class StatusPackage implements ReactPackage {
@Override @Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) { public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
NativeModule statusModule = new StatusModule(reactContext, this.rootedDevice); List<NativeModule> modules = new ArrayList<>();
return Collections.singletonList(statusModule);
modules.add(new StatusModule(reactContext, this.rootedDevice));
return modules;
} }
@Override @Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) { public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Collections.emptyList(); return Collections.emptyList();
} }
public Function<String, String> getCallRPC() {
return new Function<String, String>() {
@Override
public String apply(String payload) {
return Statusgo.callRPC(payload);
}
};
}
} }

View File

@ -234,6 +234,7 @@
HEADER_SEARCH_PATHS = ( HEADER_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(SRCROOT)/../../../../node_modules/React/**", "$(SRCROOT)/../../../../node_modules/React/**",
"$(SRCROOT)/../../../../ios/Pods/Headers/Public/React-Core",
"$(SRCROOT)/../../../../node_modules/react-native/React/**", "$(SRCROOT)/../../../../node_modules/react-native/React/**",
"$(SRCROOT)/../../../../node_modules/react-native-config/ios/ReactNativeConfig", "$(SRCROOT)/../../../../node_modules/react-native-config/ios/ReactNativeConfig",
); );
@ -262,6 +263,7 @@
HEADER_SEARCH_PATHS = ( HEADER_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(SRCROOT)/../../../../node_modules/React/**", "$(SRCROOT)/../../../../node_modules/React/**",
"$(SRCROOT)/../../../../ios/Pods/Headers/Public/React-Core",
"$(SRCROOT)/../../../../node_modules/react-native/React/**", "$(SRCROOT)/../../../../node_modules/react-native/React/**",
"$(SRCROOT)/../../../../node_modules/react-native-config/ios/ReactNativeConfig", "$(SRCROOT)/../../../../node_modules/react-native-config/ios/ReactNativeConfig",
); );

View File

@ -29,7 +29,7 @@ function extractResults() {
echo "Saving build result: ${nixResultPath}" echo "Saving build result: ${nixResultPath}"
mkdir -p "${resultPath}" mkdir -p "${resultPath}"
cp -vfr ${nixResultPath}/* "${resultPath}" cp -vfr ${nixResultPath}/* "${resultPath}"
chmod u+w -R "${resultPath}" chmod -R u+w "${resultPath}"
} }
# Load Nix profile # Load Nix profile

View File

@ -9,11 +9,11 @@ let
gradle = callPackage ./gradle.nix { }; gradle = callPackage ./gradle.nix { };
# Import a local patched version of node_modules, together with a local version of the Maven repo # Import a local patched version of node_modules, together with a local version of the Maven repo
mavenAndNpmDeps = callPackage ./maven-and-npm-deps { inherit stdenv stdenvNoCC gradle bash nodejs zlib localMavenRepoBuilder mkFilter projectNodePackage status-go; androidEnvShellHook = androidEnv.shellHook; }; mavenAndNpmDeps = callPackage ./maven-and-npm-deps { inherit stdenv stdenvNoCC gradle bash nodejs zlib localMavenRepoBuilder mkFilter projectNodePackage; };
# TARGETS # TARGETS
release = callPackage ./targets/release-android.nix { inherit target-os gradle mavenAndNpmDeps mkFilter nodejs jsbundle status-go zlib; androidEnvShellHook = androidEnv.shellHook; }; release = callPackage ./targets/release-android.nix { inherit target-os gradle mavenAndNpmDeps mkFilter nodejs jsbundle status-go zlib; androidEnvShellHook = androidEnv.shellHook; };
generate-maven-and-npm-deps-shell = callPackage ./maven-and-npm-deps/maven/shell.nix { inherit mkShell gradle maven projectNodePackage status-go; androidEnvShellHook = androidEnv.shellHook; }; generate-maven-and-npm-deps-shell = callPackage ./maven-and-npm-deps/maven/shell.nix { inherit mkShell gradle maven nodejs projectNodePackage status-go; androidEnvShellHook = androidEnv.shellHook; };
adb-shell = mkShell { adb-shell = mkShell {
buildInputs = [ androidEnv.licensedAndroidEnv ]; buildInputs = [ androidEnv.licensedAndroidEnv ];
inherit (androidEnv) shellHook; inherit (androidEnv) shellHook;

View File

@ -1,19 +1,17 @@
# #
# This script prepares a finalized version of node_modules # This script prepares a finalized version of node_modules,
# (required because for Android we need to run `gradle react-native-android:installArchives`, which builds some additional native libraries # as well as a local version of the Maven repository required by Gradle scripts
# under node_modules/react-native), as well as a local version of the Maven repository required by Gradle scripts
# #
{ stdenv, stdenvNoCC, lib, callPackage, { stdenv, stdenvNoCC, lib, callPackage,
gradle, bash, file, nodejs, status-go, zlib, gradle, bash, file, nodejs, zlib,
projectNodePackage, androidEnvShellHook, localMavenRepoBuilder, mkFilter }: projectNodePackage, localMavenRepoBuilder, mkFilter }:
let let
mavenLocalRepo = callPackage ./maven { inherit localMavenRepoBuilder; stdenv = if stdenv.isLinux then stdenv else stdenvNoCC; }; mavenLocalRepo = callPackage ./maven { inherit localMavenRepoBuilder; stdenv = if stdenv.isLinux then stdenv else stdenvNoCC; };
# Import the native dependencies for React Native Android builds # Import the native dependencies for React Native Android builds
jsc-filename = "jsc-android-236355.1.1"; react-native-deps = callPackage ./maven/reactnative-android-native-deps.nix { inherit stdenvNoCC; };
react-native-deps = callPackage ./maven/reactnative-android-native-deps.nix { inherit stdenvNoCC jsc-filename; };
createMobileFilesSymlinks = root: '' createMobileFilesSymlinks = root: ''
ln -sf ${root}/mobile_files/package.json.orig ${root}/package.json ln -sf ${root}/mobile_files/package.json.orig ${root}/package.json
@ -27,11 +25,10 @@ let
# Place build target directories in NIX_BUILD_TOP (normally represents /build) # Place build target directories in NIX_BUILD_TOP (normally represents /build)
projectBuildDir = "$NIX_BUILD_TOP/project"; projectBuildDir = "$NIX_BUILD_TOP/project";
mavenRepoDir = "$NIX_BUILD_TOP/.m2/repository"; mavenRepoDir = "$NIX_BUILD_TOP/.m2/repository";
reactNativeMavenPackageDir = "${mavenRepoDir}/com/facebook/react/react-native"; # This is directory where the react-native Maven package will be generated in
reactNativeDepsDir = "$NIX_BUILD_TOP/deps"; # Use local writable deps, otherwise (probably due to some interaction between Nix sandboxing and Java) gradle will fail copying directly from the nix store reactNativeDepsDir = "$NIX_BUILD_TOP/deps"; # Use local writable deps, otherwise (probably due to some interaction between Nix sandboxing and Java) gradle will fail copying directly from the nix store
in in
stdenv.mkDerivation { stdenv.mkDerivation {
name = "android-gradle-and-npm-modules"; name = "patched-android-gradle-and-npm-modules";
src = src =
let path = ./../../../..; # Import the root /android and /mobile_files folders clean of any build artifacts let path = ./../../../..; # Import the root /android and /mobile_files folders clean of any build artifacts
in builtins.path { # We use builtins.path so that we can name the resulting derivation, otherwise the name would be taken from the checkout directory, which is outside of our control in builtins.path { # We use builtins.path so that we can name the resulting derivation, otherwise the name would be taken from the checkout directory, which is outside of our control
@ -50,9 +47,10 @@ let
root = path; root = path;
}; };
}; };
phases = [ "unpackPhase" "patchPhase" "installPhase" "fixupPhase" ];
nativeBuildInputs = [ projectNodePackage ]; nativeBuildInputs = [ projectNodePackage ];
buildInputs = [ gradle nodejs bash file zlib mavenLocalRepo ]; buildInputs = [ gradle nodejs bash file zlib mavenLocalRepo ];
propagatedBuildInputs = [ react-native-deps ] ++ status-go.buildInputs; propagatedBuildInputs = [ react-native-deps ];
unpackPhase = '' unpackPhase = ''
runHook preUnpack runHook preUnpack
@ -65,8 +63,6 @@ let
# Copy RN maven dependencies and make them writable, otherwise Gradle copy fails (since the top-level directory is read-only, Java isn't smart enough to copy the child files/folders into that target directory) # Copy RN maven dependencies and make them writable, otherwise Gradle copy fails (since the top-level directory is read-only, Java isn't smart enough to copy the child files/folders into that target directory)
mkdir -p ${mavenRepoDir} mkdir -p ${mavenRepoDir}
cp -a ${mavenLocalRepo}/. ${mavenRepoDir} cp -a ${mavenLocalRepo}/. ${mavenRepoDir}
mkdir -p ${reactNativeMavenPackageDir}
chmod u+w ${reactNativeMavenPackageDir}/
cp -a ${react-native-deps}/deps ${reactNativeDepsDir} cp -a ${react-native-deps}/deps ${reactNativeDepsDir}
for d in `find ${reactNativeDepsDir} -mindepth 1 -maxdepth 1 -type d`; do for d in `find ${reactNativeDepsDir} -mindepth 1 -maxdepth 1 -type d`; do
chmod -R u+w $d chmod -R u+w $d
@ -129,11 +125,6 @@ let
patchMavenSources $f '${mavenLocalRepo}' patchMavenSources $f '${mavenLocalRepo}'
done done
# Patch prepareJSC so that it doesn't try to download from registry
substituteInPlace ${projectBuildDir}/node_modules/react-native/ReactAndroid/build.gradle \
--replace 'prepareJSC(dependsOn: downloadJSC)' 'prepareJSC(dependsOn: createNativeDepsDirectories)' \
--replace 'def jscTar = tarTree(downloadJSC.dest)' "def jscTar = tarTree(new File(\"${react-native-deps}/deps/${jsc-filename}.tar.gz\"))"
# Do not add a BuildId to the generated libraries, for reproducibility # Do not add a BuildId to the generated libraries, for reproducibility
substituteInPlace ${projectBuildDir}/node_modules/react-native/ReactAndroid/src/main/jni/Application.mk \ substituteInPlace ${projectBuildDir}/node_modules/react-native/ReactAndroid/src/main/jni/Application.mk \
--replace \ --replace \
@ -158,28 +149,6 @@ let
runHook postPatch runHook postPatch
''; '';
buildPhase =
androidEnvShellHook +
status-go.shellHook + ''
export HOME=$NIX_BUILD_TOP
export REACT_NATIVE_DEPENDENCIES="${reactNativeDepsDir}"
export STATUS_REACT_HOME="${projectBuildDir}"
pushd ${projectBuildDir}/android
# NOTE: This generates the react-native-android binaries under node_modules/react-native/android
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${lib.makeLibraryPath [ zlib ]} \
gradle -Dmaven.repo.local=${mavenRepoDir} --offline -S react-native-android:installArchives || exit
popd > /dev/null
'';
doCheck = true;
checkPhase = ''
runHook preCheck
test -d ${projectBuildDir}/node_modules/react-native/ReactAndroid/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/facebook || \
exit 1
test -d ${projectBuildDir}/node_modules/react-native/ReactAndroid/build/react-ndk/exported || \
exit 2
runHook postCheck
'';
installPhase = '' installPhase = ''
rm -rf $out rm -rf $out
mkdir -p $out/{project,.m2/repository} mkdir -p $out/{project,.m2/repository}

View File

@ -6,5 +6,5 @@ This folder contains the Nix expression (`maven-sources.nix`) that downloads all
- `generate-nix.sh`: This is the main entry point script, which will use Gradle to determine the dependencies (into `maven-inputs.txt`), and `nix/tools/maven/maven-inputs2nix.sh` to generate `default.nix` from those dependencies. - `generate-nix.sh`: This is the main entry point script, which will use Gradle to determine the dependencies (into `maven-inputs.txt`), and `nix/tools/maven/maven-inputs2nix.sh` to generate `default.nix` from those dependencies.
- `fetch-maven-deps.sh`: This script does the heavy work of determining Gradle dependencies and outputting a `maven-inputs.txt` file listing the external URLs. - `fetch-maven-deps.sh`: This script does the heavy work of determining Gradle dependencies and outputting a `maven-inputs.txt` file listing the external URLs.
- `reactnative-android-native-deps.nix`: Contains the Nix attribute set used to download the React Native dependencies used in `gradle react-native-android:installArchives`. - `reactnative-android-native-deps.nix`: Contains the Nix attribute set used to download the React Native dependencies used in React Native Gradle scripts.
- `maven-inputs.txt`: A list of Maven dependenciy URLs that can be used by `nix/tools/maven/maven-inputs2nix.sh` to generate `maven-sources.nix`. - `maven-inputs.txt`: A list of Maven dependenciy URLs that can be used by `nix/tools/maven/maven-inputs2nix.sh` to generate `maven-sources.nix`.

View File

@ -78,11 +78,6 @@ function determineArtifactUrl() {
local path=$(getPath "${tokens[@]}") local path=$(getPath "${tokens[@]}")
for mavenSourceUrl in ${mavenSources[@]}; do for mavenSourceUrl in ${mavenSources[@]}; do
if tryGetPOMFromURL "$mavenSourceUrl/$path"; then if tryGetPOMFromURL "$mavenSourceUrl/$path"; then
if [ "$path" = "com/google/firebase/firebase-analytics/16.0.3/firebase-analytics-16.0.3" ]; then
# For some reason maven doesn't detect the correct version of firebase-analytics so we have to hardcode it
# TODO: See if we can get rid of this by upgrading to latest firebase
echo "$mavenSourceUrl/com/google/firebase/firebase-analytics/15.0.2/firebase-analytics-15.0.2"
fi
echo "$mavenSourceUrl/$path" echo "$mavenSourceUrl/$path"
return return
fi fi
@ -164,12 +159,14 @@ function retrieveAdditionalDependencies() {
mvn_tmp_repo=$(mktemp -d) mvn_tmp_repo=$(mktemp -d)
trap "rm -rf $mvn_tmp_repo $tmp_pom_filename $deps_file_path $tmp_mvn_dep_tree_filename" ERR EXIT HUP INT trap "rm -rf $mvn_tmp_repo $tmp_pom_filename $deps_file_path $tmp_mvn_dep_tree_filename" ERR EXIT HUP INT
rnModules=$(node ./node_modules/react-native/cli.js config | jq -r '.dependencies | keys | .[]')
pushd $GIT_ROOT/android > /dev/null pushd $GIT_ROOT/android > /dev/null
gradleProjects=$(gradle projects $gradle_opts 2>&1 \ gradleProjects=$(gradle projects $gradle_opts 2>&1 \
| grep "Project ':" \ | grep "Project ':" \
| sed -E "s;^.--- Project '\:([@_a-zA-Z0-9\-]+)';\1;") | sed -E "s;^.--- Project '\:([@_a-zA-Z0-9\-]+)';\1;")
projects=( ${gradleProjects[@]} ) projects=( ${gradleProjects[@]} ${rnModules[@]} )
IFS=$'\n' sortedProjects=($(sort -u <<<"${projects[*]}")) IFS=$'\n' sortedProjects=($(sort -u <<<"${projects[*]}"))
unset IFS unset IFS

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
{ stdenvNoCC, fetchurl, jsc-filename }: { stdenvNoCC, fetchurl }:
let let
# These versions should match node_modules/react-native/ReactAndroid/gradle.properties # These versions should match node_modules/react-native/ReactAndroid/gradle.properties
@ -32,10 +32,6 @@ let
in stdenvNoCC.mkDerivation { in stdenvNoCC.mkDerivation {
name = "reactnative-android-native-deps"; name = "reactnative-android-native-deps";
srcs = builtins.map (d: (fetchurl { inherit (d) url sha256; })) react-native-deps-sources; srcs = builtins.map (d: (fetchurl { inherit (d) url sha256; })) react-native-deps-sources;
jsc = fetchurl {
url = "https://registry.npmjs.org/jsc-android/-/${jsc-filename}.tgz";
sha256 = "1s1fzmvpvdblzca7p2ifcysvd9na4jrsikaccqmfpgvkqjalfccp";
};
phases = [ "unpackPhase" ]; phases = [ "unpackPhase" ];
unpackPhase = '' unpackPhase = ''
# Unpack all source archives. # Unpack all source archives.
@ -44,7 +40,6 @@ in stdenvNoCC.mkDerivation {
for i in $srcs; do for i in $srcs; do
unpackFile "$i" unpackFile "$i"
done done
cp $jsc $out/deps/${jsc-filename}.tar.gz # do the work of downloadJSC
cd .. cd ..
export sourceRoot=$out/deps export sourceRoot=$out/deps

View File

@ -1,4 +1,4 @@
{ mkShell, curl, git, gradle, maven, { mkShell, curl, git, gradle, jq, maven, nodejs,
projectNodePackage, androidEnvShellHook, status-go }: projectNodePackage, androidEnvShellHook, status-go }:
mkShell { mkShell {
@ -6,7 +6,9 @@ mkShell {
curl curl
git git
gradle gradle
jq
maven maven
nodejs
projectNodePackage projectNodePackage
]; ];
shellHook = shellHook =

View File

@ -1,7 +1,7 @@
{ stdenv, stdenvNoCC, lib, target-os, callPackage, { stdenv, stdenvNoCC, lib, target-os, callPackage,
mkFilter, bash, file, gnumake, watchman, gradle, mkFilter, bash, file, gnumake, watchman, gradle,
androidEnvShellHook, mavenAndNpmDeps, androidEnvShellHook, mavenAndNpmDeps,
nodejs, openjdk, jsbundle, status-go, zlib }: nodejs, openjdk, jsbundle, status-go, unzip, zlib }:
{ build-number, { build-number,
build-type, # Build type (e.g. nightly, release, e2e). Default is to use .env.nightly file build-type, # Build type (e.g. nightly, release, e2e). Default is to use .env.nightly file
@ -21,7 +21,7 @@ let
if (build-type == "release" || build-type == "nightly" || build-type == "e2e") then ".env.${build-type}" else if (build-type == "release" || build-type == "nightly" || build-type == "e2e") then ".env.${build-type}" else
if build-type != "" then ".env.jenkins" else ".env"; if build-type != "" then ".env.jenkins" else ".env";
buildType' = if (build-type == "pr" || build-type == "e2e") then "pr" else "release"; /* PR builds shouldn't replace normal releases */ buildType' = if (build-type == "pr" || build-type == "e2e") then "pr" else "release"; /* PR builds shouldn't replace normal releases */
generatedApkPath = "android/app/build/outputs/apk/${buildType'}/app-${buildType'}.apk"; generatedApkPath = "$sourceRoot/android/app/build/outputs/apk/${buildType'}/app-${buildType'}.apk";
outApkName = "app.apk"; outApkName = "app.apk";
in stdenv.mkDerivation { in stdenv.mkDerivation {
@ -40,13 +40,23 @@ in stdenv.mkDerivation {
"resources" "resources"
]; ];
dirsToExclude = [ ".git" ".svn" "CVS" ".hg" ".gradle" "build" "intermediates" "libs" "obj" ]; dirsToExclude = [ ".git" ".svn" "CVS" ".hg" ".gradle" "build" "intermediates" "libs" "obj" ];
filesToInclude = [ envFileName "status-go-version.json" "VERSION" ]; filesToInclude = [ envFileName "status-go-version.json" "VERSION" "react-native.config.js" ];
root = path; root = path;
}; };
}; };
nativeBuildInputs = [ bash gradle ] ++ lib.optionals stdenv.isDarwin [ file gnumake watchman ]; nativeBuildInputs = [ bash gradle unzip ] ++ lib.optionals stdenv.isDarwin [ file gnumake watchman ];
buildInputs = [ nodejs openjdk ]; buildInputs = [ nodejs openjdk ];
phases = [ "unpackPhase" "patchPhase" "buildPhase" "installPhase" ]; phases = [ "unpackPhase" "patchPhase" "buildPhase" "checkPhase" "installPhase" ];
unpackPhase = ''
runHook preUnpack
cp -r $src ./project
chmod u+w -R ./project
export sourceRoot=$PWD/project
runHook postUnpack
'';
postUnpack = '' postUnpack = ''
mkdir -p ${gradleHome} mkdir -p ${gradleHome}
@ -62,7 +72,6 @@ in stdenv.mkDerivation {
cp -a --no-preserve=ownership ${sourceProjectDir}/android/ $sourceRoot/ cp -a --no-preserve=ownership ${sourceProjectDir}/android/ $sourceRoot/
chmod u+w $sourceRoot/android chmod u+w $sourceRoot/android
chmod u+w $sourceRoot/android/app chmod u+w $sourceRoot/android/app
chmod -R u+w $sourceRoot/android/.gradle
mkdir $sourceRoot/android/build && chmod -R u+w $sourceRoot/android/build mkdir $sourceRoot/android/build && chmod -R u+w $sourceRoot/android/build
# Copy node_modules/ directory # Copy node_modules/ directory
@ -76,13 +85,11 @@ in stdenv.mkDerivation {
prevSet=$- prevSet=$-
set -e set -e
substituteInPlace android/gradlew \ substituteInPlace $sourceRoot/android/gradlew \
--replace \ --replace \
'exec gradle' \ 'exec gradle' \
"exec gradle -Dmaven.repo.local='${localMavenRepo}' --offline ${gradle-opts}" "exec gradle -Dmaven.repo.local='${localMavenRepo}' --offline ${gradle-opts}"
# OPTIONAL: There's no need to forward debug ports for a release build, just disable it
set $prevSet set $prevSet
''; '';
buildPhase = buildPhase =
@ -96,7 +103,7 @@ in stdenv.mkDerivation {
capitalizedBuildType = toUpper (substring 0 1 buildType') + substring 1 (-1) buildType'; capitalizedBuildType = toUpper (substring 0 1 buildType') + substring 1 (-1) buildType';
in '' in ''
export STATUS_REACT_HOME=$PWD export STATUS_REACT_HOME=$PWD
export HOME=$NIX_BUILD_TOP export HOME=$sourceRoot
${exportEnvVars} ${exportEnvVars}
${if secrets-file != "" then "source ${secrets-file}" else ""} ${if secrets-file != "" then "source ${secrets-file}" else ""}
@ -104,12 +111,16 @@ in stdenv.mkDerivation {
${androidEnvShellHook} ${androidEnvShellHook}
${concatStrings (catAttrs "shellHook" [ mavenAndNpmDeps status-go ])} ${concatStrings (catAttrs "shellHook" [ mavenAndNpmDeps status-go ])}
pushd android pushd $sourceRoot/android
${adhocEnvVars} ./gradlew -PversionCode=${build-number} assemble${capitalizedBuildType} || exit ${adhocEnvVars} ./gradlew -PversionCode=${build-number} assemble${capitalizedBuildType} || exit
popd > /dev/null popd > /dev/null
${unsetEnvVars} ${unsetEnvVars}
''; '';
doCheck = true;
checkPhase = ''
unzip -l ${generatedApkPath} | grep 'assets/index.android.bundle'
'';
installPhase = '' installPhase = ''
mkdir -p $out mkdir -p $out
cp ${generatedApkPath} $out/${outApkName} cp ${generatedApkPath} $out/${outApkName}

View File

@ -29,19 +29,21 @@ if [ -d "$nodeModulesDir" ]; then
if [ -f "$sentinelFilePath" ]; then if [ -f "$sentinelFilePath" ]; then
existingPath="$(cat $sentinelFilePath)" existingPath="$(cat $sentinelFilePath)"
if [ "${existingPath}" != "${deps}" ]; then if [ "${existingPath}" != "${deps}" ]; then
echo "Yarn modules changed, copying over new version" echo "Yarn modules changed, copying new version over"
else else
echo "Checking for modifications in node_modules..." echo "Checking for modifications in node_modules..."
modifiedFiles=( $(find $nodeModulesDir -writable -type f -newer $sentinelFilePath \ modifiedFiles=(
-not \( -path "$nodeModulesDir/react-native/third-party/*" -prune \ $(find $nodeModulesDir -writable -type f -newer $sentinelFilePath \
-o -path "$nodeModulesDir/react-native/ReactAndroid/build/*" -prune \ -not \( -path "$nodeModulesDir/react-native/ReactAndroid/build/*" -prune \
-o -path "$nodeModulesDir/*/android/build/*" -prune \ -o -path "$nodeModulesDir/*/android/build/*" -prune \) -print) )
-o -path './resources/icons/*' -prune \) -print) )
if [ ${#modifiedFiles[@]} -eq 0 ]; then if [ ${#modifiedFiles[@]} -eq 0 ]; then
needCopyModules=0 needCopyModules=0
echo "No modifications detected." echo "No modifications detected."
else else
echo "Modifications detected in ${#modifiedFiles[@]} files:\n${modifiedFiles[@]}" echo "Modifications detected in ${#modifiedFiles[@]} files:"
for f in ${modifiedFiles[@]}; do
echo "- $(realpath --relative-to=$STATUS_REACT_HOME $f)"
done
fi fi
fi fi
fi fi

31
react-native.config.js Normal file
View File

@ -0,0 +1,31 @@
module.exports = {
dependencies: {
'react-native-config': {
platforms: {
ios: null,
},
},
'react-native-dialogs': {
platforms: {
android: null,
ios: null,
},
},
'react-native-image-resizer': {
platforms: {
ios: null,
},
},
'react-native-status-keycard': {
platforms: {
android: null,
ios: null,
},
},
'react-native-webview-bridge': {
platforms: {
android: null,
},
},
},
};

View File

@ -4,21 +4,23 @@
[clojure.walk :as walk] [clojure.walk :as walk]
[status-im.react-native.js-dependencies :as js-dependencies])) [status-im.react-native.js-dependencies :as js-dependencies]))
(def default-camera (.-default js-dependencies/camera)) (def default-camera
(-> js-dependencies/camera
(object/get "RNCamera")))
(defn constants [t] (defn- constants [t]
(-> default-camera (-> default-camera
(object/get "constants") (object/get "Constants")
(object/get t) (object/get t)
(js->clj) (js->clj)
(walk/keywordize-keys))) (walk/keywordize-keys)))
(def aspects (constants "Aspect")) (def aspects (constants "Orientation"))
(def capture-targets (constants "CaptureTarget")) (def capture-targets (constants "CaptureTarget"))
(def torch-modes (constants "TorchMode")) (def torch-modes (constants "FlashMode"))
(defn set-torch [state] (defn set-torch [state]
(set! (.-torchMode default-camera) (get torch-modes state))) (set! (.-flashMode default-camera) (get torch-modes state)))
(defn request-access-ios [then else] (defn request-access-ios [then else]
(-> (.checkVideoAuthorizationStatus default-camera) (-> (.checkVideoAuthorizationStatus default-camera)

View File

@ -12,7 +12,7 @@
[status-im.ui.components.icons.vector-icons :as icons])) [status-im.ui.components.icons.vector-icons :as icons]))
(defn image-captured [data] (defn image-captured [data]
(let [path (.-path data) (let [path (.-uri data)
_ (log/debug "Captured image: " path) _ (log/debug "Captured image: " path)
on-success (fn [base64] on-success (fn [base64]
(log/debug "Captured success: " base64) (log/debug "Captured success: " base64)
@ -30,16 +30,16 @@
toolbar/default-nav-back toolbar/default-nav-back
[toolbar/content-title (i18n/label :t/image-source-title)]] [toolbar/content-title (i18n/label :t/image-source-title)]]
[camera/camera {:style {:flex 1} [camera/camera {:style {:flex 1}
:aspect (:fill camera/aspects) ;:aspect (:fill camera/aspects)
:captureQuality "480p" :captureQuality "480p"
:captureTarget (:disk camera/capture-targets) ;:captureTarget (:disk camera/capture-targets)
:type "front" :type "front"
:ref #(reset! camera-ref %)}] :ref #(reset! camera-ref %)}]
[react/view styles/button-container [react/view styles/button-container
[react/view styles/button [react/view styles/button
[react/touchable-highlight {:on-press (fn [] [react/touchable-highlight {:on-press (fn []
(let [camera @camera-ref] (let [camera @camera-ref]
(-> (.capture camera) (-> (.takePictureAsync camera)
(.then image-captured) (.then image-captured)
(.catch #(log/debug "Error capturing image: " %)))))} (.catch #(log/debug "Error capturing image: " %)))))}
[react/view [react/view

View File

@ -40,7 +40,6 @@
(do (reset! barcode-read? true) (do (reset! barcode-read? true)
(on-barcode-read identifier %)))) (on-barcode-read identifier %))))
:ref #(reset! camera-initialized? true) :ref #(reset! camera-initialized? true)
:captureAudio false
:style styles/barcode-scanner}]) :style styles/barcode-scanner}])
[react/view styles/rectangle-container [react/view styles/rectangle-container
[react/view styles/rectangle [react/view styles/rectangle

View File

@ -58,9 +58,7 @@
[react/with-activity-indicator [react/with-activity-indicator
{} {}
[camera/camera {:style styles/preview [camera/camera {:style styles/preview
:aspect :fill ;:torchMode (camera/set-torch camera-flashlight)
:captureAudio false
:torchMode (camera/set-torch camera-flashlight)
:onBarCodeRead #(when-not @read-once? :onBarCodeRead #(when-not @read-once?
(reset! read-once? true) (reset! read-once? true)
(re-frame/dispatch [:wallet/fill-request-from-url (camera/get-qr-code-data %) :qr]))}]] (re-frame/dispatch [:wallet/fill-request-from-url (camera/get-qr-code-data %) :qr]))}]]

View File

@ -2,7 +2,7 @@
(def action-button #js {:default #js {:Item #js {}}}) (def action-button #js {:default #js {:Item #js {}}})
(def config #js {:default #js {}}) (def config #js {:default #js {}})
(def camera #js {:default #js {:constants #js {}}}) (def camera #js {:RNCamera #js {:Constants #js {}}})
(def dialogs #js {}) (def dialogs #js {})
(def dismiss-keyboard #js {}) (def dismiss-keyboard #js {})
(def emoji-picker #js {:default #js {}}) (def emoji-picker #js {:default #js {}})