* OPS: randombytes work * OPS: porting to RN android: added prompt, refactoring * OPS: better android prompt * FIX: scan qr callback * FIX: correct fee sat calculation for HD & classic segwit wallets * FIX: Fixed height for button in empty transaction list * FIX: keyboard issue on fee selection modal * FIX: slow QR code generation for HD backup screen * ADD: wallet reorder * FIX: TypeError: undefined is not an object (evaluating 'recommendedFees.halfHourFee') #133 * FIX: android appstore link * OPS: Code to Migrate Expo json * REF: renamed blitzhub to lndhub * OPS: Migration: move expo files instead of parsing * FIX: lndhub uri usage * FIX: no security alert on android (it was ios specific) * REF: better tx list rendering and sorting * ADD: verify tx on coinb.in * FIX: Tap to dismiss is not working #137 * REF: Removed Wallet gradients duplication. * REF: about screen * FIX: bech32 qr scan in send screen * FIX: better bip21 handling * Use of dayjs for transaction details * REF: QR code content follows BIP21 * ADD: fee in local currency when send * FIX: Refresh wallet info on page focuslocalNotifications
@ -1,8 +1,3 @@ |
|||||
{ |
{ |
||||
"presets": ["babel-preset-expo"], |
"presets": ["module:metro-react-native-babel-preset"] |
||||
"env": { |
|
||||
"development": { |
|
||||
"plugins": ["transform-react-jsx-source"] |
|
||||
} |
|
||||
} |
|
||||
} |
} |
@ -1,14 +0,0 @@ |
|||||
import './shim.js'; |
|
||||
import MainBottomTabs from './MainBottomTabs'; |
|
||||
import Sentry from 'sentry-expo'; |
|
||||
Sentry.config('https://23377936131848ca8003448a893cb622@sentry.io/1295736').install(); |
|
||||
|
|
||||
/** @type {AppStorage} */ |
|
||||
require('./BlueApp'); |
|
||||
|
|
||||
if (!Error.captureStackTrace) { |
|
||||
// captureStackTrace is only available when debugging
|
|
||||
Error.captureStackTrace = () => {}; |
|
||||
} |
|
||||
|
|
||||
export default MainBottomTabs; |
|
@ -0,0 +1,19 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<module external.linked.project.id="BlueWallet" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" type="JAVA_MODULE" version="4"> |
||||
|
<component name="FacetManager"> |
||||
|
<facet type="java-gradle" name="Java-Gradle"> |
||||
|
<configuration> |
||||
|
<option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" /> |
||||
|
<option name="BUILDABLE" value="false" /> |
||||
|
</configuration> |
||||
|
</facet> |
||||
|
</component> |
||||
|
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true"> |
||||
|
<exclude-output /> |
||||
|
<content url="file://$MODULE_DIR$"> |
||||
|
<excludeFolder url="file://$MODULE_DIR$/.gradle" /> |
||||
|
</content> |
||||
|
<orderEntry type="inheritedJdk" /> |
||||
|
<orderEntry type="sourceFolder" forTests="false" /> |
||||
|
</component> |
||||
|
</module> |
@ -0,0 +1,16 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<module external.system.id="GRADLE" type="JAVA_MODULE" version="4"> |
||||
|
<component name="FacetManager"> |
||||
|
<facet type="android-gradle" name="Android-Gradle"> |
||||
|
<configuration> |
||||
|
<option name="GRADLE_PROJECT_PATH" value=":" /> |
||||
|
</configuration> |
||||
|
</facet> |
||||
|
</component> |
||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true"> |
||||
|
<exclude-output /> |
||||
|
<content url="file://$MODULE_DIR$" /> |
||||
|
<orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" /> |
||||
|
<orderEntry type="sourceFolder" forTests="false" /> |
||||
|
</component> |
||||
|
</module> |
@ -0,0 +1,65 @@ |
|||||
|
# 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__' + jarfile[jarfile.rindex('/') + 1: jarfile.rindex('.jar')] |
||||
|
lib_deps.append(':' + name) |
||||
|
prebuilt_jar( |
||||
|
name = name, |
||||
|
binary_jar = jarfile, |
||||
|
) |
||||
|
|
||||
|
for aarfile in glob(['libs/*.aar']): |
||||
|
name = 'aars__' + aarfile[aarfile.rindex('/') + 1: aarfile.rindex('.aar')] |
||||
|
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 = "io.bluewallet.bluewallet", |
||||
|
) |
||||
|
|
||||
|
android_resource( |
||||
|
name = "res", |
||||
|
package = "io.bluewallet.bluewallet", |
||||
|
res = "src/main/res", |
||||
|
) |
||||
|
|
||||
|
android_binary( |
||||
|
name = "app", |
||||
|
keystore = "//android/keystores:debug", |
||||
|
manifest = "src/main/AndroidManifest.xml", |
||||
|
package_type = "debug", |
||||
|
deps = [ |
||||
|
":app-code", |
||||
|
], |
||||
|
) |
@ -0,0 +1,165 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" type="JAVA_MODULE" version="4"> |
||||
|
<component name="FacetManager"> |
||||
|
<facet type="android-gradle" name="Android-Gradle"> |
||||
|
<configuration> |
||||
|
<option name="GRADLE_PROJECT_PATH" value=":app" /> |
||||
|
</configuration> |
||||
|
</facet> |
||||
|
<facet type="android" name="Android"> |
||||
|
<configuration> |
||||
|
<option name="SELECTED_BUILD_VARIANT" value="debug" /> |
||||
|
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" /> |
||||
|
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" /> |
||||
|
<afterSyncTasks> |
||||
|
<task>generateDebugSources</task> |
||||
|
</afterSyncTasks> |
||||
|
<option name="ALLOW_USER_CONFIGURATION" value="false" /> |
||||
|
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" /> |
||||
|
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" /> |
||||
|
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" /> |
||||
|
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" /> |
||||
|
</configuration> |
||||
|
</facet> |
||||
|
</component> |
||||
|
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7"> |
||||
|
<output url="file://$MODULE_DIR$/build/intermediates/classes/debug" /> |
||||
|
<output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" /> |
||||
|
<exclude-output /> |
||||
|
<content url="file://$MODULE_DIR$"> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/react/debug" type="java-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/debug" isTestSource="true" generated="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/res" type="java-test-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/resources" type="java-test-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/assets" type="java-test-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/aidl" isTestSource="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/java" isTestSource="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/rs" isTestSource="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/shaders" isTestSource="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" /> |
||||
|
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" /> |
||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" /> |
||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> |
||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/check-manifest" /> |
||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" /> |
||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" /> |
||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaPrecompile" /> |
||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" /> |
||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" /> |
||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/prebuild" /> |
||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" /> |
||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" /> |
||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" /> |
||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/splits-support" /> |
||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" /> |
||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" /> |
||||
|
<excludeFolder url="file://$MODULE_DIR$/build/outputs" /> |
||||
|
<excludeFolder url="file://$MODULE_DIR$/build/tmp" /> |
||||
|
</content> |
||||
|
<orderEntry type="jdk" jdkName="Android API 27 Platform" jdkType="Android SDK" /> |
||||
|
<orderEntry type="sourceFolder" forTests="false" /> |
||||
|
<orderEntry type="library" name="Gradle: com.facebook.fresco:fbcore-1.10.0" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.facebook.fresco:fresco-1.10.0" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.facebook.fresco:drawee-1.10.0" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: android.arch.lifecycle:common:1.1.0@jar" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.facebook.fresco:imagepipeline-okhttp3-1.10.0" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-analytics-impl-16.0.5" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.android.support:support-annotations:27.1.1@jar" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-tasks-16.0.1" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.android.support:animated-vector-drawable-27.1.1" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.squareup.okhttp3:okhttp:3.11.0@jar" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-ads-identifier-16.0.0" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.android.support:support-compat-27.1.1" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.parse.bolts:bolts-tasks:1.4.0@jar" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: android.arch.lifecycle:viewmodel-1.1.0" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-measurement-base-16.0.4" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-analytics-16.0.5" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-stats-16.0.1" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.squareup.okhttp3:okhttp-urlconnection:3.11.0@jar" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.android.support:support-vector-drawable-27.1.1" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.android.support:support-core-ui-27.1.1" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-basement-16.0.1" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.android.support:support-media-compat-26.1.0" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.android.support:support-core-utils-27.1.1" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: org.webkit:android-jsc-r174650" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.android.support:support-v4-26.1.0" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-tagmanager-v4-impl-16.0.5" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: io.sentry:sentry:1.7.5@jar" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-base-16.0.1" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.squareup.okio:okio:1.14.0@jar" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: javax.inject:javax.inject:1@jar" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.android.support:support-fragment-27.1.1" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: android.arch.core:runtime-1.1.0" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.facebook.soloader:soloader-0.5.1" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.facebook.react:react-native-0.57.5" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.facebook.infer.annotation:infer-annotation:0.11.2@jar" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: org.slf4j:slf4j-api:1.7.24@jar" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.android.support:appcompat-v7-27.1.1" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.google.code.findbugs:jsr305:3.0.2@jar" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: android.arch.lifecycle:livedata-core-1.1.0" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: io.sentry:sentry-android:1.7.5@jar" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.facebook.fresco:imagepipeline-1.10.0" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: android.arch.core:common:1.1.0@jar" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.fasterxml.jackson.core:jackson-core:2.8.7@jar" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: com.facebook.fresco:imagepipeline-base-1.10.0" level="project" /> |
||||
|
<orderEntry type="library" name="Gradle: android.arch.lifecycle:runtime-1.1.0" level="project" /> |
||||
|
<orderEntry type="module" module-name="react-native-sentry" /> |
||||
|
<orderEntry type="module" module-name="react-native-google-analytics-bridge" /> |
||||
|
<orderEntry type="module" module-name="react-native-haptic-feedback" /> |
||||
|
<orderEntry type="module" module-name="react-native-gesture-handler" /> |
||||
|
<orderEntry type="module" module-name="react-native-prompt-android" /> |
||||
|
<orderEntry type="module" module-name="react-native-linear-gradient" /> |
||||
|
<orderEntry type="module" module-name="react-native-vector-icons" /> |
||||
|
<orderEntry type="module" module-name="react-native-svg" /> |
||||
|
<orderEntry type="module" module-name="react-native-device-info" /> |
||||
|
<orderEntry type="module" module-name="react-native-randombytes" /> |
||||
|
<orderEntry type="module" module-name="react-native-camera" /> |
||||
|
</component> |
||||
|
</module> |
@ -0,0 +1,177 @@ |
|||||
|
apply plugin: "com.android.application" |
||||
|
|
||||
|
import com.android.build.OutputFile |
||||
|
|
||||
|
/** |
||||
|
* The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets |
||||
|
* and bundleReleaseJsAndAssets). |
||||
|
* These basically call `react-native bundle` with the correct arguments during the Android build |
||||
|
* cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the |
||||
|
* bundle directly from the development server. Below you can see all the possible configurations |
||||
|
* and their defaults. If you decide to add a configuration block, make sure to add it before the |
||||
|
* `apply from: "../../node_modules/react-native/react.gradle"` line. |
||||
|
* |
||||
|
* project.ext.react = [ |
||||
|
* // the name of the generated asset file containing your JS bundle |
||||
|
* bundleAssetName: "index.android.bundle", |
||||
|
* |
||||
|
* // the entry file for bundle generation |
||||
|
* entryFile: "index.android.js", |
||||
|
* |
||||
|
* // whether to bundle JS and assets in debug mode |
||||
|
* bundleInDebug: false, |
||||
|
* |
||||
|
* // whether to bundle JS and assets in release mode |
||||
|
* bundleInRelease: true, |
||||
|
* |
||||
|
* // whether to bundle JS and assets in another build variant (if configured). |
||||
|
* // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants |
||||
|
* // The configuration property can be in the following formats |
||||
|
* // 'bundleIn${productFlavor}${buildType}' |
||||
|
* // 'bundleIn${buildType}' |
||||
|
* // bundleInFreeDebug: true, |
||||
|
* // bundleInPaidRelease: true, |
||||
|
* // bundleInBeta: true, |
||||
|
* |
||||
|
* // whether to disable dev mode in custom build variants (by default only disabled in release) |
||||
|
* // for example: to disable dev mode in the staging build type (if configured) |
||||
|
* devDisabledInStaging: true, |
||||
|
* // The configuration property can be in the following formats |
||||
|
* // 'devDisabledIn${productFlavor}${buildType}' |
||||
|
* // 'devDisabledIn${buildType}' |
||||
|
* |
||||
|
* // the root of your project, i.e. where "package.json" lives |
||||
|
* root: "../../", |
||||
|
* |
||||
|
* // where to put the JS bundle asset in debug mode |
||||
|
* jsBundleDirDebug: "$buildDir/intermediates/assets/debug", |
||||
|
* |
||||
|
* // where to put the JS bundle asset in release mode |
||||
|
* jsBundleDirRelease: "$buildDir/intermediates/assets/release", |
||||
|
* |
||||
|
* // where to put drawable resources / React Native assets, e.g. the ones you use via |
||||
|
* // require('./image.png')), in debug mode |
||||
|
* resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", |
||||
|
* |
||||
|
* // where to put drawable resources / React Native assets, e.g. the ones you use via |
||||
|
* // require('./image.png')), in release mode |
||||
|
* resourcesDirRelease: "$buildDir/intermediates/res/merged/release", |
||||
|
* |
||||
|
* // by default the gradle tasks are skipped if none of the JS files or assets change; this means |
||||
|
* // that we don't look at files in android/ or ios/ to determine whether the tasks are up to |
||||
|
* // date; if you have any other folders that you want to ignore for performance reasons (gradle |
||||
|
* // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ |
||||
|
* // for example, you might want to remove it from here. |
||||
|
* inputExcludes: ["android/**", "ios/**"], |
||||
|
* |
||||
|
* // override which node gets called and with what additional arguments |
||||
|
* nodeExecutableAndArgs: ["node"], |
||||
|
* |
||||
|
* // supply additional arguments to the packager |
||||
|
* extraPackagerArgs: [] |
||||
|
* ] |
||||
|
*/ |
||||
|
|
||||
|
project.ext.react = [ |
||||
|
entryFile: "index.js" |
||||
|
] |
||||
|
|
||||
|
apply from: "../../node_modules/react-native/react.gradle" |
||||
|
apply from: "../../node_modules/react-native-sentry/sentry.gradle" |
||||
|
|
||||
|
/** |
||||
|
* Set this to true to create two separate APKs instead of one: |
||||
|
* - An APK that only works on ARM devices |
||||
|
* - An APK that only works on x86 devices |
||||
|
* The advantage is the size of the APK is reduced by about 4MB. |
||||
|
* Upload all the APKs to the Play Store and people will download |
||||
|
* the correct one based on the CPU architecture of their device. |
||||
|
*/ |
||||
|
def enableSeparateBuildPerCPUArchitecture = false |
||||
|
|
||||
|
/** |
||||
|
* Run Proguard to shrink the Java bytecode in release builds. |
||||
|
*/ |
||||
|
def enableProguardInReleaseBuilds = false |
||||
|
|
||||
|
android { |
||||
|
compileSdkVersion rootProject.ext.compileSdkVersion |
||||
|
buildToolsVersion rootProject.ext.buildToolsVersion |
||||
|
|
||||
|
defaultConfig { |
||||
|
applicationId "io.bluewallet.bluewallet" |
||||
|
minSdkVersion rootProject.ext.minSdkVersion |
||||
|
targetSdkVersion rootProject.ext.targetSdkVersion |
||||
|
versionCode 9 |
||||
|
versionName "3.2.3" |
||||
|
ndk { |
||||
|
abiFilters "armeabi-v7a", "x86" |
||||
|
} |
||||
|
} |
||||
|
signingConfigs { |
||||
|
release { |
||||
|
if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) { |
||||
|
storeFile file(MYAPP_RELEASE_STORE_FILE) |
||||
|
storePassword MYAPP_RELEASE_STORE_PASSWORD |
||||
|
keyAlias MYAPP_RELEASE_KEY_ALIAS |
||||
|
keyPassword MYAPP_RELEASE_KEY_PASSWORD |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
splits { |
||||
|
abi { |
||||
|
reset() |
||||
|
enable enableSeparateBuildPerCPUArchitecture |
||||
|
universalApk false // If true, also generate a universal APK |
||||
|
include "armeabi-v7a", "x86" |
||||
|
} |
||||
|
} |
||||
|
buildTypes { |
||||
|
release { |
||||
|
minifyEnabled enableProguardInReleaseBuilds |
||||
|
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 |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
dependencies { |
||||
|
compile project(':react-native-camera') |
||||
|
compile project(':react-native-fs') |
||||
|
compile project(':react-native-gesture-handler') |
||||
|
compile project(':react-native-vector-icons') |
||||
|
compile project(':react-native-svg') |
||||
|
compile project(':react-native-sentry') |
||||
|
compile project(':react-native-randombytes') |
||||
|
compile project(':react-native-prompt-android') |
||||
|
compile project(':react-native-linear-gradient') |
||||
|
compile project(':react-native-haptic-feedback') |
||||
|
compile project(':react-native-google-analytics-bridge') |
||||
|
compile project(':react-native-device-info') |
||||
|
implementation (project(':react-native-camera')) { |
||||
|
exclude group: "com.android.support" |
||||
|
} |
||||
|
implementation fileTree(dir: "libs", include: ["*.jar"]) |
||||
|
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}" |
||||
|
implementation "com.facebook.react:react-native:+" // From node_modules |
||||
|
} |
||||
|
|
||||
|
// 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' |
||||
|
} |
@ -0,0 +1,17 @@ |
|||||
|
# 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 *; |
||||
|
#} |
@ -0,0 +1,27 @@ |
|||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" |
||||
|
package="io.bluewallet.bluewallet"> |
||||
|
|
||||
|
<uses-permission android:name="android.permission.INTERNET" /> |
||||
|
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> |
||||
|
<uses-permission android:name="android.permission.CAMERA" /> |
||||
|
|
||||
|
<application |
||||
|
android:name=".MainApplication" |
||||
|
android:label="@string/app_name" |
||||
|
android:icon="@mipmap/ic_launcher" |
||||
|
android:allowBackup="false" |
||||
|
android:theme="@style/AppTheme"> |
||||
|
<activity |
||||
|
android:name=".MainActivity" |
||||
|
android:label="@string/app_name" |
||||
|
android:configChanges="keyboard|keyboardHidden|orientation|screenSize" |
||||
|
android:windowSoftInputMode="adjustResize"> |
||||
|
<intent-filter> |
||||
|
<action android:name="android.intent.action.MAIN" /> |
||||
|
<category android:name="android.intent.category.LAUNCHER" /> |
||||
|
</intent-filter> |
||||
|
</activity> |
||||
|
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" /> |
||||
|
</application> |
||||
|
|
||||
|
</manifest> |
@ -0,0 +1,28 @@ |
|||||
|
package io.bluewallet.bluewallet; |
||||
|
|
||||
|
import com.facebook.react.ReactActivity; |
||||
|
import com.facebook.react.ReactActivityDelegate; |
||||
|
import com.facebook.react.ReactRootView; |
||||
|
import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView; |
||||
|
|
||||
|
public class MainActivity extends ReactActivity { |
||||
|
|
||||
|
/** |
||||
|
* Returns the name of the main component registered from JavaScript. |
||||
|
* This is used to schedule rendering of the component. |
||||
|
*/ |
||||
|
@Override |
||||
|
protected String getMainComponentName() { |
||||
|
return "BlueWallet"; // this one too
|
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
protected ReactActivityDelegate createReactActivityDelegate() { |
||||
|
return new ReactActivityDelegate(this, getMainComponentName()) { |
||||
|
@Override |
||||
|
protected ReactRootView createRootView() { |
||||
|
return new RNGestureHandlerEnabledRootView(MainActivity.this); |
||||
|
} |
||||
|
}; |
||||
|
} |
||||
|
} |
@ -0,0 +1,69 @@ |
|||||
|
package io.bluewallet.bluewallet; |
||||
|
|
||||
|
import android.app.Application; |
||||
|
|
||||
|
import com.facebook.react.ReactApplication; |
||||
|
import com.oblador.vectoricons.VectorIconsPackage; |
||||
|
import com.horcrux.svg.SvgPackage; |
||||
|
import io.sentry.RNSentryPackage; |
||||
|
import com.bitgo.randombytes.RandomBytesPackage; |
||||
|
import im.shimo.react.prompt.RNPromptPackage; |
||||
|
import com.BV.LinearGradient.LinearGradientPackage; |
||||
|
import com.mkuczera.RNReactNativeHapticFeedbackPackage; |
||||
|
import com.idehub.GoogleAnalyticsBridge.GoogleAnalyticsBridgePackage; |
||||
|
import com.learnium.RNDeviceInfo.RNDeviceInfo; |
||||
|
import com.facebook.react.ReactNativeHost; |
||||
|
import com.facebook.react.ReactPackage; |
||||
|
import com.facebook.react.shell.MainReactPackage; |
||||
|
import com.facebook.soloader.SoLoader; |
||||
|
import org.reactnative.camera.RNCameraPackage; |
||||
|
import com.swmansion.gesturehandler.react.RNGestureHandlerPackage; |
||||
|
import com.rnfs.RNFSPackage; |
||||
|
|
||||
|
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<ReactPackage> getPackages() { |
||||
|
return Arrays.<ReactPackage>asList( |
||||
|
new MainReactPackage(), |
||||
|
new RNFSPackage() , |
||||
|
new VectorIconsPackage(), |
||||
|
new SvgPackage(), |
||||
|
new RNSentryPackage(), |
||||
|
new RandomBytesPackage(), |
||||
|
new RNPromptPackage(), |
||||
|
new LinearGradientPackage(), |
||||
|
new RNReactNativeHapticFeedbackPackage(), |
||||
|
new GoogleAnalyticsBridgePackage(), |
||||
|
new RNDeviceInfo(), |
||||
|
new RNCameraPackage(), |
||||
|
new RNGestureHandlerPackage() |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
protected String getJSMainModuleName() { |
||||
|
return "index"; |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
@Override |
||||
|
public ReactNativeHost getReactNativeHost() { |
||||
|
return mReactNativeHost; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void onCreate() { |
||||
|
super.onCreate(); |
||||
|
SoLoader.init(this, /* native exopackage */ false); |
||||
|
} |
||||
|
} |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 8.0 KiB |
After Width: | Height: | Size: 8.0 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
@ -0,0 +1,3 @@ |
|||||
|
<resources> |
||||
|
<string name="app_name">Blue Wallet</string> |
||||
|
</resources> |
@ -0,0 +1,8 @@ |
|||||
|
<resources> |
||||
|
|
||||
|
<!-- Base application theme. --> |
||||
|
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> |
||||
|
<!-- Customize your theme here. --> |
||||
|
</style> |
||||
|
|
||||
|
</resources> |
@ -0,0 +1,50 @@ |
|||||
|
// Top-level build file where you can add configuration options common to all sub-projects/modules. |
||||
|
|
||||
|
buildscript { |
||||
|
ext { |
||||
|
buildToolsVersion = "27.0.3" |
||||
|
minSdkVersion = 16 |
||||
|
compileSdkVersion = 27 |
||||
|
targetSdkVersion = 26 |
||||
|
supportLibVersion = "27.1.1" |
||||
|
} |
||||
|
repositories { |
||||
|
google() |
||||
|
jcenter() |
||||
|
} |
||||
|
dependencies { |
||||
|
classpath 'com.android.tools.build:gradle:3.1.4' |
||||
|
|
||||
|
// NOTE: Do not place your application dependencies here; they belong |
||||
|
// in the individual module build.gradle files |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
allprojects { |
||||
|
repositories { |
||||
|
mavenLocal() |
||||
|
google() |
||||
|
jcenter() |
||||
|
maven { |
||||
|
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm |
||||
|
url "$rootDir/../node_modules/react-native/android" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
task wrapper(type: Wrapper) { |
||||
|
gradleVersion = '4.4' |
||||
|
distributionUrl = distributionUrl.replace("bin", "all") |
||||
|
} |
||||
|
|
||||
|
subprojects { |
||||
|
project.configurations.all { |
||||
|
resolutionStrategy.eachDependency { details -> |
||||
|
if (details.requested.group == 'com.android.support' |
||||
|
&& !details.requested.name.contains('multidex') ) { |
||||
|
details.useVersion "26.1.0" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,93 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<com.android.support> |
||||
|
<support-compat versions="24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<leanback-v17 versions="21.0.0,21.0.2,21.0.3,22.0.0,22.1.0,22.1.1,22.2.0,22.2.1,23.0.0,23.0.1,23.1.0,23.1.1,23.2.0,23.2.1,23.3.0,23.4.0,24.0.0-alpha1,24.0.0-alpha2,24.0.0-beta1,24.0.0,24.1.0,24.1.1,24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<recommendation versions="23.0.1,23.1.0,23.1.1,23.2.0,23.2.1,23.3.0,23.4.0,24.0.0-alpha1,24.0.0-alpha2,24.0.0-beta1,24.0.0,24.1.0,24.1.1,24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<support-tv-provider versions="26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<support-vector-drawable versions="23.2.0,23.2.1,23.3.0,23.4.0,24.0.0-alpha1,24.0.0-alpha2,24.0.0-beta1,24.0.0,24.1.0,24.1.1,24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<recyclerview-v7 versions="21.0.0,21.0.2,21.0.3,22.0.0,22.1.0,22.1.1,22.2.0,22.2.1,23.0.0,23.0.1,23.1.0,23.1.1,23.2.0,23.2.1,23.3.0,23.4.0,24.0.0-alpha1,24.0.0-alpha2,24.0.0-beta1,24.0.0,24.1.0,24.1.1,24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<preference-leanback-v17 versions="23.0.0,23.0.1,23.1.0,23.1.1,23.2.0,23.2.1,23.3.0,23.4.0,24.0.0-alpha1,24.0.0-alpha2,24.0.0-beta1,24.0.0,24.1.0,24.1.1,24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<preference-v14 versions="23.0.0,23.0.1,23.1.0,23.1.1,23.2.0,23.2.1,23.3.0,23.4.0,24.0.0-alpha1,24.0.0-alpha2,24.0.0-beta1,24.0.0,24.1.0,24.1.1,24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<percent versions="22.2.0,23.0.0,23.0.1,23.1.0,23.1.1,23.2.0,23.2.1,23.3.0,23.4.0,24.0.0-alpha1,24.0.0-alpha2,24.0.0-beta1,24.0.0,24.1.0,24.1.1,24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<support-media-compat versions="24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<cardview-v7 versions="21.0.0,21.0.2,21.0.3,22.0.0,22.1.0,22.1.1,22.2.0,22.2.1,23.0.0,23.0.1,23.1.0,23.1.1,23.2.0,23.2.1,23.3.0,23.4.0,24.0.0-alpha1,24.0.0-alpha2,24.0.0-beta1,24.0.0,24.1.0,24.1.1,24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<wearable versions="26.0.0-alpha1"/> |
||||
|
<exifinterface versions="25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<support-annotations versions="19.1.0,20.0.0,21.0.0,21.0.2,21.0.3,22.0.0,22.1.0,22.1.1,22.2.0,22.2.1,23.0.0,23.0.1,23.1.0,23.1.1,23.2.0,23.2.1,23.3.0,23.4.0,24.0.0-alpha1,24.0.0-alpha2,24.0.0-beta1,24.0.0,24.1.0,24.1.1,24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<appcompat-v7 versions="18.0.0,19.0.0,19.0.1,19.1.0,20.0.0,21.0.0,21.0.2,21.0.3,22.0.0,22.1.0,22.1.1,22.2.0,22.2.1,23.0.0,23.0.1,23.1.0,23.1.1,23.2.0,23.2.1,23.3.0,23.4.0,24.0.0-alpha1,24.0.0-alpha2,24.0.0-beta1,24.0.0,24.1.0,24.1.1,24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<palette-v7 versions="21.0.0,21.0.2,21.0.3,22.0.0,22.1.0,22.1.1,22.2.0,22.2.1,23.0.0,23.0.1,23.1.0,23.1.1,23.2.0,23.2.1,23.3.0,23.4.0,24.0.0-alpha1,24.0.0-alpha2,24.0.0-beta1,24.0.0,24.1.0,24.1.1,24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<multidex-instrumentation versions="1.0.0,1.0.1,1.0.2,1.0.3"/> |
||||
|
<multidex versions="1.0.0,1.0.1,1.0.2,1.0.3"/> |
||||
|
<mediarouter-v7 versions="18.0.0,19.0.0,19.0.1,19.1.0,20.0.0,21.0.0,21.0.2,21.0.3,22.0.0,22.1.0,22.1.1,22.2.0,22.2.1,23.0.0,23.0.1,23.1.0,23.1.1,23.2.0,23.2.1,23.3.0,23.4.0,24.0.0-alpha1,24.0.0-alpha2,24.0.0-beta1,24.0.0,24.1.0,24.1.1,24.2.0,24.2.1,25.0.0,25.0.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-alpha4,28.0.0-alpha5,28.0.0-beta01,28.0.0"/> |
||||
|
<preference-v7 versions="23.0.0,23.0.1,23.1.0,23.1.1,23.2.0,23.2.1,23.3.0,23.4.0,24.0.0-alpha1,24.0.0-alpha2,24.0.0-beta1,24.0.0,24.1.0,24.1.1,24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<support-dynamic-animation versions="25.3.0,25.3.1,25.4.0,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<support-fragment versions="24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<design versions="22.2.0,22.2.1,23.0.0,23.0.1,23.1.0,23.1.1,23.2.0,23.2.1,23.3.0,23.4.0,24.0.0-alpha1,24.0.0-alpha2,24.0.0-beta1,24.0.0,24.1.0,24.1.1,24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<transition versions="24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<customtabs versions="23.0.0,23.0.1,23.1.0,23.1.1,23.2.0,23.2.1,23.3.0,23.4.0,24.0.0-alpha1,24.0.0-alpha2,24.0.0-beta1,24.0.0,24.1.0,24.1.1,24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<support-core-ui versions="24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<gridlayout-v7 versions="13.0.0,18.0.0,19.0.0,19.0.1,19.1.0,20.0.0,21.0.0,21.0.2,21.0.3,22.0.0,22.1.0,22.1.1,22.2.0,22.2.1,23.0.0,23.0.1,23.1.0,23.1.1,23.2.0,23.2.1,23.3.0,23.4.0,24.0.0-alpha1,24.0.0-alpha2,24.0.0-beta1,24.0.0,24.1.0,24.1.1,24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<animated-vector-drawable versions="23.2.0,23.2.1,23.3.0,23.4.0,24.0.0-alpha1,24.0.0-alpha2,24.0.0-beta1,24.0.0,24.1.0,24.1.1,24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<support-core-utils versions="24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<support-v13 versions="13.0.0,18.0.0,19.0.0,19.0.1,19.1.0,20.0.0,21.0.0,21.0.2,21.0.3,22.0.0,22.1.0,22.1.1,22.2.0,22.2.1,23.0.0,23.0.1,23.1.0,23.1.1,23.2.0,23.2.1,23.3.0,23.4.0,24.0.0-alpha1,24.0.0-alpha2,24.0.0-beta1,24.0.0,24.1.0,24.1.1,24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<instantvideo versions="26.0.0-alpha1"/> |
||||
|
<support-v4 versions="13.0.0,18.0.0,19.0.0,19.0.1,19.1.0,20.0.0,21.0.0,21.0.2,21.0.3,22.0.0,22.1.0,22.1.1,22.2.0,22.2.1,23.0.0,23.0.1,23.1.0,23.1.1,23.2.0,23.2.1,23.3.0,23.4.0,24.0.0-alpha1,24.0.0-alpha2,24.0.0-beta1,24.0.0,24.1.0,24.1.1,24.2.0,24.2.1,25.0.0,25.0.1,25.1.0,25.1.1,25.2.0,25.3.0,25.3.1,25.4.0,26.0.0-alpha1,26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<support-emoji versions="26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<wear versions="26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<support-emoji-appcompat versions="26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<support-emoji-bundled versions="26.0.0-beta1,26.0.0-beta2,26.0.0,26.0.1,26.0.2,26.1.0,27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<support-content versions="27.0.0,27.0.1,27.0.2,27.1.0,27.1.1,28.0.0-alpha1"/> |
||||
|
<design-bottomnavigation versions="28.0.0-alpha1"/> |
||||
|
<design-button versions="28.0.0-alpha1"/> |
||||
|
<design-circularreveal-cardview versions="28.0.0-alpha1"/> |
||||
|
<design-bottomappbar versions="28.0.0-alpha1"/> |
||||
|
<design-card versions="28.0.0-alpha1"/> |
||||
|
<design-shape versions="28.0.0-alpha1"/> |
||||
|
<design-drawable versions="28.0.0-alpha1"/> |
||||
|
<design-bottomsheet versions="28.0.0-alpha1"/> |
||||
|
<design-floatingactionbutton versions="28.0.0-alpha1"/> |
||||
|
<design-circularreveal-coordinatorlayout versions="28.0.0-alpha1"/> |
||||
|
<design-textfield versions="28.0.0-alpha1"/> |
||||
|
<design-stateful versions="28.0.0-alpha1"/> |
||||
|
<design-circularreveal versions="28.0.0-alpha1"/> |
||||
|
<design-expandable versions="28.0.0-alpha1"/> |
||||
|
<design-navigation versions="28.0.0-alpha1"/> |
||||
|
<design-dialog versions="28.0.0-alpha1"/> |
||||
|
<design-canvas versions="28.0.0-alpha1"/> |
||||
|
<design-tabs versions="28.0.0-alpha1"/> |
||||
|
<design-chip versions="28.0.0-alpha1"/> |
||||
|
<design-snackbar versions="28.0.0-alpha1"/> |
||||
|
<design-theme versions="28.0.0-alpha1"/> |
||||
|
<design-math versions="28.0.0-alpha1"/> |
||||
|
<design-transformation versions="28.0.0-alpha1"/> |
||||
|
<design-widget versions="28.0.0-alpha1"/> |
||||
|
<design-animation versions="28.0.0-alpha1"/> |
||||
|
<design-typography versions="28.0.0-alpha1"/> |
||||
|
<design-color versions="28.0.0-alpha1"/> |
||||
|
<design-internal versions="28.0.0-alpha1"/> |
||||
|
<design-resources versions="28.0.0-alpha1"/> |
||||
|
<design-ripple versions="28.0.0-alpha1"/> |
||||
|
<coordinatorlayout versions="28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<collections versions="28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<slidingpanelayout versions="28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<asynclayoutinflater versions="28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<slices-view versions="28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<recyclerview-selection versions="28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<viewpager versions="28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<cursoradapter versions="28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<localbroadcastmanager versions="28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<heifwriter versions="28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<customview versions="28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<print versions="28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<slices-builders versions="28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<interpolator versions="28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<slices-core versions="28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<loader versions="28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<swiperefreshlayout versions="28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<drawerlayout versions="28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<documentfile versions="28.0.0-alpha1,28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<webkit versions="28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<car versions="28.0.0-alpha3,28.0.0-alpha4,28.0.0-alpha5"/> |
||||
|
<versionedparcelable versions="28.0.0-alpha3,28.0.0-beta01,28.0.0-rc01,28.0.0-rc02,28.0.0"/> |
||||
|
<media2 versions="28.0.0-alpha01,28.0.0-alpha02,28.0.0-alpha03"/> |
||||
|
</com.android.support> |
@ -0,0 +1,115 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<metadata> |
||||
|
<com.android.support.constraint/> |
||||
|
<com.android.databinding/> |
||||
|
<com.android.support/> |
||||
|
<com.android.support.test/> |
||||
|
<com.android.support.test.janktesthelper/> |
||||
|
<com.android.support.test.uiautomator/> |
||||
|
<com.android.support.test.espresso/> |
||||
|
<android.arch.persistence.room/> |
||||
|
<android.arch.lifecycle/> |
||||
|
<android.arch.core/> |
||||
|
<com.google.android.instantapps/> |
||||
|
<com.google.android.instantapps.thirdpartycompat/> |
||||
|
<com.android.java.tools.build/> |
||||
|
<com.android.tools/> |
||||
|
<com.android.tools.layoutlib/> |
||||
|
<com.android.tools.ddms/> |
||||
|
<com.android.tools.external.com-intellij/> |
||||
|
<com.android.tools.build/> |
||||
|
<com.android.tools.analytics-library/> |
||||
|
<com.android.tools.internal.build.test/> |
||||
|
<com.android.tools.lint/> |
||||
|
<com.android.tools.external.org-jetbrains/> |
||||
|
<com.android.support.test.espresso.idling/> |
||||
|
<com.android.support.test.services/> |
||||
|
<com.google.firebase/> |
||||
|
<com.google.android.gms/> |
||||
|
<com.google.gms/> |
||||
|
<android.arch.paging/> |
||||
|
<com.crashlytics.sdk.android/> |
||||
|
<io.fabric.sdk.android/> |
||||
|
<android.arch.persistence/> |
||||
|
<com.google.android.wearable/> |
||||
|
<com.google.android.support/> |
||||
|
<com.android.installreferrer/> |
||||
|
<com.google.ar/> |
||||
|
<androidx.core/> |
||||
|
<com.google.android.things/> |
||||
|
<com.android.tools.build.jetifier/> |
||||
|
<tools.base.build-system.debug/> |
||||
|
<androidx.databinding/> |
||||
|
<androidx.constraintlayout/> |
||||
|
<org.chromium.net/> |
||||
|
<com.google.android.play/> |
||||
|
<androidx.multidex/> |
||||
|
<com.google.android.material/> |
||||
|
<androidx.test.services/> |
||||
|
<androidx.test.janktesthelper/> |
||||
|
<androidx.test/> |
||||
|
<androidx.test.espresso/> |
||||
|
<androidx.test.espresso.idling/> |
||||
|
<androidx.test.uiautomator/> |
||||
|
<androidx.room/> |
||||
|
<androidx.paging/> |
||||
|
<androidx.lifecycle/> |
||||
|
<androidx.sqlite/> |
||||
|
<androidx.arch.core/> |
||||
|
<android.arch.work/> |
||||
|
<android.arch.navigation/> |
||||
|
<androidx.mediarouter/> |
||||
|
<androidx.percentlayout/> |
||||
|
<androidx.emoji/> |
||||
|
<androidx.cardview/> |
||||
|
<androidx.preference/> |
||||
|
<androidx.wear/> |
||||
|
<androidx.legacy/> |
||||
|
<androidx.documentfile/> |
||||
|
<androidx.car/> |
||||
|
<androidx.swiperefreshlayout/> |
||||
|
<androidx.leanback/> |
||||
|
<androidx.appcompat/> |
||||
|
<androidx.customview/> |
||||
|
<androidx.gridlayout/> |
||||
|
<androidx.vectordrawable/> |
||||
|
<androidx.heifwriter/> |
||||
|
<androidx.transition/> |
||||
|
<androidx.print/> |
||||
|
<androidx.viewpager/> |
||||
|
<androidx.annotation/> |
||||
|
<androidx.exifinterface/> |
||||
|
<androidx.dynamicanimation/> |
||||
|
<androidx.browser/> |
||||
|
<androidx.localbroadcastmanager/> |
||||
|
<androidx.asynclayoutinflater/> |
||||
|
<androidx.contentpager/> |
||||
|
<androidx.slidingpanelayout/> |
||||
|
<androidx.cursoradapter/> |
||||
|
<androidx.media/> |
||||
|
<androidx.loader/> |
||||
|
<androidx.interpolator/> |
||||
|
<androidx.coordinatorlayout/> |
||||
|
<androidx.fragment/> |
||||
|
<androidx.tvprovider/> |
||||
|
<androidx.slice/> |
||||
|
<androidx.collection/> |
||||
|
<androidx.recommendation/> |
||||
|
<androidx.drawerlayout/> |
||||
|
<androidx.recyclerview/> |
||||
|
<androidx.webkit/> |
||||
|
<androidx.palette/> |
||||
|
<com.google.ar.sceneform/> |
||||
|
<com.google.ar.sceneform.ux/> |
||||
|
<androidx.test.ext/> |
||||
|
<com.google.android.ads.consent/> |
||||
|
<androidx.versionedparcelable/> |
||||
|
<androidx.media2/> |
||||
|
<com.google.ads.afsn/> |
||||
|
<com.google.android.ads/> |
||||
|
<androidx.biometric/> |
||||
|
<androidx.concurrent/> |
||||
|
<androidx.activity/> |
||||
|
<com.android.tools.apkparser/> |
||||
|
<com.android.tools.pixelprobe/> |
||||
|
</metadata> |
@ -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.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -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 |
@ -0,0 +1,5 @@ |
|||||
|
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 |
@ -0,0 +1,172 @@ |
|||||
|
#!/usr/bin/env sh |
||||
|
|
||||
|
############################################################################## |
||||
|
## |
||||
|
## Gradle start up script for UN*X |
||||
|
## |
||||
|
############################################################################## |
||||
|
|
||||
|
# 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\"`/" >/dev/null |
||||
|
APP_HOME="`pwd -P`" |
||||
|
cd "$SAVED" >/dev/null |
||||
|
|
||||
|
APP_NAME="Gradle" |
||||
|
APP_BASE_NAME=`basename "$0"` |
||||
|
|
||||
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. |
||||
|
DEFAULT_JVM_OPTS="" |
||||
|
|
||||
|
# 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 |
||||
|
nonstop=false |
||||
|
case "`uname`" in |
||||
|
CYGWIN* ) |
||||
|
cygwin=true |
||||
|
;; |
||||
|
Darwin* ) |
||||
|
darwin=true |
||||
|
;; |
||||
|
MINGW* ) |
||||
|
msys=true |
||||
|
;; |
||||
|
NONSTOP* ) |
||||
|
nonstop=true |
||||
|
;; |
||||
|
esac |
||||
|
|
||||
|
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" -a "$nonstop" = "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"` |
||||
|
JAVACMD=`cygpath --unix "$JAVACMD"` |
||||
|
|
||||
|
# 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 |
||||
|
|
||||
|
# Escape application args |
||||
|
save () { |
||||
|
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done |
||||
|
echo " " |
||||
|
} |
||||
|
APP_ARGS=$(save "$@") |
||||
|
|
||||
|
# Collect all arguments for the java command, following the shell quoting and substitution rules |
||||
|
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" |
||||
|
|
||||
|
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong |
||||
|
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then |
||||
|
cd "$(dirname "$0")" |
||||
|
fi |
||||
|
|
||||
|
exec "$JAVACMD" "$@" |
@ -0,0 +1,84 @@ |
|||||
|
@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 |
||||
|
|
||||
|
set DIRNAME=%~dp0 |
||||
|
if "%DIRNAME%" == "" set DIRNAME=. |
||||
|
set APP_BASE_NAME=%~n0 |
||||
|
set APP_HOME=%DIRNAME% |
||||
|
|
||||
|
@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= |
||||
|
|
||||
|
@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 Windows variants |
||||
|
|
||||
|
if not "%OS%" == "Windows_NT" goto win9xME_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=%* |
||||
|
|
||||
|
: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 |
@ -0,0 +1,8 @@ |
|||||
|
keystore( |
||||
|
name = "debug", |
||||
|
properties = "debug.keystore.properties", |
||||
|
store = "debug.keystore", |
||||
|
visibility = [ |
||||
|
"PUBLIC", |
||||
|
], |
||||
|
) |
@ -0,0 +1,4 @@ |
|||||
|
key.store=debug.keystore |
||||
|
key.alias=androiddebugkey |
||||
|
key.store.password=android |
||||
|
key.alias.password=android |
@ -0,0 +1,5 @@ |
|||||
|
defaults.url=https://sentry.io/ |
||||
|
defaults.org=bluewallet |
||||
|
defaults.project=bluewallet |
||||
|
auth.token=0ee298bd4d3743819f710a5ed555f5429e4ffe64acbb41ac933f2745b0c163da |
||||
|
cli.executable=node_modules/@sentry/cli/bin/sentry-cli |
@ -0,0 +1,29 @@ |
|||||
|
rootProject.name = 'BlueWallet' |
||||
|
include ':react-native-camera' |
||||
|
project(':react-native-camera').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-camera/android') |
||||
|
include ':react-native-fs' |
||||
|
project(':react-native-fs').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-fs/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-vector-icons' |
||||
|
project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android') |
||||
|
include ':react-native-svg' |
||||
|
project(':react-native-svg').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-svg/android') |
||||
|
include ':react-native-sentry' |
||||
|
project(':react-native-sentry').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-sentry/android') |
||||
|
include ':react-native-randombytes' |
||||
|
project(':react-native-randombytes').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-randombytes/android') |
||||
|
include ':react-native-prompt-android' |
||||
|
project(':react-native-prompt-android').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-prompt-android/android') |
||||
|
include ':react-native-linear-gradient' |
||||
|
project(':react-native-linear-gradient').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-linear-gradient/android') |
||||
|
include ':react-native-haptic-feedback' |
||||
|
project(':react-native-haptic-feedback').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-haptic-feedback/android') |
||||
|
include ':react-native-google-analytics-bridge' |
||||
|
project(':react-native-google-analytics-bridge').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-google-analytics-bridge/android') |
||||
|
include ':react-native-device-info' |
||||
|
project(':react-native-device-info').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-device-info/android') |
||||
|
include ':react-native-camera' |
||||
|
project(':react-native-camera').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-camera/android') |
||||
|
|
||||
|
include ':app' |
@ -1,56 +1,7 @@ |
|||||
{ |
{ |
||||
"expo": { |
"displayName": "Blue Wallet", |
||||
"sdkVersion": "30.0.0", |
"name": "BlueWallet", |
||||
"version": "3.1.2", |
"ios": { |
||||
"privacy": "public", |
"buildNumber": "118" |
||||
"platforms": [ |
|
||||
"ios" |
|
||||
], |
|
||||
"ios": { |
|
||||
"buildNumber": "117", |
|
||||
"supportsTablet": true, |
|
||||
"bundleIdentifier": "io.bluewallet.bluewallet", |
|
||||
"infoPlist": { |
|
||||
"NSLocationWhenInUseUsageDescription": "Discover local stores nearby that accept Bitcoin", |
|
||||
"NSCameraUsageDescription": "Allow BlueWallet to scan QR codes", |
|
||||
"ITSAppUsesNonExemptEncryption": false |
|
||||
} |
|
||||
}, |
|
||||
"name": "Blue Wallet", |
|
||||
"description": "Bitcoin wallet app. Alpha version (iOS only)", |
|
||||
"slug": "bluewallet", |
|
||||
"githubUrl": "https://github.com/BlueWallet/BlueWallet", |
|
||||
"orientation": "portrait", |
|
||||
"primaryColor": "#00aced", |
|
||||
"icon": "img/icon.png", |
|
||||
"notification": { |
|
||||
"icon": "https://s3.amazonaws.com/exp-us-standard/placeholder-push-icon.png", |
|
||||
"color": "#000000" |
|
||||
}, |
|
||||
"splash": { |
|
||||
"backgroundColor": "#FFFFFF", |
|
||||
"image": "./img/splash/splash.png" |
|
||||
}, |
|
||||
"android": { |
|
||||
"package": "io.bluewallet.bluewallet" |
|
||||
}, |
|
||||
"updates": { |
|
||||
"enabled": false |
|
||||
}, |
|
||||
"assetBundlePatterns": [ |
|
||||
"**/*" |
|
||||
], |
|
||||
"hooks": { |
|
||||
"postPublish": [ |
|
||||
{ |
|
||||
"file": "sentry-expo/upload-sourcemaps", |
|
||||
"config": { |
|
||||
"organization": "bluewallet", |
|
||||
"project": "bluewallet", |
|
||||
"authToken": "sentry_api_key" |
|
||||
} |
|
||||
} |
|
||||
] |
|
||||
} |
|
||||
} |
} |
||||
} |
} |
@ -1,69 +0,0 @@ |
|||||
import { AppStorage } from './class'; |
|
||||
import { Accelerometer } from 'expo'; |
|
||||
import { AsyncStorage } from 'react-native'; |
|
||||
const bitcoin = require('bitcoinjs-lib'); |
|
||||
const REQUIRE_NUM_CHUNKS = 16; |
|
||||
|
|
||||
// 256 priv key = 32 bytes x 8 chunks
|
|
||||
// each chunk needs 32 bits of entropy (since ISAAC is 32 bit)
|
|
||||
// 8 * 32 = 256 bits of entropy for one private key
|
|
||||
// we read accelerometer 10 times per sec, getting 2 bits of entropy => 20 bits of entropy per sec
|
|
||||
// 256/20 = 13 sec of gathering entropy
|
|
||||
|
|
||||
let chunks = []; // array of 32bit ints
|
|
||||
let currenChunk = ''; // temp storage of bits (string)
|
|
||||
let runningListeners = 0; |
|
||||
|
|
||||
let listener = function(accelerometerData) { |
|
||||
let hex = bitcoin.crypto.sha256(accelerometerData.x + '\t' + accelerometerData.y + '\t' + accelerometerData.z).toString('hex'); // whitening
|
|
||||
let dec = parseInt('0x' + hex[0] + hex[1]); |
|
||||
let entropyBits = dec & 0b11; |
|
||||
|
|
||||
currenChunk += ((entropyBits < 2 && '0') || '') + entropyBits.toString(2); // always 2-char string
|
|
||||
|
|
||||
if (currenChunk.length === 32) { |
|
||||
// got enough bits for 32bit int
|
|
||||
console.log(currenChunk, parseInt(currenChunk, 2)); |
|
||||
chunks.push(currenChunk); |
|
||||
chunks.push(parseInt(currenChunk, 2)); |
|
||||
currenChunk = ''; |
|
||||
} |
|
||||
|
|
||||
if (chunks.length >= REQUIRE_NUM_CHUNKS) { |
|
||||
console.log('got enough entropy, saving to storage'); |
|
||||
Accelerometer.removeAllListeners(); |
|
||||
runningListeners--; |
|
||||
AsyncStorage.setItem(AppStorage.ENTROPY, JSON.stringify(chunks)); |
|
||||
} |
|
||||
}; |
|
||||
|
|
||||
async function start() { |
|
||||
let entropy = await AsyncStorage.getItem(AppStorage.ENTROPY); |
|
||||
try { |
|
||||
entropy = JSON.parse(entropy); |
|
||||
} catch (Err) { |
|
||||
entropy = []; |
|
||||
} |
|
||||
chunks = entropy || []; |
|
||||
console.log('got', chunks.length * 32, 'bits of entropy'); |
|
||||
|
|
||||
setInterval(() => { |
|
||||
if (chunks.length < REQUIRE_NUM_CHUNKS && runningListeners === 0) { |
|
||||
console.log('not enough entropy, starting listener to gather'); |
|
||||
Accelerometer.addListener(listener); |
|
||||
runningListeners++; |
|
||||
} |
|
||||
}, 1000); |
|
||||
} |
|
||||
|
|
||||
function gotEnoughEntropy() { |
|
||||
return chunks.length >= 8; // enough for at least one priv key
|
|
||||
} |
|
||||
|
|
||||
function get32bitInt() { |
|
||||
return chunks.pop(); |
|
||||
} |
|
||||
|
|
||||
module.exports.get32bitInt = get32bitInt; |
|
||||
module.exports.start = start; |
|
||||
module.exports.gotEnoughEntropy = gotEnoughEntropy; |
|
@ -0,0 +1,9 @@ |
|||||
|
ANDROID |
||||
|
======= |
||||
|
|
||||
|
https://facebook.github.io/react-native/docs/signed-apk-android |
||||
|
https://developer.android.com/studio/run/emulator-commandline |
||||
|
|
||||
|
./gradlew cleanBuildCache |
||||
|
./gradlew assembleRelease |
||||
|
react-native run-android --variant=release |
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 87 KiB |
After Width: | Height: | Size: 252 KiB |
After Width: | Height: | Size: 481 KiB |
@ -0,0 +1,35 @@ |
|||||
|
import React from 'react'; |
||||
|
import './shim.js'; |
||||
|
import MainBottomTabs from './MainBottomTabs'; |
||||
|
import { Sentry } from 'react-native-sentry'; |
||||
|
import { AppRegistry } from 'react-native'; |
||||
|
import WalletMigrate from './screen/wallets/walletMigrate'; |
||||
|
import { name as appName } from './app.json'; |
||||
|
/** @type {AppStorage} */ |
||||
|
const BlueApp = require('./BlueApp'); |
||||
|
if (process.env.NODE_ENV !== 'development') { |
||||
|
Sentry.config('https://23377936131848ca8003448a893cb622@sentry.io/1295736').install(); |
||||
|
} |
||||
|
|
||||
|
if (!Error.captureStackTrace) { |
||||
|
// captureStackTrace is only available when debugging
|
||||
|
Error.captureStackTrace = () => {}; |
||||
|
} |
||||
|
|
||||
|
class BlueAppComponent extends React.Component { |
||||
|
constructor(props) { |
||||
|
super(props); |
||||
|
this.state = { isMigratingData: true }; |
||||
|
} |
||||
|
|
||||
|
async setIsMigratingData() { |
||||
|
await BlueApp.startAndDecrypt(); |
||||
|
this.setState({ isMigratingData: false }); |
||||
|
} |
||||
|
|
||||
|
render() { |
||||
|
return this.state.isMigratingData ? <WalletMigrate onComplete={() => this.setIsMigratingData()} /> : <MainBottomTabs />; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
AppRegistry.registerComponent(appName, () => BlueAppComponent); |
@ -0,0 +1,54 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||
|
<plist version="1.0"> |
||||
|
<dict> |
||||
|
<key>CFBundleDevelopmentRegion</key> |
||||
|
<string>en</string> |
||||
|
<key>CFBundleExecutable</key> |
||||
|
<string>$(EXECUTABLE_NAME)</string> |
||||
|
<key>CFBundleIdentifier</key> |
||||
|
<string>org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)</string> |
||||
|
<key>CFBundleInfoDictionaryVersion</key> |
||||
|
<string>6.0</string> |
||||
|
<key>CFBundleName</key> |
||||
|
<string>$(PRODUCT_NAME)</string> |
||||
|
<key>CFBundlePackageType</key> |
||||
|
<string>APPL</string> |
||||
|
<key>CFBundleShortVersionString</key> |
||||
|
<string>1.0</string> |
||||
|
<key>CFBundleSignature</key> |
||||
|
<string>????</string> |
||||
|
<key>CFBundleVersion</key> |
||||
|
<string>1</string> |
||||
|
<key>LSRequiresIPhoneOS</key> |
||||
|
<true/> |
||||
|
<key>UILaunchStoryboardName</key> |
||||
|
<string>LaunchScreen</string> |
||||
|
<key>UIRequiredDeviceCapabilities</key> |
||||
|
<array> |
||||
|
<string>armv7</string> |
||||
|
</array> |
||||
|
<key>UISupportedInterfaceOrientations</key> |
||||
|
<array> |
||||
|
<string>UIInterfaceOrientationPortrait</string> |
||||
|
<string>UIInterfaceOrientationLandscapeLeft</string> |
||||
|
<string>UIInterfaceOrientationLandscapeRight</string> |
||||
|
</array> |
||||
|
<key>UIViewControllerBasedStatusBarAppearance</key> |
||||
|
<false/> |
||||
|
<key>NSLocationWhenInUseUsageDescription</key> |
||||
|
<string></string> |
||||
|
<key>NSAppTransportSecurity</key> |
||||
|
<!--See http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/ --> |
||||
|
<dict> |
||||
|
<key>NSExceptionDomains</key> |
||||
|
<dict> |
||||
|
<key>localhost</key> |
||||
|
<dict> |
||||
|
<key>NSExceptionAllowsInsecureHTTPLoads</key> |
||||
|
<true/> |
||||
|
</dict> |
||||
|
</dict> |
||||
|
</dict> |
||||
|
</dict> |
||||
|
</plist> |
@ -0,0 +1,24 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||
|
<plist version="1.0"> |
||||
|
<dict> |
||||
|
<key>CFBundleDevelopmentRegion</key> |
||||
|
<string>en</string> |
||||
|
<key>CFBundleExecutable</key> |
||||
|
<string>$(EXECUTABLE_NAME)</string> |
||||
|
<key>CFBundleIdentifier</key> |
||||
|
<string>org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)</string> |
||||
|
<key>CFBundleInfoDictionaryVersion</key> |
||||
|
<string>6.0</string> |
||||
|
<key>CFBundleName</key> |
||||
|
<string>$(PRODUCT_NAME)</string> |
||||
|
<key>CFBundlePackageType</key> |
||||
|
<string>BNDL</string> |
||||
|
<key>CFBundleShortVersionString</key> |
||||
|
<string>1.0</string> |
||||
|
<key>CFBundleSignature</key> |
||||
|
<string>????</string> |
||||
|
<key>CFBundleVersion</key> |
||||
|
<string>1</string> |
||||
|
</dict> |
||||
|
</plist> |
@ -0,0 +1,7 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<Workspace |
||||
|
version = "1.0"> |
||||
|
<FileRef |
||||
|
location = "self:"> |
||||
|
</FileRef> |
||||
|
</Workspace> |
@ -0,0 +1,8 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||
|
<plist version="1.0"> |
||||
|
<dict> |
||||
|
<key>IDEDidComputeMac32BitWarning</key> |
||||
|
<true/> |
||||
|
</dict> |
||||
|
</plist> |
@ -0,0 +1,5 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||
|
<plist version="1.0"> |
||||
|
<array/> |
||||
|
</plist> |
@ -0,0 +1,129 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<Scheme |
||||
|
LastUpgradeVersion = "1010" |
||||
|
version = "1.3"> |
||||
|
<BuildAction |
||||
|
parallelizeBuildables = "NO" |
||||
|
buildImplicitDependencies = "YES"> |
||||
|
<BuildActionEntries> |
||||
|
<BuildActionEntry |
||||
|
buildForTesting = "YES" |
||||
|
buildForRunning = "YES" |
||||
|
buildForProfiling = "YES" |
||||
|
buildForArchiving = "YES" |
||||
|
buildForAnalyzing = "YES"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "2D2A28121D9B038B00D4039D" |
||||
|
BuildableName = "libReact.a" |
||||
|
BlueprintName = "React-tvOS" |
||||
|
ReferencedContainer = "container:../node_modules/react-native/React/React.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildActionEntry> |
||||
|
<BuildActionEntry |
||||
|
buildForTesting = "YES" |
||||
|
buildForRunning = "YES" |
||||
|
buildForProfiling = "YES" |
||||
|
buildForArchiving = "YES" |
||||
|
buildForAnalyzing = "YES"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7" |
||||
|
BuildableName = "BlueWallet-tvOS.app" |
||||
|
BlueprintName = "BlueWallet-tvOS" |
||||
|
ReferencedContainer = "container:BlueWallet.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildActionEntry> |
||||
|
<BuildActionEntry |
||||
|
buildForTesting = "YES" |
||||
|
buildForRunning = "YES" |
||||
|
buildForProfiling = "NO" |
||||
|
buildForArchiving = "NO" |
||||
|
buildForAnalyzing = "YES"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "2D02E48F1E0B4A5D006451C7" |
||||
|
BuildableName = "BlueWallet-tvOSTests.xctest" |
||||
|
BlueprintName = "BlueWallet-tvOSTests" |
||||
|
ReferencedContainer = "container:BlueWallet.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildActionEntry> |
||||
|
</BuildActionEntries> |
||||
|
</BuildAction> |
||||
|
<TestAction |
||||
|
buildConfiguration = "Debug" |
||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||
|
<Testables> |
||||
|
<TestableReference |
||||
|
skipped = "NO"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "2D02E48F1E0B4A5D006451C7" |
||||
|
BuildableName = "BlueWallet-tvOSTests.xctest" |
||||
|
BlueprintName = "BlueWallet-tvOSTests" |
||||
|
ReferencedContainer = "container:BlueWallet.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</TestableReference> |
||||
|
</Testables> |
||||
|
<MacroExpansion> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7" |
||||
|
BuildableName = "BlueWallet-tvOS.app" |
||||
|
BlueprintName = "BlueWallet-tvOS" |
||||
|
ReferencedContainer = "container:BlueWallet.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</MacroExpansion> |
||||
|
<AdditionalOptions> |
||||
|
</AdditionalOptions> |
||||
|
</TestAction> |
||||
|
<LaunchAction |
||||
|
buildConfiguration = "Debug" |
||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||
|
launchStyle = "0" |
||||
|
useCustomWorkingDirectory = "NO" |
||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||
|
debugDocumentVersioning = "YES" |
||||
|
debugServiceExtension = "internal" |
||||
|
allowLocationSimulation = "YES"> |
||||
|
<BuildableProductRunnable |
||||
|
runnableDebuggingMode = "0"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7" |
||||
|
BuildableName = "BlueWallet-tvOS.app" |
||||
|
BlueprintName = "BlueWallet-tvOS" |
||||
|
ReferencedContainer = "container:BlueWallet.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildableProductRunnable> |
||||
|
<AdditionalOptions> |
||||
|
</AdditionalOptions> |
||||
|
</LaunchAction> |
||||
|
<ProfileAction |
||||
|
buildConfiguration = "Release" |
||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||
|
savedToolIdentifier = "" |
||||
|
useCustomWorkingDirectory = "NO" |
||||
|
debugDocumentVersioning = "YES"> |
||||
|
<BuildableProductRunnable |
||||
|
runnableDebuggingMode = "0"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7" |
||||
|
BuildableName = "BlueWallet-tvOS.app" |
||||
|
BlueprintName = "BlueWallet-tvOS" |
||||
|
ReferencedContainer = "container:BlueWallet.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildableProductRunnable> |
||||
|
</ProfileAction> |
||||
|
<AnalyzeAction |
||||
|
buildConfiguration = "Debug"> |
||||
|
</AnalyzeAction> |
||||
|
<ArchiveAction |
||||
|
buildConfiguration = "Release" |
||||
|
revealArchiveInOrganizer = "YES"> |
||||
|
</ArchiveAction> |
||||
|
</Scheme> |
@ -0,0 +1,129 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<Scheme |
||||
|
LastUpgradeVersion = "1010" |
||||
|
version = "1.3"> |
||||
|
<BuildAction |
||||
|
parallelizeBuildables = "NO" |
||||
|
buildImplicitDependencies = "YES"> |
||||
|
<BuildActionEntries> |
||||
|
<BuildActionEntry |
||||
|
buildForTesting = "YES" |
||||
|
buildForRunning = "YES" |
||||
|
buildForProfiling = "YES" |
||||
|
buildForArchiving = "YES" |
||||
|
buildForAnalyzing = "YES"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "83CBBA2D1A601D0E00E9B192" |
||||
|
BuildableName = "libReact.a" |
||||
|
BlueprintName = "React" |
||||
|
ReferencedContainer = "container:../node_modules/react-native/React/React.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildActionEntry> |
||||
|
<BuildActionEntry |
||||
|
buildForTesting = "YES" |
||||
|
buildForRunning = "YES" |
||||
|
buildForProfiling = "YES" |
||||
|
buildForArchiving = "YES" |
||||
|
buildForAnalyzing = "YES"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "13B07F861A680F5B00A75B9A" |
||||
|
BuildableName = "BlueWallet.app" |
||||
|
BlueprintName = "BlueWallet" |
||||
|
ReferencedContainer = "container:BlueWallet.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildActionEntry> |
||||
|
<BuildActionEntry |
||||
|
buildForTesting = "YES" |
||||
|
buildForRunning = "YES" |
||||
|
buildForProfiling = "NO" |
||||
|
buildForArchiving = "NO" |
||||
|
buildForAnalyzing = "YES"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "00E356ED1AD99517003FC87E" |
||||
|
BuildableName = "BlueWalletTests.xctest" |
||||
|
BlueprintName = "BlueWalletTests" |
||||
|
ReferencedContainer = "container:BlueWallet.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildActionEntry> |
||||
|
</BuildActionEntries> |
||||
|
</BuildAction> |
||||
|
<TestAction |
||||
|
buildConfiguration = "Debug" |
||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||
|
<Testables> |
||||
|
<TestableReference |
||||
|
skipped = "NO"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "00E356ED1AD99517003FC87E" |
||||
|
BuildableName = "BlueWalletTests.xctest" |
||||
|
BlueprintName = "BlueWalletTests" |
||||
|
ReferencedContainer = "container:BlueWallet.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</TestableReference> |
||||
|
</Testables> |
||||
|
<MacroExpansion> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "13B07F861A680F5B00A75B9A" |
||||
|
BuildableName = "BlueWallet.app" |
||||
|
BlueprintName = "BlueWallet" |
||||
|
ReferencedContainer = "container:BlueWallet.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</MacroExpansion> |
||||
|
<AdditionalOptions> |
||||
|
</AdditionalOptions> |
||||
|
</TestAction> |
||||
|
<LaunchAction |
||||
|
buildConfiguration = "Release" |
||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||
|
launchStyle = "0" |
||||
|
useCustomWorkingDirectory = "NO" |
||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||
|
debugDocumentVersioning = "YES" |
||||
|
debugServiceExtension = "internal" |
||||
|
allowLocationSimulation = "YES"> |
||||
|
<BuildableProductRunnable |
||||
|
runnableDebuggingMode = "0"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "13B07F861A680F5B00A75B9A" |
||||
|
BuildableName = "BlueWallet.app" |
||||
|
BlueprintName = "BlueWallet" |
||||
|
ReferencedContainer = "container:BlueWallet.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildableProductRunnable> |
||||
|
<AdditionalOptions> |
||||
|
</AdditionalOptions> |
||||
|
</LaunchAction> |
||||
|
<ProfileAction |
||||
|
buildConfiguration = "Release" |
||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||
|
savedToolIdentifier = "" |
||||
|
useCustomWorkingDirectory = "NO" |
||||
|
debugDocumentVersioning = "YES"> |
||||
|
<BuildableProductRunnable |
||||
|
runnableDebuggingMode = "0"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "13B07F861A680F5B00A75B9A" |
||||
|
BuildableName = "BlueWallet.app" |
||||
|
BlueprintName = "BlueWallet" |
||||
|
ReferencedContainer = "container:BlueWallet.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildableProductRunnable> |
||||
|
</ProfileAction> |
||||
|
<AnalyzeAction |
||||
|
buildConfiguration = "Debug"> |
||||
|
</AnalyzeAction> |
||||
|
<ArchiveAction |
||||
|
buildConfiguration = "Release" |
||||
|
revealArchiveInOrganizer = "YES"> |
||||
|
</ArchiveAction> |
||||
|
</Scheme> |
@ -0,0 +1,19 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||
|
<plist version="1.0"> |
||||
|
<dict> |
||||
|
<key>SchemeUserState</key> |
||||
|
<dict> |
||||
|
<key>BlueWallet-tvOS.xcscheme_^#shared#^_</key> |
||||
|
<dict> |
||||
|
<key>orderHint</key> |
||||
|
<integer>1</integer> |
||||
|
</dict> |
||||
|
<key>BlueWallet.xcscheme_^#shared#^_</key> |
||||
|
<dict> |
||||
|
<key>orderHint</key> |
||||
|
<integer>0</integer> |
||||
|
</dict> |
||||
|
</dict> |
||||
|
</dict> |
||||
|
</plist> |
@ -0,0 +1,14 @@ |
|||||
|
/**
|
||||
|
* Copyright (c) 2015-present, Facebook, Inc. |
||||
|
* |
||||
|
* This source code is licensed under the MIT license found in the |
||||
|
* LICENSE file in the root directory of this source tree. |
||||
|
*/ |
||||
|
|
||||
|
#import <UIKit/UIKit.h> |
||||
|
|
||||
|
@interface AppDelegate : UIResponder <UIApplicationDelegate> |
||||
|
|
||||
|
@property (nonatomic, strong) UIWindow *window; |
||||
|
|
||||
|
@end |
@ -0,0 +1,42 @@ |
|||||
|
/** |
||||
|
* Copyright (c) 2015-present, Facebook, Inc. |
||||
|
* |
||||
|
* This source code is licensed under the MIT license found in the |
||||
|
* LICENSE file in the root directory of this source tree. |
||||
|
*/ |
||||
|
|
||||
|
#import "AppDelegate.h" |
||||
|
|
||||
|
#import <React/RCTBundleURLProvider.h> |
||||
|
#import <React/RCTRootView.h> |
||||
|
#if __has_include(<React/RNSentry.h>) |
||||
|
#import <React/RNSentry.h> // This is used for versions of react >= 0.40 |
||||
|
#else |
||||
|
#import "RNSentry.h" // This is used for versions of react < 0.40 |
||||
|
#endif |
||||
|
|
||||
|
@implementation AppDelegate |
||||
|
|
||||
|
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions |
||||
|
{ |
||||
|
NSURL *jsCodeLocation; |
||||
|
|
||||
|
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; |
||||
|
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation |
||||
|
moduleName:@"BlueWallet" |
||||
|
initialProperties:nil |
||||
|
launchOptions:launchOptions]; |
||||
|
|
||||
|
[RNSentry installWithRootView:rootView]; |
||||
|
|
||||
|
rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; |
||||
|
|
||||
|
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; |
||||
|
UIViewController *rootViewController = [UIViewController new]; |
||||
|
rootViewController.view = rootView; |
||||
|
self.window.rootViewController = rootViewController; |
||||
|
[self.window makeKeyAndVisible]; |
||||
|
return YES; |
||||
|
} |
||||
|
|
||||
|
@end |
@ -0,0 +1,39 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES"> |
||||
|
<device id="retina4_7" orientation="portrait"> |
||||
|
<adaptation id="fullscreen"/> |
||||
|
</device> |
||||
|
<dependencies> |
||||
|
<deployment identifier="iOS"/> |
||||
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/> |
||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
||||
|
</dependencies> |
||||
|
<objects> |
||||
|
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> |
||||
|
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> |
||||
|
<view contentMode="scaleToFill" id="iN0-l3-epB"> |
||||
|
<rect key="frame" x="0.0" y="0.0" width="480" height="480"/> |
||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
||||
|
<subviews> |
||||
|
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon" translatesAutoresizingMaskIntoConstraints="NO" id="5GZ-ze-kHb"> |
||||
|
<rect key="frame" x="154" y="184" width="173" height="112"/> |
||||
|
<constraints> |
||||
|
<constraint firstAttribute="height" constant="112" id="Zm5-a8-A8d"/> |
||||
|
<constraint firstAttribute="width" constant="173" id="t2s-74-qaQ"/> |
||||
|
</constraints> |
||||
|
</imageView> |
||||
|
</subviews> |
||||
|
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
||||
|
<constraints> |
||||
|
<constraint firstItem="5GZ-ze-kHb" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="UkL-ek-FgS"/> |
||||
|
<constraint firstItem="5GZ-ze-kHb" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="mWu-9a-P4V"/> |
||||
|
</constraints> |
||||
|
<nil key="simulatedStatusBarMetrics"/> |
||||
|
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/> |
||||
|
<point key="canvasLocation" x="547.20000000000005" y="454.27286356821594"/> |
||||
|
</view> |
||||
|
</objects> |
||||
|
<resources> |
||||
|
<image name="icon" width="512" height="512"/> |
||||
|
</resources> |
||||
|
</document> |
@ -0,0 +1,116 @@ |
|||||
|
{ |
||||
|
"images" : [ |
||||
|
{ |
||||
|
"size" : "20x20", |
||||
|
"idiom" : "iphone", |
||||
|
"filename" : "Icon-40.png", |
||||
|
"scale" : "2x" |
||||
|
}, |
||||
|
{ |
||||
|
"size" : "20x20", |
||||
|
"idiom" : "iphone", |
||||
|
"filename" : "Icon-60.png", |
||||
|
"scale" : "3x" |
||||
|
}, |
||||
|
{ |
||||
|
"size" : "29x29", |
||||
|
"idiom" : "iphone", |
||||
|
"filename" : "Icon-58.png", |
||||
|
"scale" : "2x" |
||||
|
}, |
||||
|
{ |
||||
|
"size" : "29x29", |
||||
|
"idiom" : "iphone", |
||||
|
"filename" : "Icon-87.png", |
||||
|
"scale" : "3x" |
||||
|
}, |
||||
|
{ |
||||
|
"size" : "40x40", |
||||
|
"idiom" : "iphone", |
||||
|
"filename" : "Icon-80.png", |
||||
|
"scale" : "2x" |
||||
|
}, |
||||
|
{ |
||||
|
"size" : "40x40", |
||||
|
"idiom" : "iphone", |
||||
|
"filename" : "Icon-121.png", |
||||
|
"scale" : "3x" |
||||
|
}, |
||||
|
{ |
||||
|
"size" : "60x60", |
||||
|
"idiom" : "iphone", |
||||
|
"filename" : "Icon-120.png", |
||||
|
"scale" : "2x" |
||||
|
}, |
||||
|
{ |
||||
|
"size" : "60x60", |
||||
|
"idiom" : "iphone", |
||||
|
"filename" : "Icon-180.png", |
||||
|
"scale" : "3x" |
||||
|
}, |
||||
|
{ |
||||
|
"size" : "20x20", |
||||
|
"idiom" : "ipad", |
||||
|
"filename" : "Icon-20.png", |
||||
|
"scale" : "1x" |
||||
|
}, |
||||
|
{ |
||||
|
"size" : "20x20", |
||||
|
"idiom" : "ipad", |
||||
|
"filename" : "Icon-41.png", |
||||
|
"scale" : "2x" |
||||
|
}, |
||||
|
{ |
||||
|
"size" : "29x29", |
||||
|
"idiom" : "ipad", |
||||
|
"filename" : "Icon-29.png", |
||||
|
"scale" : "1x" |
||||
|
}, |
||||
|
{ |
||||
|
"size" : "29x29", |
||||
|
"idiom" : "ipad", |
||||
|
"filename" : "Icon-59.png", |
||||
|
"scale" : "2x" |
||||
|
}, |
||||
|
{ |
||||
|
"size" : "40x40", |
||||
|
"idiom" : "ipad", |
||||
|
"filename" : "Icon-42.png", |
||||
|
"scale" : "1x" |
||||
|
}, |
||||
|
{ |
||||
|
"size" : "40x40", |
||||
|
"idiom" : "ipad", |
||||
|
"filename" : "Icon-81.png", |
||||
|
"scale" : "2x" |
||||
|
}, |
||||
|
{ |
||||
|
"size" : "76x76", |
||||
|
"idiom" : "ipad", |
||||
|
"filename" : "Icon-76.png", |
||||
|
"scale" : "1x" |
||||
|
}, |
||||
|
{ |
||||
|
"size" : "76x76", |
||||
|
"idiom" : "ipad", |
||||
|
"filename" : "Icon-152.png", |
||||
|
"scale" : "2x" |
||||
|
}, |
||||
|
{ |
||||
|
"size" : "83.5x83.5", |
||||
|
"idiom" : "ipad", |
||||
|
"filename" : "Icon-167.png", |
||||
|
"scale" : "2x" |
||||
|
}, |
||||
|
{ |
||||
|
"size" : "1024x1024", |
||||
|
"idiom" : "ios-marketing", |
||||
|
"filename" : "Icon-1024.png", |
||||
|
"scale" : "1x" |
||||
|
} |
||||
|
], |
||||
|
"info" : { |
||||
|
"version" : 1, |
||||
|
"author" : "xcode" |
||||
|
} |
||||
|
} |
After Width: | Height: | Size: 176 KiB |
After Width: | Height: | Size: 7.0 KiB |
After Width: | Height: | Size: 7.0 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 827 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 4.0 KiB |