@ -0,0 +1,205 @@ |
|||||
|
buildscript { |
||||
|
repositories { |
||||
|
google() |
||||
|
maven { url 'https://maven.fabric.io/public' } |
||||
|
} |
||||
|
|
||||
|
dependencies { |
||||
|
classpath 'io.fabric.tools:gradle:1.26.1' |
||||
|
} |
||||
|
} |
||||
|
apply plugin: 'com.android.application' |
||||
|
apply plugin: 'io.fabric' |
||||
|
apply plugin: 'devicefarm' |
||||
|
|
||||
|
repositories { |
||||
|
maven { url 'https://maven.fabric.io/public' } |
||||
|
} |
||||
|
|
||||
|
def safeExtGet(prop, fallback) { |
||||
|
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback |
||||
|
} |
||||
|
|
||||
|
android { |
||||
|
compileSdkVersion safeExtGet("compileSdkVersion", 28) |
||||
|
|
||||
|
compileOptions { |
||||
|
sourceCompatibility JavaVersion.VERSION_1_8 |
||||
|
targetCompatibility JavaVersion.VERSION_1_8 |
||||
|
} |
||||
|
|
||||
|
defaultConfig { |
||||
|
applicationId 'com.dslak.vdsquiz' |
||||
|
minSdkVersion safeExtGet("minSdkVersion", 21) |
||||
|
targetSdkVersion safeExtGet("targetSdkVersion", 28) |
||||
|
versionCode 1 |
||||
|
versionName '1.0.0' |
||||
|
|
||||
|
multiDexEnabled true |
||||
|
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" |
||||
|
// Deprecated. Used by net.openid:appauth |
||||
|
manifestPlaceholders = [ |
||||
|
'appAuthRedirectScheme': 'host.exp.exponent' |
||||
|
] |
||||
|
} |
||||
|
dexOptions { |
||||
|
javaMaxHeapSize System.getenv("DISABLE_DEX_MAX_HEAP") ? null : "8g" |
||||
|
} |
||||
|
|
||||
|
signingConfigs { |
||||
|
debug { |
||||
|
storeFile file('../debug.keystore') |
||||
|
} |
||||
|
release { |
||||
|
storeFile file(System.getenv("ANDROID_KEYSTORE_PATH") ?: "release-key.jks") |
||||
|
storePassword System.getenv("ANDROID_KEYSTORE_PASSWORD") |
||||
|
keyAlias System.getenv("ANDROID_KEY_ALIAS") |
||||
|
keyPassword System.getenv("ANDROID_KEY_PASSWORD") |
||||
|
} |
||||
|
} |
||||
|
buildTypes { |
||||
|
debug { |
||||
|
debuggable true |
||||
|
ext.enableCrashlytics = false |
||||
|
} |
||||
|
release { |
||||
|
minifyEnabled true |
||||
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' |
||||
|
consumerProguardFiles 'proguard-rules.pro' |
||||
|
signingConfig signingConfigs.release |
||||
|
} |
||||
|
} |
||||
|
lintOptions { |
||||
|
abortOnError false |
||||
|
} |
||||
|
packagingOptions { |
||||
|
pickFirst "**" |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
devicefarm { |
||||
|
projectName System.getenv("DEVICEFARM_PROJECT_NAME") |
||||
|
devicePool System.getenv("DEVICEFARM_DEVICE_POOL") |
||||
|
executionTimeoutMinutes 40 |
||||
|
authentication { |
||||
|
|
||||
|
accessKey System.getenv("AWS_ACCESS_KEY_ID") |
||||
|
secretKey System.getenv("AWS_SECRET_ACCESS_KEY") |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
configurations.all { |
||||
|
resolutionStrategy { |
||||
|
force 'org.webkit:android-jsc:r245459' |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// WHEN_PREPARING_SHELL_REMOVE_FROM_HERE |
||||
|
|
||||
|
apply from: 'expo.gradle' |
||||
|
|
||||
|
// WHEN_PREPARING_SHELL_REMOVE_TO_HERE |
||||
|
|
||||
|
apply from: "../../node_modules/react-native-unimodules/gradle.groovy" |
||||
|
|
||||
|
dependencies { |
||||
|
implementation fileTree(dir: 'libs', include: ['*.jar']) |
||||
|
|
||||
|
implementation 'com.android.support:multidex:1.0.1' |
||||
|
|
||||
|
// Our dependencies |
||||
|
implementation "com.android.support:appcompat-v7:$supportLibVersion" |
||||
|
|
||||
|
// Our dependencies from ExpoView |
||||
|
// DON'T ADD ANYTHING HERE THAT ISN'T IN EXPOVIEW. ONLY COPY THINGS FROM EXPOVIEW TO HERE. |
||||
|
implementation "com.android.support:appcompat-v7:$supportLibVersion" |
||||
|
implementation 'com.facebook.android:facebook-android-sdk:5.0.1' |
||||
|
implementation('com.facebook.android:audience-network-sdk:5.1.1') { |
||||
|
exclude module: 'play-services-ads' |
||||
|
} |
||||
|
compileOnly 'org.glassfish:javax.annotation:3.1.1' |
||||
|
implementation 'com.jakewharton:butterknife:9.0.0' |
||||
|
implementation 'de.greenrobot:eventbus:2.4.0' |
||||
|
|
||||
|
implementation 'com.squareup.picasso:picasso:2.5.2' |
||||
|
implementation 'com.google.android.gms:play-services-gcm:15.0.1' |
||||
|
implementation 'com.google.android.gms:play-services-analytics:16.0.1' |
||||
|
implementation 'com.google.android.gms:play-services-maps:15.0.1' |
||||
|
implementation 'com.google.android.gms:play-services-auth:15.0.1' |
||||
|
implementation 'com.google.android.gms:play-services-location:15.0.1' |
||||
|
implementation "com.madgag.spongycastle:core:1.53.0.0" |
||||
|
implementation "com.madgag.spongycastle:prov:1.53.0.0" |
||||
|
debugImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta1' |
||||
|
// debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.4-beta1' |
||||
|
releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta1' |
||||
|
implementation 'com.facebook.device.yearclass:yearclass:2.1.0' |
||||
|
implementation 'commons-io:commons-io:1.4' |
||||
|
implementation 'me.leolin:ShortcutBadger:1.1.4@aar' |
||||
|
implementation 'com.theartofdev.edmodo:android-image-cropper:2.7.0' |
||||
|
implementation 'commons-codec:commons-codec:1.10' |
||||
|
implementation 'com.segment.analytics.android:analytics:4.3.0' |
||||
|
implementation 'com.google.zxing:core:3.3.3' |
||||
|
implementation 'net.openid:appauth:0.4.1' |
||||
|
implementation 'com.airbnb.android:lottie:2.5.6' |
||||
|
implementation('io.nlopez.smartlocation:library:3.2.11') { |
||||
|
transitive = false |
||||
|
} |
||||
|
implementation "com.android.support:exifinterface:${safeExtGet("supportLibVersion", "28.0.0")}" |
||||
|
implementation 'com.squareup.okio:okio:1.9.0' |
||||
|
implementation 'com.facebook.soloader:soloader:0.6.0' |
||||
|
|
||||
|
// expo-file-system |
||||
|
implementation 'com.squareup.okhttp3:okhttp:3.10.0' |
||||
|
implementation 'com.squareup.okhttp3:okhttp-urlconnection:3.10.0' |
||||
|
|
||||
|
// Testing |
||||
|
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' |
||||
|
// We use a modified build of com.android.support.test:runner:1.0.1. Explanation in maven-test/README |
||||
|
androidTestImplementation 'com.android.support.test:runner:1.0.1' |
||||
|
androidTestImplementation "com.android.support:support-annotations:${safeExtGet("supportLibVersion", "28.0.0")}" |
||||
|
androidTestImplementation 'com.google.code.findbugs:jsr305:3.0.0' |
||||
|
androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1' |
||||
|
androidTestImplementation 'com.azimolabs.conditionwatcher:conditionwatcher:0.2' |
||||
|
|
||||
|
testImplementation 'junit:junit:4.12' |
||||
|
testImplementation 'org.mockito:mockito-core:1.10.19' |
||||
|
testImplementation 'org.robolectric:robolectric:3.8' |
||||
|
testImplementation 'com.android.support.test:runner:1.0.2-alpha1' |
||||
|
testImplementation 'com.android.support.test:rules:1.0.2-alpha1' |
||||
|
|
||||
|
|
||||
|
implementation('host.exp.exponent:expoview:35.0.0@aar') { |
||||
|
transitive = true |
||||
|
exclude group: 'com.squareup.okhttp3', module: 'okhttp' |
||||
|
exclude group: 'com.squareup.okhttp3', module: 'okhttp-urlconnection' |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
api 'org.webkit:android-jsc:r245459' // needs to be before react-native |
||||
|
api 'com.facebook.react:react-native:33.0.0' |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
addUnimodulesDependencies([ |
||||
|
modulesPaths : [ |
||||
|
'../../node_modules' |
||||
|
], |
||||
|
configuration: 'api', |
||||
|
target : 'react-native', |
||||
|
exclude : [ |
||||
|
// You can exclude unneeded modules here, eg. |
||||
|
// 'unimodules-face-detector-interface', |
||||
|
// 'expo-face-detector' |
||||
|
|
||||
|
// Adding a name here will also remove the package |
||||
|
// from auto-generated BasePackageList.java |
||||
|
] |
||||
|
]) |
||||
|
|
||||
|
} |
||||
|
|
||||
|
// This has to be down here for some reason |
||||
|
apply plugin: 'com.google.gms.google-services' |
@ -0,0 +1,68 @@ |
|||||
|
// Gradle script for detached apps. |
||||
|
|
||||
|
import org.apache.tools.ant.taskdefs.condition.Os |
||||
|
|
||||
|
void runBefore(String dependentTaskName, Task task) { |
||||
|
Task dependentTask = tasks.findByPath(dependentTaskName); |
||||
|
if (dependentTask != null) { |
||||
|
dependentTask.dependsOn task |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
afterEvaluate { |
||||
|
def expoRoot = file("../../") |
||||
|
def inputExcludes = ["android/**", "ios/**"] |
||||
|
|
||||
|
task exponentPrebuildStep(type: Exec) { |
||||
|
workingDir expoRoot |
||||
|
if (Os.isFamily(Os.FAMILY_WINDOWS)) { |
||||
|
commandLine "cmd", "/c", ".\\node_modules\\expokit\\detach-scripts\\run-exp.bat" |
||||
|
} else { |
||||
|
commandLine "./node_modules/expokit/detach-scripts/run-exp.sh", "prepare-detached-build", "--platform", "android", expoRoot |
||||
|
} |
||||
|
} |
||||
|
runBefore("preBuild", exponentPrebuildStep) |
||||
|
|
||||
|
// Based on https://github.com/facebook/react-native/blob/master/react.gradle |
||||
|
|
||||
|
android.applicationVariants.each { variant -> |
||||
|
def folderName = variant.name |
||||
|
def targetName = folderName.capitalize() |
||||
|
|
||||
|
def assetsDir = file("$buildDir/intermediates/merged_assets/${folderName}/merge${targetName}Assets/out") |
||||
|
|
||||
|
// Bundle task name for variant |
||||
|
def bundleExpoAssetsTaskName = "bundle${targetName}ExpoAssets" |
||||
|
|
||||
|
def currentBundleTask = tasks.create( |
||||
|
name: bundleExpoAssetsTaskName, |
||||
|
type: Exec) { |
||||
|
description = "Expo bundle assets for ${targetName}." |
||||
|
|
||||
|
// Create dirs if they are not there (e.g. the "clean" task just ran) |
||||
|
doFirst { |
||||
|
assetsDir.mkdirs() |
||||
|
} |
||||
|
|
||||
|
// Set up inputs and outputs so gradle can cache the result |
||||
|
inputs.files fileTree(dir: expoRoot, excludes: inputExcludes) |
||||
|
outputs.dir assetsDir |
||||
|
|
||||
|
// Set up the call to exp |
||||
|
workingDir expoRoot |
||||
|
|
||||
|
if (Os.isFamily(Os.FAMILY_WINDOWS)) { |
||||
|
commandLine("cmd", "/c", ".\\node_modules\\expokit\\detach-scripts\\run-exp.bat", "bundle-assets", expoRoot, "--platform", "android", "--dest", assetsDir) |
||||
|
} else { |
||||
|
commandLine("./node_modules/expokit/detach-scripts/run-exp.sh", "bundle-assets", expoRoot, "--platform", "android", "--dest", assetsDir) |
||||
|
} |
||||
|
|
||||
|
enabled targetName.toLowerCase().contains("release") || targetName.toLowerCase().contains("prod") |
||||
|
} |
||||
|
|
||||
|
currentBundleTask.dependsOn("merge${targetName}Resources") |
||||
|
currentBundleTask.dependsOn("merge${targetName}Assets") |
||||
|
|
||||
|
runBefore("process${targetName}Resources", currentBundleTask) |
||||
|
} |
||||
|
} |
@ -0,0 +1,3 @@ |
|||||
|
#Contains API Secret used to validate your application. Commit to internal source control; avoid making secret public. |
||||
|
#Sun Dec 13 13:22:06 PST 2015 |
||||
|
apiSecret=83176563693e1eefa1a91359c4151b88c3fd17e52ddf6d64416b7f1e0fa9cede |
@ -0,0 +1,50 @@ |
|||||
|
{ |
||||
|
"project_info": { |
||||
|
"project_id": "exponent-5dd6d", |
||||
|
"project_number": "367315174693", |
||||
|
"name": "Expo Client" |
||||
|
}, |
||||
|
"client": [ |
||||
|
{ |
||||
|
"client_info": { |
||||
|
"mobilesdk_app_id": "1:367315174693:android:f968efbb41d1fa7a", |
||||
|
"client_id": "android:host.exp.exponent", |
||||
|
"client_type": 1, |
||||
|
"android_client_info": { |
||||
|
"package_name": "com.dslak.vdsquiz", |
||||
|
"certificate_hash": "" |
||||
|
} |
||||
|
}, |
||||
|
"oauth_client": [], |
||||
|
"api_key": [ |
||||
|
{ |
||||
|
"current_key": "" |
||||
|
} |
||||
|
], |
||||
|
"services": { |
||||
|
"analytics_service": { |
||||
|
"status": 2, |
||||
|
"analytics_property": { |
||||
|
"tracking_id": "UA-76673608-1" |
||||
|
} |
||||
|
}, |
||||
|
"cloud_messaging_service": { |
||||
|
"status": 2, |
||||
|
"apns_config": [] |
||||
|
}, |
||||
|
"appinvite_service": { |
||||
|
"status": 1, |
||||
|
"other_platform_oauth_client": [] |
||||
|
}, |
||||
|
"google_signin_service": { |
||||
|
"status": 1 |
||||
|
}, |
||||
|
"ads_service": { |
||||
|
"status": 1 |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
], |
||||
|
"client_info": [], |
||||
|
"ARTIFACT_VERSION": "1" |
||||
|
} |
@ -0,0 +1,152 @@ |
|||||
|
# Add project specific ProGuard rules here. |
||||
|
# By default, the flags in this file are appended to flags specified |
||||
|
# in /Users/ide/Library/Android/sdk/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 *; |
||||
|
#} |
||||
|
|
||||
|
|
||||
|
# THIS IS VERY VERY BAD. REMOVE AS SOON AS VERSIONING IS FIXED |
||||
|
-dontwarn ** |
||||
|
|
||||
|
|
||||
|
-dontnote ** |
||||
|
|
||||
|
-keep class host.exp.exponent.generated.AppConstants { *; } |
||||
|
|
||||
|
##### Crashlytics ##### |
||||
|
-keepattributes SourceFile,LineNumberTable |
||||
|
|
||||
|
##### Expo Universal Modules ##### |
||||
|
|
||||
|
-keepclassmembers class * { |
||||
|
@**.expo.core.interfaces.ExpoProp *; |
||||
|
} |
||||
|
-keepclassmembers class * { |
||||
|
@**.expo.core.interfaces.ExpoMethod *; |
||||
|
} |
||||
|
|
||||
|
-keep @**.expo.core.interfaces.DoNotStrip class * |
||||
|
-keepclassmembers class * { |
||||
|
@**.expo.core.interfaces.DoNotStrip *; |
||||
|
} |
||||
|
|
||||
|
##### React Native ##### |
||||
|
-keep,allowobfuscation @interface **.facebook.proguard.annotations.DoNotStrip |
||||
|
-keep,allowobfuscation @interface **.facebook.proguard.annotations.KeepGettersAndSetters |
||||
|
-keep,allowobfuscation @interface **.facebook.react.bridge.ReadableType |
||||
|
|
||||
|
# Do not strip any method/class that is annotated with @DoNotStrip |
||||
|
-keep @**.facebook.proguard.annotations.DoNotStrip class * |
||||
|
-keepclassmembers class * { |
||||
|
@**.facebook.proguard.annotations.DoNotStrip *; |
||||
|
} |
||||
|
|
||||
|
-keepclassmembers @**.facebook.proguard.annotations.KeepGettersAndSetters class * { |
||||
|
void set*(***); |
||||
|
*** get*(); |
||||
|
} |
||||
|
|
||||
|
-keep class * extends **.facebook.react.bridge.JavaScriptModule { *; } |
||||
|
-keep class * extends **.facebook.react.bridge.NativeModule { *; } |
||||
|
-keepclassmembers class * { @**.facebook.react.uimanager.UIProp <fields>; } |
||||
|
-keepclassmembers class * { @**.facebook.react.uimanager.ReactProp <methods>; } |
||||
|
-keepclassmembers class * { @**.facebook.react.uimanager.ReactPropGroup <methods>; } |
||||
|
|
||||
|
# TODO: shouldn't need these two rules |
||||
|
-keep interface **.facebook.react.bridge.** { *; } |
||||
|
-keep enum **.facebook.react.bridge.** { *; } |
||||
|
|
||||
|
##### Versioned React Native ##### |
||||
|
-keep class **.facebook.** { *; } |
||||
|
-keep class abi** { *; } |
||||
|
-keep class versioned** { *; } |
||||
|
-keep class expo.modules** { *; } |
||||
|
|
||||
|
##### Butterknife ##### |
||||
|
-keep class butterknife.** { *; } |
||||
|
-dontwarn butterknife.internal.** |
||||
|
-keep class **$$ViewBinder { *; } |
||||
|
|
||||
|
-keepclasseswithmembernames class * { |
||||
|
@butterknife.* <fields>; |
||||
|
} |
||||
|
|
||||
|
-keepclasseswithmembernames class * { |
||||
|
@butterknife.* <methods>; |
||||
|
} |
||||
|
|
||||
|
##### Stetho ##### |
||||
|
-keep class **.facebook.stetho.** { *; } |
||||
|
-dontwarn **.facebook.stetho.** |
||||
|
|
||||
|
##### fresco ##### |
||||
|
# Keep our interfaces so they can be used by other ProGuard rules. |
||||
|
# See http://sourceforge.net/p/proguard/bugs/466/ |
||||
|
-keep,allowobfuscation @interface **.facebook.common.internal.DoNotStrip |
||||
|
|
||||
|
# Do not strip any method/class that is annotated with @DoNotStrip |
||||
|
-keep @**.facebook.common.internal.DoNotStrip class * |
||||
|
-keepclassmembers class * { |
||||
|
@**.facebook.common.internal.DoNotStrip *; |
||||
|
} |
||||
|
|
||||
|
# Keep native methods |
||||
|
-keepclassmembers class * { |
||||
|
native <methods>; |
||||
|
} |
||||
|
|
||||
|
-dontwarn okio.** |
||||
|
-dontwarn javax.annotation.** |
||||
|
-dontwarn com.android.volley.toolbox.** |
||||
|
|
||||
|
##### okhttp ##### |
||||
|
-keepattributes Signature |
||||
|
-keepattributes *Annotation* |
||||
|
-keep class com.squareup.okhttp.** { *; } |
||||
|
-keep interface com.squareup.okhttp.** { *; } |
||||
|
# This is also needed by Picasso |
||||
|
-dontwarn com.squareup.okhttp.** |
||||
|
|
||||
|
-keep class okhttp3.** { *; } |
||||
|
-keep interface okhttp3.** { *; } |
||||
|
# This is also needed by Picasso |
||||
|
-dontwarn okhttp3.** |
||||
|
|
||||
|
##### okio ##### |
||||
|
-keep class sun.misc.Unsafe { *; } |
||||
|
-dontwarn java.nio.file.* |
||||
|
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement |
||||
|
-dontwarn okio.** |
||||
|
|
||||
|
##### EventBus ##### |
||||
|
-keepclassmembers class ** { |
||||
|
public void onEvent*(***); |
||||
|
} |
||||
|
|
||||
|
# Only required if you use AsyncExecutor |
||||
|
-keepclassmembers class * extends de.greenrobot.event.util.ThrowableFailureEvent { |
||||
|
<init>(java.lang.Throwable); |
||||
|
} |
||||
|
|
||||
|
##### Amplitude ##### |
||||
|
-keep class com.amplitude.api.** {*;} |
||||
|
|
||||
|
##### DBFlow ##### |
||||
|
-keep class com.raizlabs.android.dbflow.config.GeneratedDatabaseHolder |
||||
|
|
||||
|
##### SpongyCastle ##### |
||||
|
-keep class org.spongycastle.** |
||||
|
-dontwarn org.spongycastle.jce.provider.X509LDAPCertStoreSpi |
||||
|
-dontwarn org.spongycastle.x509.util.LDAPStoreHelper |
@ -0,0 +1,369 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<manifest |
||||
|
package="host.exp.exponent" |
||||
|
xmlns:android="http://schemas.android.com/apk/res/android" |
||||
|
xmlns:tools="http://schemas.android.com/tools"> |
||||
|
|
||||
|
<permission |
||||
|
android:name="com.dslak.vdsquiz.permission.C2D_MESSAGE" |
||||
|
android:protectionLevel="signature"/> |
||||
|
|
||||
|
<!-- These are required permissions to make the app run --> |
||||
|
<uses-permission android:name="com.dslak.vdsquiz.permission.C2D_MESSAGE" /> |
||||
|
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> |
||||
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> |
||||
|
<uses-permission android:name="android.permission.INTERNET" /> |
||||
|
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> |
||||
|
<uses-permission android:name="android.permission.WAKE_LOCK" /> |
||||
|
|
||||
|
|
||||
|
<uses-permission android:name="android.permission.INTERNET" /> |
||||
|
<uses-permission android:name="android.permission.VIBRATE" /> |
||||
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove" /> |
||||
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove" /> |
||||
|
<uses-permission android:name="android.permission.CAMERA" tools:node="remove" /> |
||||
|
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS" tools:node="remove" /> |
||||
|
<uses-permission android:name="android.permission.READ_CONTACTS" tools:node="remove" /> |
||||
|
<uses-permission android:name="android.permission.WRITE_CONTACTS" tools:node="remove" /> |
||||
|
<uses-permission android:name="android.permission.READ_CALENDAR" tools:node="remove" /> |
||||
|
<uses-permission android:name="android.permission.WRITE_CALENDAR" tools:node="remove" /> |
||||
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="remove" /> |
||||
|
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" tools:node="remove" /> |
||||
|
<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" /> |
||||
|
<uses-permission android:name="android.permission.RECORD_AUDIO" tools:node="remove" /> |
||||
|
<uses-permission android:name="android.permission.USE_FINGERPRINT" tools:node="remove" /> |
||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove" /> |
||||
|
<uses-permission android:name="android.permission.READ_SMS" tools:node="remove" /> |
||||
|
<uses-permission android:name="com.anddoes.launcher.permission.UPDATE_COUNT" tools:node="remove" /> |
||||
|
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" tools:node="remove" /> |
||||
|
<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" tools:node="remove" /> |
||||
|
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" tools:node="remove" /> |
||||
|
<uses-permission android:name="com.htc.launcher.permission.READ_SETTINGS" tools:node="remove" /> |
||||
|
<uses-permission android:name="com.htc.launcher.permission.UPDATE_SHORTCUT" tools:node="remove" /> |
||||
|
<uses-permission android:name="com.majeur.launcher.permission.UPDATE_BADGE" tools:node="remove" /> |
||||
|
<uses-permission android:name="com.sec.android.provider.badge.permission.READ" tools:node="remove" /> |
||||
|
<uses-permission android:name="com.sec.android.provider.badge.permission.WRITE" tools:node="remove" /> |
||||
|
<uses-permission android:name="com.sonyericsson.home.permission.BROADCAST_BADGE" tools:node="remove" /> |
||||
|
|
||||
|
|
||||
|
<!-- ADD TEST PERMISSIONS HERE --> |
||||
|
|
||||
|
<uses-feature android:glEsVersion="0x00020000" android:required="false" /> |
||||
|
<uses-feature android:name="android.software.leanback" android:required="false" /> |
||||
|
<uses-feature android:name="android.hardware.touchscreen" android:required="false" /> |
||||
|
|
||||
|
<application |
||||
|
android:name=".MainApplication" |
||||
|
android:allowBackup="true" |
||||
|
android:icon="@mipmap/ic_launcher" |
||||
|
android:label="@string/app_name" |
||||
|
android:largeHeap="true" |
||||
|
android:usesCleartextTraffic="true"> |
||||
|
|
||||
|
<activity |
||||
|
android:name=".LauncherActivity" |
||||
|
android:exported="true" |
||||
|
android:launchMode="singleTask" |
||||
|
android:theme="@android:style/Theme.Translucent.NoTitleBar"> |
||||
|
</activity> |
||||
|
|
||||
|
<activity |
||||
|
android:name=".experience.ExperienceActivity" |
||||
|
android:configChanges="keyboard|keyboardHidden|orientation|screenSize" |
||||
|
android:theme="@style/Theme.Exponent.Light" |
||||
|
android:windowSoftInputMode="adjustResize"> |
||||
|
</activity> |
||||
|
|
||||
|
<activity |
||||
|
android:name=".MainActivity" |
||||
|
android:launchMode="singleTask" |
||||
|
android:configChanges="keyboard|keyboardHidden|orientation|screenSize" |
||||
|
android:theme="@style/Theme.Exponent.Splash" |
||||
|
android:windowSoftInputMode="adjustResize"> |
||||
|
<intent-filter> |
||||
|
<data android:scheme="expc1313981c09d48258582690c225378d8"/> |
||||
|
|
||||
|
<action android:name="android.intent.action.VIEW"/> |
||||
|
|
||||
|
<category android:name="android.intent.category.DEFAULT"/> |
||||
|
<category android:name="android.intent.category.BROWSABLE"/> |
||||
|
</intent-filter> |
||||
|
<intent-filter> |
||||
|
<action android:name="android.intent.action.MAIN"/> |
||||
|
|
||||
|
<category android:name="android.intent.category.LAUNCHER"/> |
||||
|
</intent-filter> |
||||
|
<!-- ADD DETACH APP SPECIFIC INTENT FILTERS --> |
||||
|
</activity> |
||||
|
|
||||
|
<activity |
||||
|
android:name=".experience.HomeActivity" |
||||
|
android:label="@string/app_name" |
||||
|
android:launchMode="singleTask" |
||||
|
android:screenOrientation="portrait" |
||||
|
android:theme="@style/Theme.Exponent.Light"> |
||||
|
</activity> |
||||
|
|
||||
|
<activity |
||||
|
android:name=".experience.TvActivity" |
||||
|
android:label="@string/app_name" |
||||
|
android:theme="@style/Theme.Exponent.Light" |
||||
|
android:screenOrientation="landscape"> |
||||
|
<intent-filter> |
||||
|
<action android:name="android.intent.action.MAIN" /> |
||||
|
<category android:name="android.intent.category.LEANBACK_LAUNCHER" /> |
||||
|
</intent-filter> |
||||
|
</activity> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/> |
||||
|
<!-- WHEN_PREPARING_SHELL_REMOVE_FROM_HERE --> |
||||
|
<!-- ADD DEV SETTINGS HERE --> |
||||
|
<!-- BEGIN_SDK_35 --> |
||||
|
<activity android:name="abi35_0_0.com.facebook.react.devsupport.DevSettingsActivity"/> |
||||
|
<!-- END_SDK_35 --> |
||||
|
<!-- BEGIN_SDK_34 --> |
||||
|
<activity android:name="abi34_0_0.com.facebook.react.devsupport.DevSettingsActivity"/> |
||||
|
<!-- END_SDK_34 --> |
||||
|
<!-- BEGIN_SDK_33 --> |
||||
|
<activity android:name="abi33_0_0.com.facebook.react.devsupport.DevSettingsActivity"/> |
||||
|
<!-- END_SDK_33 --> |
||||
|
<!-- WHEN_PREPARING_SHELL_REMOVE_TO_HERE --> |
||||
|
|
||||
|
<activity |
||||
|
android:name=".ExponentDevActivity" |
||||
|
android:exported="true" |
||||
|
android:label="@string/dev_activity_name" |
||||
|
android:screenOrientation="portrait" |
||||
|
android:theme="@style/Theme.Exponent.Dark" |
||||
|
android:windowSoftInputMode="adjustPan"> |
||||
|
</activity> |
||||
|
|
||||
|
<activity |
||||
|
android:name=".oauth.OAuthWebViewActivity" |
||||
|
android:screenOrientation="portrait" |
||||
|
android:theme="@style/Theme.Exponent.Light"> |
||||
|
</activity> |
||||
|
|
||||
|
<activity |
||||
|
android:name="net.openid.appauth.RedirectUriReceiverActivity" |
||||
|
tools:node="replace"> |
||||
|
<intent-filter> |
||||
|
<action android:name="android.intent.action.VIEW"/> |
||||
|
<category android:name="android.intent.category.DEFAULT"/> |
||||
|
<category android:name="android.intent.category.BROWSABLE"/> |
||||
|
<data android:scheme="com.dslak.vdsquiz" android:path="oauthredirect"/> |
||||
|
</intent-filter> |
||||
|
</activity> |
||||
|
|
||||
|
<activity |
||||
|
android:name=".oauth.OAuthResultActivity"> |
||||
|
</activity> |
||||
|
|
||||
|
<!-- START OF STRIPE SCHEMES --> |
||||
|
<activity |
||||
|
android:exported="true" |
||||
|
android:launchMode="singleTask" |
||||
|
android:name="expo.modules.payments.stripe.RedirectUriReceiver" |
||||
|
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"> |
||||
|
<intent-filter> |
||||
|
<action android:name="android.intent.action.VIEW" /> |
||||
|
<category android:name="android.intent.category.DEFAULT" /> |
||||
|
<category android:name="android.intent.category.BROWSABLE" /> |
||||
|
<data android:scheme="expo.modules.payments.stripe.85c6cb4a-a530-402e-a683-229b365707be" /> |
||||
|
</intent-filter> |
||||
|
</activity> |
||||
|
<!-- Versioned Activity for Stripe --> |
||||
|
<!-- BEGIN_SDK_abi35_0_0 --> |
||||
|
<activity |
||||
|
android:exported="true" |
||||
|
android:launchMode="singleTask" |
||||
|
android:name="abiabi35_0_0.expo.modules.payments.stripe.RedirectUriReceiver" |
||||
|
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"> |
||||
|
<intent-filter> |
||||
|
<action android:name="android.intent.action.VIEW" /> |
||||
|
<category android:name="android.intent.category.DEFAULT" /> |
||||
|
<category android:name="android.intent.category.BROWSABLE" /> |
||||
|
<data android:scheme="abiabi35_0_0.expo.modules.payments.stripe" /> |
||||
|
</intent-filter> |
||||
|
</activity> |
||||
|
<!-- END_SDK_abi35_0_0 --> |
||||
|
<!-- BEGIN_SDK_34 --> |
||||
|
<activity |
||||
|
android:exported="true" |
||||
|
android:launchMode="singleTask" |
||||
|
android:name="abi34_0_0.expo.modules.payments.stripe.RedirectUriReceiver" |
||||
|
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"> |
||||
|
<intent-filter> |
||||
|
<action android:name="android.intent.action.VIEW" /> |
||||
|
<category android:name="android.intent.category.DEFAULT" /> |
||||
|
<category android:name="android.intent.category.BROWSABLE" /> |
||||
|
<data android:scheme="abi34_0_0.expo.modules.payments.stripe" /> |
||||
|
</intent-filter> |
||||
|
</activity> |
||||
|
<!-- END_SDK_34 --> |
||||
|
<!-- BEGIN_SDK_33 --> |
||||
|
<activity |
||||
|
android:exported="true" |
||||
|
android:launchMode="singleTask" |
||||
|
android:name="abi33_0_0.expo.modules.payments.stripe.RedirectUriReceiver" |
||||
|
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"> |
||||
|
<intent-filter> |
||||
|
<action android:name="android.intent.action.VIEW" /> |
||||
|
<category android:name="android.intent.category.DEFAULT" /> |
||||
|
<category android:name="android.intent.category.BROWSABLE" /> |
||||
|
<data android:scheme="abi33_0_0.expo.modules.payments.stripe" /> |
||||
|
</intent-filter> |
||||
|
</activity> |
||||
|
<!-- END_SDK_33 --> |
||||
|
<!-- END OF STRIPE SCHEMES --> |
||||
|
|
||||
|
<activity |
||||
|
android:name=".chrometabs.ChromeTabsManagerActivity"> |
||||
|
</activity> |
||||
|
|
||||
|
<activity |
||||
|
android:name=".experience.ErrorActivity" |
||||
|
android:theme="@style/Theme.Exponent.Dark" |
||||
|
android:screenOrientation="portrait"> |
||||
|
</activity> |
||||
|
|
||||
|
<activity |
||||
|
android:name=".experience.InfoActivity" |
||||
|
android:screenOrientation="portrait" |
||||
|
android:theme="@style/Theme.Exponent.Light"> |
||||
|
</activity> |
||||
|
|
||||
|
<activity |
||||
|
android:name="com.facebook.FacebookActivity" |
||||
|
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" |
||||
|
android:label="@string/app_name" |
||||
|
android:theme="@android:style/Theme.Translucent.NoTitleBar" |
||||
|
tools:replace="android:theme" /> |
||||
|
|
||||
|
<activity |
||||
|
android:name="com.facebook.ads.InterstitialAdActivity" |
||||
|
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" |
||||
|
android:label="@string/app_name" |
||||
|
android:theme="@android:style/Theme.Translucent.NoTitleBar" /> |
||||
|
|
||||
|
<service |
||||
|
android:name=".ExponentIntentService" |
||||
|
android:exported="false" /> |
||||
|
|
||||
|
<!-- Analytics --> |
||||
|
<receiver |
||||
|
android:name="host.exp.exponent.referrer.InstallReferrerReceiver" |
||||
|
android:exported="true"> |
||||
|
<intent-filter> |
||||
|
<action android:name="com.android.vending.INSTALL_REFERRER" /> |
||||
|
</intent-filter> |
||||
|
</receiver> |
||||
|
|
||||
|
<!-- |
||||
|
This crashes: https://code.google.com/p/analytics-issues/issues/detail?id=667 |
||||
|
TODO: turn it back on when it's fixed |
||||
|
<service |
||||
|
android:name="com.google.android.gms.analytics.CampaignTrackingService" |
||||
|
android:enabled="true" |
||||
|
android:exported="false" />--> |
||||
|
|
||||
|
<receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver" |
||||
|
android:enabled="true"> |
||||
|
<intent-filter> |
||||
|
<action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" /> |
||||
|
</intent-filter> |
||||
|
</receiver> |
||||
|
|
||||
|
<service android:name="com.google.android.gms.analytics.AnalyticsService" |
||||
|
android:enabled="true" |
||||
|
android:exported="false"/> |
||||
|
|
||||
|
<!-- GCM --> |
||||
|
<receiver |
||||
|
android:name="com.google.android.gms.gcm.GcmReceiver" |
||||
|
android:exported="true" |
||||
|
android:permission="com.google.android.c2dm.permission.SEND"> |
||||
|
<intent-filter> |
||||
|
<action android:name="com.google.android.c2dm.intent.RECEIVE"/> |
||||
|
<action android:name="com.google.android.c2dm.intent.REGISTRATION"/> |
||||
|
|
||||
|
<category android:name="com.dslak.vdsquiz"/> |
||||
|
</intent-filter> |
||||
|
</receiver> |
||||
|
|
||||
|
<service |
||||
|
android:name=".gcm.ExponentGcmListenerService" |
||||
|
android:exported="false"> |
||||
|
<intent-filter> |
||||
|
<action android:name="com.google.android.c2dm.intent.RECEIVE"/> |
||||
|
</intent-filter> |
||||
|
</service> |
||||
|
<service |
||||
|
android:name=".gcm.ExponentInstanceIDListenerService" |
||||
|
android:exported="false"> |
||||
|
<intent-filter> |
||||
|
<action android:name="com.google.android.gms.iid.InstanceID"/> |
||||
|
</intent-filter> |
||||
|
</service> |
||||
|
<service |
||||
|
android:name=".gcm.GcmRegistrationIntentService" |
||||
|
android:exported="false"> |
||||
|
</service> |
||||
|
|
||||
|
<!-- FCM --> |
||||
|
<service |
||||
|
android:name=".fcm.ExpoFcmMessagingService"> |
||||
|
<intent-filter> |
||||
|
<action android:name="com.google.firebase.MESSAGING_EVENT"/> |
||||
|
</intent-filter> |
||||
|
</service> |
||||
|
<meta-data |
||||
|
android:name="com.google.firebase.messaging.default_notification_icon" |
||||
|
android:resource="@drawable/shell_notification_icon" /> |
||||
|
<meta-data |
||||
|
android:name="com.google.firebase.messaging.default_notification_color" |
||||
|
android:resource="@color/colorAccent" /> |
||||
|
<service |
||||
|
android:name=".fcm.FcmRegistrationIntentService" |
||||
|
android:exported="false"> |
||||
|
</service> |
||||
|
|
||||
|
<!-- ImagePicker native module --> |
||||
|
<activity |
||||
|
android:name="com.theartofdev.edmodo.cropper.CropImageActivity" |
||||
|
android:theme="@style/Base.Theme.AppCompat"> |
||||
|
</activity> |
||||
|
|
||||
|
|
||||
|
<!-- ADD FABRIC CONFIG HERE --> |
||||
|
<!-- BEGIN FABRIC CONFIG --> |
||||
|
<meta-data |
||||
|
android:name="io.fabric.ApiKey" |
||||
|
android:value="a25fafe9f9edee11a9882b32e0cd7a26df6e2c42"/> |
||||
|
<!-- END FABRIC CONFIG --> |
||||
|
|
||||
|
<!-- ADD GOOGLE MAPS CONFIG HERE --> |
||||
|
<!-- BEGIN GOOGLE MAPS CONFIG --> |
||||
|
<meta-data |
||||
|
android:name="com.google.android.geo.API_KEY" |
||||
|
android:value="AIzaSyDh7eDB9snEFSYtf-k0gfxA45HFoR0L--I"/> |
||||
|
<!-- END GOOGLE MAPS CONFIG --> |
||||
|
|
||||
|
<!-- ADD GOOGLE MOBILE ADS CONFIG HERE --> |
||||
|
<!-- BEGIN GOOGLE MOBILE ADS CONFIG --> |
||||
|
<meta-data |
||||
|
android:name="com.google.android.gms.ads.APPLICATION_ID" |
||||
|
android:value="ca-app-pub-3940256099942544~3347511713"/> |
||||
|
<!-- END GOOGLE MOBILE ADS CONFIG --> |
||||
|
|
||||
|
<!-- ADD BRANCH CONFIG HERE --> |
||||
|
|
||||
|
<!-- The Facebook SDK runs FacebookInitProvider on startup and crashes if there isn't an ID here --> |
||||
|
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="fb0"/> |
||||
|
|
||||
|
<meta-data android:name="standaloneStripeScheme" android:value="85c6cb4a-a530-402e-a683-229b365707be" /> |
||||
|
</application> |
||||
|
|
||||
|
</manifest> |
@ -0,0 +1 @@ |
|||||
|
{"android":{"package":"host.exp.exponent","publishBundlePath":"../android/app/src/main/assets/kernel.android.bundle"},"dependencies":["@expo/react-native-action-sheet","@expo/react-native-touchable-native-feedback-safe","@react-navigation/web","apollo-boost","apollo-cache-inmemory","dedent","es6-error","expo","expo-analytics-amplitude","expo-asset","expo-barcode-scanner","expo-blur","expo-camera","expo-constants","expo-font","expo-linear-gradient","expo-location","expo-permissions","expo-task-manager","expo-web-browser","graphql","graphql-tag","immutable","lodash","prop-types","querystring","react","react-apollo","react-native","react-native-appearance","react-native-fade-in-image","react-native-gesture-handler","react-native-infinite-scroll-view","react-native-maps","react-navigation","react-navigation-material-bottom-tabs","react-navigation-stack","react-navigation-tabs","react-redux","redux","redux-thunk","semver","sha1","url"],"description":"","extra":{"amplitudeApiKey":"081e5ec53f869b440b225d5e40ec73f9"},"icon":"https://s3.amazonaws.com/exp-brand-assets/ExponentEmptyManifest_192.png","iconUrl":"https://s3.amazonaws.com/exp-brand-assets/ExponentEmptyManifest_192.png","ios":{"bundleIdentifier":"host.exp.exponent","publishBundlePath":"../ios/Exponent/Supporting/kernel.ios.bundle","supportsTablet":true},"isKernel":true,"kernel":{"androidManifestPath":"../android/app/src/main/assets/kernel-manifest.json","iosManifestPath":"../ios/Exponent/Supporting/kernel-manifest.json"},"locales":{},"name":"expo-home","orientation":"portrait","packagerOpts":{"config":"metro.config.js"},"platforms":["ios","android"],"primaryColor":"#cccccc","privacy":"unlisted","scheme":"exp","sdkVersion":"UNVERSIONED","slug":"home","updates":{"checkAutomatically":"ON_LOAD","fallbackToCacheTimeout":0},"version":"35.0.0","id":"@exponent/home","revisionId":"35.0.0-r.j5K6M6VmKq","publishedTime":"2019-09-16T21:21:42.975Z","commitTime":"2019-09-16T21:21:43.016Z","bundleUrl":"https://exp.host/@exponent/home/bundle","releaseChannel":"default","hostUri":"exp.host/@exponent/home"} |
@ -0,0 +1,46 @@ |
|||||
|
package host.exp.exponent; |
||||
|
|
||||
|
import android.os.Bundle; |
||||
|
|
||||
|
import com.facebook.react.ReactPackage; |
||||
|
|
||||
|
import org.unimodules.core.interfaces.Package; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
import host.exp.exponent.experience.DetachActivity; |
||||
|
import host.exp.exponent.generated.DetachBuildConstants; |
||||
|
|
||||
|
public class MainActivity extends DetachActivity { |
||||
|
|
||||
|
@Override |
||||
|
public String publishedUrl() { |
||||
|
return "exp://exp.host/@dslaky/VDS-Quiz"; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public String developmentUrl() { |
||||
|
return DetachBuildConstants.DEVELOPMENT_URL; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public List<ReactPackage> reactPackages() { |
||||
|
return ((MainApplication) getApplication()).getPackages(); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public List<Package> expoPackages() { |
||||
|
return ((MainApplication) getApplication()).getExpoPackages(); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public boolean isDebug() { |
||||
|
return BuildConfig.DEBUG; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public Bundle initialProps(Bundle expBundle) { |
||||
|
// Add extra initialProps here
|
||||
|
return expBundle; |
||||
|
} |
||||
|
} |
@ -0,0 +1,48 @@ |
|||||
|
package host.exp.exponent; |
||||
|
|
||||
|
import com.facebook.react.ReactPackage; |
||||
|
|
||||
|
import org.unimodules.core.interfaces.Package; |
||||
|
|
||||
|
import java.util.Arrays; |
||||
|
import java.util.List; |
||||
|
|
||||
|
import expo.loaders.provider.interfaces.AppLoaderPackagesProviderInterface; |
||||
|
import host.exp.exponent.generated.BasePackageList; |
||||
|
import okhttp3.OkHttpClient; |
||||
|
|
||||
|
// Needed for `react-native link`
|
||||
|
// import com.facebook.react.ReactApplication;
|
||||
|
|
||||
|
public class MainApplication extends ExpoApplication implements AppLoaderPackagesProviderInterface<ReactPackage> { |
||||
|
|
||||
|
@Override |
||||
|
public boolean isDebug() { |
||||
|
return BuildConfig.DEBUG; |
||||
|
} |
||||
|
|
||||
|
// Needed for `react-native link`
|
||||
|
public List<ReactPackage> getPackages() { |
||||
|
return Arrays.<ReactPackage>asList( |
||||
|
// Add your own packages here!
|
||||
|
// TODO: add native modules!
|
||||
|
|
||||
|
// Needed for `react-native link`
|
||||
|
// new MainReactPackage()
|
||||
|
); |
||||
|
} |
||||
|
|
||||
|
public List<Package> getExpoPackages() { |
||||
|
return new BasePackageList().getPackageList(); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public String gcmSenderId() { |
||||
|
return getString(R.string.gcm_defaultSenderId); |
||||
|
} |
||||
|
|
||||
|
public static OkHttpClient.Builder okHttpClientBuilder(OkHttpClient.Builder builder) { |
||||
|
// Customize/override OkHttp client here
|
||||
|
return builder; |
||||
|
} |
||||
|
} |
@ -0,0 +1,46 @@ |
|||||
|
package host.exp.exponent.generated; |
||||
|
|
||||
|
import com.facebook.common.internal.DoNotStrip; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
|
||||
|
import host.exp.exponent.BuildConfig; |
||||
|
import host.exp.exponent.Constants; |
||||
|
|
||||
|
@DoNotStrip |
||||
|
public class AppConstants { |
||||
|
|
||||
|
public static final String VERSION_NAME = "1.0.0"; |
||||
|
public static String INITIAL_URL = "exp://exp.host/@dslaky/VDS-Quiz"; |
||||
|
public static final String SHELL_APP_SCHEME = "expc1313981c09d48258582690c225378d8"; |
||||
|
public static final String RELEASE_CHANNEL = "default"; |
||||
|
public static boolean SHOW_LOADING_VIEW_IN_SHELL_APP = true; |
||||
|
public static boolean ARE_REMOTE_UPDATES_ENABLED = true; |
||||
|
public static final List<Constants.EmbeddedResponse> EMBEDDED_RESPONSES; |
||||
|
public static boolean FCM_ENABLED = false; |
||||
|
|
||||
|
static { |
||||
|
List<Constants.EmbeddedResponse> embeddedResponses = new ArrayList<>(); |
||||
|
|
||||
|
// ADD EMBEDDED RESPONSES HERE
|
||||
|
// START EMBEDDED RESPONSES
|
||||
|
// END EMBEDDED RESPONSES
|
||||
|
EMBEDDED_RESPONSES = embeddedResponses; |
||||
|
} |
||||
|
|
||||
|
// Called from expoview/Constants
|
||||
|
public static Constants.ExpoViewAppConstants get() { |
||||
|
Constants.ExpoViewAppConstants constants = new Constants.ExpoViewAppConstants(); |
||||
|
constants.VERSION_NAME = VERSION_NAME; |
||||
|
constants.INITIAL_URL = INITIAL_URL; |
||||
|
constants.SHELL_APP_SCHEME = SHELL_APP_SCHEME; |
||||
|
constants.RELEASE_CHANNEL = RELEASE_CHANNEL; |
||||
|
constants.SHOW_LOADING_VIEW_IN_SHELL_APP = SHOW_LOADING_VIEW_IN_SHELL_APP; |
||||
|
constants.ARE_REMOTE_UPDATES_ENABLED = ARE_REMOTE_UPDATES_ENABLED; |
||||
|
constants.EMBEDDED_RESPONSES = EMBEDDED_RESPONSES; |
||||
|
constants.ANDROID_VERSION_CODE = BuildConfig.VERSION_CODE; |
||||
|
constants.FCM_ENABLED = FCM_ENABLED; |
||||
|
return constants; |
||||
|
} |
||||
|
} |
@ -0,0 +1,8 @@ |
|||||
|
package host.exp.exponent.generated; |
||||
|
|
||||
|
// This file is auto-generated. Please don't rename!
|
||||
|
public class DetachBuildConstants { |
||||
|
|
||||
|
public static final String DEVELOPMENT_URL = ""; |
||||
|
|
||||
|
} |
After Width: | Height: | Size: 367 B |
After Width: | Height: | Size: 403 B |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 693 B |
After Width: | Height: | Size: 711 B |
After Width: | Height: | Size: 287 B |
After Width: | Height: | Size: 320 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 531 B |
After Width: | Height: | Size: 506 B |
After Width: | Height: | Size: 410 B |
After Width: | Height: | Size: 423 B |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 875 B |
After Width: | Height: | Size: 857 B |
After Width: | Height: | Size: 563 B |
After Width: | Height: | Size: 625 B |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 720 B |
After Width: | Height: | Size: 798 B |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 208 KiB |
After Width: | Height: | Size: 2.4 KiB |
@ -0,0 +1,8 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> |
||||
|
|
||||
|
<item android:drawable="@color/splashBackground"/> |
||||
|
|
||||
|
|
||||
|
|
||||
|
</layer-list> |
@ -0,0 +1,9 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<android.support.v4.view.ViewPager |
||||
|
xmlns:android="http://schemas.android.com/apk/res/android" |
||||
|
xmlns:app="http://schemas.android.com/apk/res-auto" |
||||
|
android:id="@+id/error_viewPager" |
||||
|
android:layout_width="match_parent" |
||||
|
android:layout_height="match_parent" |
||||
|
android:fitsSystemWindows="true" |
||||
|
/> |
@ -0,0 +1,56 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<LinearLayout |
||||
|
xmlns:android="http://schemas.android.com/apk/res/android" |
||||
|
xmlns:tools="http://schemas.android.com/tools" |
||||
|
android:layout_width="match_parent" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:layout_gravity="top" |
||||
|
android:gravity="top" |
||||
|
android:orientation="vertical" |
||||
|
tools:context="host.exp.exponent.experience.ErrorActivity"> |
||||
|
|
||||
|
<LinearLayout |
||||
|
android:layout_width="match_parent" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:layout_below="@+id/console_editText" |
||||
|
android:layout_centerHorizontal="true" |
||||
|
android:layout_marginLeft="40dp" |
||||
|
android:layout_marginRight="40dp" |
||||
|
android:layout_marginTop="10dp" |
||||
|
android:layout_marginBottom="10dp" |
||||
|
android:weightSum="2" |
||||
|
android:gravity="center_horizontal" |
||||
|
android:orientation="horizontal"> |
||||
|
|
||||
|
<host.exp.exponent.views.ExponentImageButton |
||||
|
android:id="@+id/console_home_button" |
||||
|
android:layout_width="wrap_content" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:layout_weight="1" |
||||
|
android:background="@android:color/transparent" |
||||
|
android:src="@drawable/ic_home_white_36dp" |
||||
|
android:textColor="@color/colorPrimaryDark" |
||||
|
android:textSize="15sp"/> |
||||
|
|
||||
|
<host.exp.exponent.views.ExponentImageButton |
||||
|
android:id="@+id/console_reload_button" |
||||
|
android:layout_width="wrap_content" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:layout_weight="1" |
||||
|
android:background="@android:color/transparent" |
||||
|
android:src="@drawable/ic_refresh_white_36dp" |
||||
|
android:textColor="@color/colorPrimaryDark" |
||||
|
android:textSize="15sp"/> |
||||
|
</LinearLayout> |
||||
|
|
||||
|
<ListView |
||||
|
android:id="@+id/list_view" |
||||
|
android:layout_width="match_parent" |
||||
|
android:layout_height="match_parent" |
||||
|
android:paddingBottom="10dp" |
||||
|
android:paddingLeft="10dp" |
||||
|
android:paddingRight="10dp" |
||||
|
android:background="@color/white" /> |
||||
|
|
||||
|
|
||||
|
</LinearLayout> |
@ -0,0 +1,31 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<LinearLayout |
||||
|
xmlns:android="http://schemas.android.com/apk/res/android" |
||||
|
android:layout_width="wrap_content" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:layout_gravity="top" |
||||
|
android:paddingTop="10dp" |
||||
|
android:paddingBottom="10dp" |
||||
|
android:gravity="top" |
||||
|
android:orientation="vertical"> |
||||
|
|
||||
|
<TextView |
||||
|
android:id="@+id/error_console_item_message" |
||||
|
android:layout_width="wrap_content" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:text="@string/error_header" |
||||
|
android:textColor="@color/errorMessage" |
||||
|
android:textSize="14sp"/> |
||||
|
|
||||
|
<TextView |
||||
|
android:id="@+id/error_console_item_stack_preview" |
||||
|
android:layout_width="wrap_content" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:textSize="14sp"/> |
||||
|
|
||||
|
<TextView |
||||
|
android:id="@+id/error_console_item_timestamp" |
||||
|
android:layout_width="wrap_content" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:textSize="12sp"/> |
||||
|
</LinearLayout> |
@ -0,0 +1,96 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<RelativeLayout |
||||
|
xmlns:android="http://schemas.android.com/apk/res/android" |
||||
|
xmlns:tools="http://schemas.android.com/tools" |
||||
|
android:layout_width="match_parent" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:orientation="vertical" |
||||
|
android:paddingBottom="@dimen/activity_vertical_margin" |
||||
|
android:paddingLeft="@dimen/activity_horizontal_margin" |
||||
|
android:paddingRight="@dimen/activity_horizontal_margin" |
||||
|
android:paddingTop="@dimen/activity_vertical_margin" |
||||
|
tools:context="host.exp.exponent.experience.ErrorActivity"> |
||||
|
|
||||
|
<LinearLayout |
||||
|
android:layout_width="match_parent" |
||||
|
android:layout_height="match_parent" |
||||
|
android:layout_gravity="center_vertical" |
||||
|
android:layout_above="@+id/view_error_log" |
||||
|
android:gravity="center" |
||||
|
android:orientation="vertical"> |
||||
|
|
||||
|
<TextView |
||||
|
android:id="@+id/error_header" |
||||
|
android:layout_width="wrap_content" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:layout_centerHorizontal="true" |
||||
|
android:layout_marginTop="30dp" |
||||
|
android:text="@string/error_header" |
||||
|
android:textColor="@color/white" |
||||
|
android:textSize="24sp"/> |
||||
|
|
||||
|
<TextView |
||||
|
android:id="@+id/error_message" |
||||
|
android:layout_width="wrap_content" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:layout_centerHorizontal="true" |
||||
|
android:layout_marginTop="20dp" |
||||
|
android:layout_marginLeft="40dp" |
||||
|
android:layout_marginRight="40dp" |
||||
|
android:gravity="center" |
||||
|
android:text="@string/error_default_client" |
||||
|
android:textColor="@color/white" |
||||
|
android:textSize="16sp"/> |
||||
|
|
||||
|
<LinearLayout |
||||
|
android:layout_width="match_parent" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:layout_below="@+id/editText" |
||||
|
android:layout_centerHorizontal="true" |
||||
|
android:layout_marginTop="140dp" |
||||
|
android:layout_marginLeft="40dp" |
||||
|
android:layout_marginRight="40dp" |
||||
|
android:weightSum="2" |
||||
|
android:gravity="center_horizontal" |
||||
|
android:orientation="horizontal"> |
||||
|
|
||||
|
<host.exp.exponent.views.ExponentImageButton |
||||
|
android:id="@+id/home_button" |
||||
|
android:layout_width="wrap_content" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:layout_weight="1" |
||||
|
android:background="@android:color/transparent" |
||||
|
android:src="@drawable/ic_home_white_36dp" |
||||
|
android:textColor="@color/colorPrimaryDark" |
||||
|
android:textSize="15sp"/> |
||||
|
|
||||
|
<host.exp.exponent.views.ExponentImageButton |
||||
|
android:id="@+id/reload_button" |
||||
|
android:layout_width="wrap_content" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:layout_weight="1" |
||||
|
android:background="@android:color/transparent" |
||||
|
android:src="@drawable/ic_refresh_white_36dp" |
||||
|
android:textColor="@color/colorPrimaryDark" |
||||
|
android:textSize="15sp"/> |
||||
|
</LinearLayout> |
||||
|
</LinearLayout> |
||||
|
|
||||
|
<TextView |
||||
|
android:id="@id/view_error_log" |
||||
|
android:layout_width="wrap_content" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:layout_centerHorizontal="true" |
||||
|
android:layout_alignParentBottom="true" |
||||
|
android:paddingBottom="20dp" |
||||
|
android:paddingLeft="20dp" |
||||
|
android:paddingRight="20dp" |
||||
|
android:paddingTop="20dp" |
||||
|
android:gravity="center" |
||||
|
android:clickable="true" |
||||
|
android:text="@string/view_error_log" |
||||
|
android:textColor="@color/errorLogButton" |
||||
|
android:textSize="13sp"/> |
||||
|
|
||||
|
|
||||
|
</RelativeLayout> |
@ -0,0 +1,8 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<Button |
||||
|
style="@style/ExponentButton" |
||||
|
xmlns:android="http://schemas.android.com/apk/res/android" |
||||
|
android:orientation="vertical" |
||||
|
android:layout_width="match_parent" |
||||
|
android:layout_height="match_parent"> |
||||
|
</Button> |
@ -0,0 +1,8 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<CheckBox |
||||
|
style="@style/ExponentCheckBox" |
||||
|
xmlns:android="http://schemas.android.com/apk/res/android" |
||||
|
android:layout_width="match_parent" |
||||
|
android:layout_height="match_parent"> |
||||
|
|
||||
|
</CheckBox> |
@ -0,0 +1,31 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<ScrollView |
||||
|
xmlns:android="http://schemas.android.com/apk/res/android" |
||||
|
xmlns:tools="http://schemas.android.com/tools" |
||||
|
android:layout_width="wrap_content" |
||||
|
android:layout_height="wrap_content" |
||||
|
tools:context="host.exp.exponent.ExponentDevActivity"> |
||||
|
|
||||
|
<LinearLayout |
||||
|
android:id="@+id/linearLayout" |
||||
|
android:layout_width="match_parent" |
||||
|
android:layout_height="match_parent" |
||||
|
android:layout_below="@+id/textView" |
||||
|
android:layout_marginTop="30dp" |
||||
|
android:focusable="true" |
||||
|
android:orientation="vertical" |
||||
|
android:padding="20dp"> |
||||
|
|
||||
|
<TextView |
||||
|
android:id="@+id/textView" |
||||
|
android:layout_width="wrap_content" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:layout_alignParentTop="true" |
||||
|
android:layout_centerHorizontal="true" |
||||
|
android:layout_marginBottom="20dp" |
||||
|
android:layout_marginTop="15dp" |
||||
|
android:text="Dev Menu" |
||||
|
android:textAppearance="?android:attr/textAppearanceLarge" |
||||
|
android:textColor="@color/colorText"/> |
||||
|
</LinearLayout> |
||||
|
</ScrollView> |
@ -0,0 +1,67 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||
|
android:layout_width="match_parent" |
||||
|
android:layout_height="match_parent" |
||||
|
android:background="@color/colorPrimary"> |
||||
|
|
||||
|
<ImageButton |
||||
|
android:id="@+id/home_image_button" |
||||
|
android:layout_width="42dp" |
||||
|
android:layout_height="42dp" |
||||
|
android:layout_alignParentStart="true" |
||||
|
android:layout_centerVertical="true" |
||||
|
android:layout_marginLeft="11dp" |
||||
|
android:layout_marginTop="11dp" |
||||
|
android:layout_marginBottom="11dp" |
||||
|
android:background="@android:color/transparent" |
||||
|
android:scaleType="fitCenter" |
||||
|
android:src="@mipmap/ic_launcher"/> |
||||
|
|
||||
|
<Button |
||||
|
android:id="@+id/home_text_button" |
||||
|
style="?android:attr/borderlessButtonStyle" |
||||
|
android:singleLine="true" |
||||
|
android:ellipsize="end" |
||||
|
android:gravity="left|center_vertical" |
||||
|
android:layout_width="wrap_content" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:layout_centerVertical="true" |
||||
|
android:layout_marginLeft="10dp" |
||||
|
android:layout_toEndOf="@+id/home_image_button" |
||||
|
android:layout_marginRight="12dp" |
||||
|
android:background="@android:color/transparent" |
||||
|
android:text="Expo" |
||||
|
android:textAppearance="?android:attr/textAppearanceMedium" |
||||
|
android:textColor="@color/white"/> |
||||
|
|
||||
|
<ImageButton |
||||
|
android:id="@+id/reload_button" |
||||
|
android:layout_width="wrap_content" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:layout_alignParentEnd="true" |
||||
|
android:layout_centerVertical="true" |
||||
|
android:layout_marginRight="12dp" |
||||
|
android:background="@android:color/transparent" |
||||
|
android:src="@drawable/ic_refresh_white_36dp"/> |
||||
|
|
||||
|
<ImageButton |
||||
|
android:id="@+id/share_button" |
||||
|
android:layout_width="wrap_content" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:layout_centerVertical="true" |
||||
|
android:layout_marginRight="12dp" |
||||
|
android:layout_toLeftOf="@+id/reload_button" |
||||
|
android:background="@android:color/transparent" |
||||
|
android:src="@drawable/ic_share_white_36dp"/> |
||||
|
|
||||
|
<ImageButton |
||||
|
android:id="@+id/save_button" |
||||
|
android:layout_width="wrap_content" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:layout_centerVertical="true" |
||||
|
android:layout_marginRight="12dp" |
||||
|
android:layout_toLeftOf="@+id/share_button" |
||||
|
android:background="@android:color/transparent" |
||||
|
android:src="@drawable/pin_white"/> |
||||
|
|
||||
|
</RelativeLayout> |
@ -0,0 +1,47 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||
|
android:layout_width="match_parent" |
||||
|
android:layout_height="match_parent" |
||||
|
android:background="@color/colorPrimary"> |
||||
|
|
||||
|
<ImageButton |
||||
|
android:id="@+id/home_image_button" |
||||
|
android:layout_width="42dp" |
||||
|
android:layout_height="42dp" |
||||
|
android:layout_alignParentStart="true" |
||||
|
android:layout_centerVertical="true" |
||||
|
android:layout_marginLeft="11dp" |
||||
|
android:background="@android:color/transparent" |
||||
|
android:scaleType="fitCenter" |
||||
|
android:src="@mipmap/ic_launcher"/> |
||||
|
|
||||
|
<Button |
||||
|
android:id="@+id/home_text_button" |
||||
|
style="?android:attr/borderlessButtonStyle" |
||||
|
android:singleLine="true" |
||||
|
android:ellipsize="end" |
||||
|
android:gravity="left|center_vertical" |
||||
|
android:layout_width="wrap_content" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:layout_centerVertical="true" |
||||
|
android:layout_marginLeft="10dp" |
||||
|
android:layout_toEndOf="@+id/home_image_button" |
||||
|
android:layout_toLeftOf="@+id/reload_button" |
||||
|
android:layout_marginRight="12dp" |
||||
|
android:background="@android:color/transparent" |
||||
|
android:text="Exponent" |
||||
|
android:textAppearance="?android:attr/textAppearanceMedium" |
||||
|
android:textColor="@color/white"/> |
||||
|
|
||||
|
<ImageButton |
||||
|
android:id="@+id/reload_button" |
||||
|
android:layout_width="wrap_content" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:layout_alignParentEnd="true" |
||||
|
android:layout_centerVertical="true" |
||||
|
android:layout_marginRight="12dp" |
||||
|
android:background="@android:color/transparent" |
||||
|
android:src="@drawable/ic_refresh_white_36dp"/> |
||||
|
|
||||
|
|
||||
|
</RelativeLayout> |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 9.9 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 27 KiB |
@ -0,0 +1,6 @@ |
|||||
|
<resources> |
||||
|
<!-- Example customization of dimensions originally defined in res/values/dimens.xml |
||||
|
(such as screen margins) for screens with more than 820dp of available width. This |
||||
|
would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). --> |
||||
|
<dimen name="activity_horizontal_margin">64dp</dimen> |
||||
|
</resources> |
@ -0,0 +1,14 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<resources> |
||||
|
<color name="colorPrimary">#1b73b4</color> |
||||
|
<color name="colorPrimaryDark">#011A2D</color> |
||||
|
<color name="colorAccentLight">#1b73b4</color> |
||||
|
<color name="colorAccentDark">#FFFFFF</color> |
||||
|
<color name="colorText">#FFFFFF</color> |
||||
|
<color name="white">#FFFFFF</color> |
||||
|
<color name="errorMessage">#FF0000</color> |
||||
|
<color name="errorLogButton">#66FFFFFF</color> |
||||
|
<color name="colorLight">#F6F6F7</color> |
||||
|
<color name="splashBackground">#8c0072</color> |
||||
|
<color name="iconBackground">#FFFFFF</color> |
||||
|
</resources> |
@ -0,0 +1,6 @@ |
|||||
|
<resources> |
||||
|
<!-- Default screen margins, per the Android Design guidelines. --> |
||||
|
<dimen name="activity_horizontal_margin">16dp</dimen> |
||||
|
<dimen name="activity_vertical_margin">16dp</dimen> |
||||
|
<dimen name="fab_margin">16dp</dimen> |
||||
|
</resources> |
@ -0,0 +1,14 @@ |
|||||
|
<resources> |
||||
|
<string name="app_name">VDS Quiz</string> |
||||
|
<string name="dev_activity_name">Exponent Dev</string> |
||||
|
<string name="preference_file_key">host.exp.exponent.SharedPreferences</string> |
||||
|
<string name="error_header">Something went wrong.</string> |
||||
|
<string name="error_default_client">Sorry about that. You can go back to Expo home or try to reload the project.</string> |
||||
|
<string name="error_default_shell">Sorry about that. Press the reload button to try again.</string> |
||||
|
<string name="error_unable_to_load_experience">Unable to load Experience.</string> |
||||
|
<string name="error_uncaught">Uncaught Error: %s</string> |
||||
|
<string name="view_error_log">View error log</string> |
||||
|
<string name="default_notification_channel_group">Default</string> |
||||
|
<string name="persistent_notification_channel_name">Experience notifications</string> |
||||
|
<string name="persistent_notification_channel_desc">Persistent notifications that provide debug info about open experiences</string> |
||||
|
</resources> |
@ -0,0 +1,47 @@ |
|||||
|
<resources xmlns:tools="http://schemas.android.com/tools"> |
||||
|
|
||||
|
<style name="Theme.Exponent.Light" parent="Theme.AppCompat.Light.NoActionBar"> |
||||
|
<item name="android:windowTranslucentStatus" tools:targetApi="19">true</item> |
||||
|
<item name="colorPrimary">@color/colorPrimary</item> |
||||
|
<item name="colorPrimaryDark">@color/colorPrimaryDark</item> |
||||
|
<item name="colorAccent">@color/colorAccentLight</item> |
||||
|
<item name="android:windowBackground">@color/white</item> |
||||
|
</style> |
||||
|
|
||||
|
<style name="Theme.Exponent.Dark" parent="Theme.AppCompat.Light.NoActionBar"> |
||||
|
<item name="android:windowTranslucentStatus" tools:targetApi="19">true</item> |
||||
|
<item name="colorPrimary">@color/colorPrimary</item> |
||||
|
<item name="colorPrimaryDark">@color/colorPrimaryDark</item> |
||||
|
<item name="colorAccent">@color/colorAccentDark</item> |
||||
|
<item name="android:windowBackground">@color/colorPrimary</item> |
||||
|
</style> |
||||
|
|
||||
|
<style name="ExponentCheckBox"> |
||||
|
<item name="android:theme">@style/DevAppTheme</item> |
||||
|
</style> |
||||
|
|
||||
|
<style name="ExponentButton"> |
||||
|
<item name="android:theme">@style/DevAppTheme</item> |
||||
|
<item name="android:textColor"> |
||||
|
@color/colorPrimaryDark |
||||
|
</item> |
||||
|
</style> |
||||
|
|
||||
|
<style name="ExponentEditText" parent="@android:style/Widget.EditText"> |
||||
|
<item name="android:padding">0dp</item> |
||||
|
<item name="android:textColorHint">#c8c8c8</item> |
||||
|
<item name="android:textColor">#000000</item> |
||||
|
</style> |
||||
|
|
||||
|
<style name="DevAppTheme"> |
||||
|
<item name="android:colorAccent"> |
||||
|
@color/white |
||||
|
</item> |
||||
|
<item name="android:colorControlNormal"> |
||||
|
@color/white |
||||
|
</item> |
||||
|
<item name="android:colorControlHighlight"> |
||||
|
@color/white |
||||
|
</item> |
||||
|
</style> |
||||
|
</resources> |
@ -0,0 +1,79 @@ |
|||||
|
// Top-level build file where you can add configuration options common to all sub-projects/modules. |
||||
|
|
||||
|
buildscript { |
||||
|
ext { |
||||
|
minSdkVersion = 21 |
||||
|
targetSdkVersion = 28 |
||||
|
compileSdkVersion = 28 |
||||
|
|
||||
|
buildToolsVersion = '28.0.0' |
||||
|
supportLibVersion = '28.0.0' |
||||
|
kotlinVersion = '1.3.21' |
||||
|
repositoryUrl = "file:${System.env.HOME}/.m2/repository/" |
||||
|
} |
||||
|
repositories { |
||||
|
google() |
||||
|
jcenter() |
||||
|
maven { url 'https://dl.bintray.com/android/android-tools/' } |
||||
|
} |
||||
|
dependencies { |
||||
|
classpath 'com.android.tools.build:gradle:3.3.2' |
||||
|
classpath 'com.google.gms:google-services:3.2.1' |
||||
|
classpath 'de.undercouch:gradle-download-task:2.0.0' |
||||
|
|
||||
|
// https://github.com/awslabs/aws-device-farm-gradle-plugin/releases |
||||
|
classpath 'com.amazonaws:aws-devicefarm-gradle-plugin:1.3' |
||||
|
|
||||
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
allprojects { |
||||
|
repositories { |
||||
|
// For non-detach |
||||
|
maven { |
||||
|
url "$rootDir/maven" |
||||
|
} |
||||
|
// For old expoviews to work |
||||
|
maven { |
||||
|
url "$rootDir/versioned-abis/expoview-abi33_0_0/maven" |
||||
|
} |
||||
|
maven { |
||||
|
url "$rootDir/versioned-abis/expoview-abi34_0_0/maven" |
||||
|
} |
||||
|
maven { |
||||
|
url "$rootDir/versioned-abis/expoview-abi35_0_0/maven" |
||||
|
} |
||||
|
maven { |
||||
|
url "$rootDir/versioned-abis/maven" |
||||
|
} |
||||
|
// For detach |
||||
|
maven { |
||||
|
url "$rootDir/../node_modules/expokit/maven" |
||||
|
} |
||||
|
maven { |
||||
|
// We use a modified build of com.android.support.test:runner:1.0.1. Explanation in maven-test/README |
||||
|
url "$rootDir/maven-test" |
||||
|
} |
||||
|
google() |
||||
|
jcenter() |
||||
|
maven { |
||||
|
// Local Maven repo containing AARs with JSC built for Android |
||||
|
url "$rootDir/../node_modules/jsc-android/dist" |
||||
|
} |
||||
|
flatDir { |
||||
|
dirs 'libs' |
||||
|
// dirs project(':expoview').file('libs') |
||||
|
} |
||||
|
// https://github.com/google/ExoPlayer/issues/5225#issuecomment-445739013 |
||||
|
maven { url 'https://google.bintray.com/exoplayer' } |
||||
|
maven { url "https://jitpack.io" } |
||||
|
|
||||
|
// Want this last so that we never end up with a stale cache |
||||
|
mavenLocal() |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
task clean(type: Delete) { |
||||
|
delete rootProject.buildDir |
||||
|
} |
@ -0,0 +1,6 @@ |
|||||
|
android.useDeprecatedNdk=true |
||||
|
org.gradle.parallel=true |
||||
|
org.gradle.daemon=true |
||||
|
org.gradle.jvmargs=-Xmx9216M -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 |
||||
|
org.gradle.configureondemand=true |
||||
|
org.gradle.internal.repository.initial.backoff=1000 |
@ -0,0 +1,6 @@ |
|||||
|
#Thu Nov 15 09:24:08 CET 2018 |
||||
|
distributionBase=GRADLE_USER_HOME |
||||
|
distributionPath=wrapper/dists |
||||
|
zipStoreBase=GRADLE_USER_HOME |
||||
|
zipStorePath=wrapper/dists |
||||
|
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip |
@ -0,0 +1,160 @@ |
|||||
|
#!/usr/bin/env bash |
||||
|
|
||||
|
############################################################################## |
||||
|
## |
||||
|
## Gradle start up script for UN*X |
||||
|
## |
||||
|
############################################################################## |
||||
|
|
||||
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. |
||||
|
DEFAULT_JVM_OPTS="" |
||||
|
|
||||
|
APP_NAME="Gradle" |
||||
|
APP_BASE_NAME=`basename "$0"` |
||||
|
|
||||
|
# Use the maximum available, or set MAX_FD != -1 to use that value. |
||||
|
MAX_FD="maximum" |
||||
|
|
||||
|
warn ( ) { |
||||
|
echo "$*" |
||||
|
} |
||||
|
|
||||
|
die ( ) { |
||||
|
echo |
||||
|
echo "$*" |
||||
|
echo |
||||
|
exit 1 |
||||
|
} |
||||
|
|
||||
|
# OS specific support (must be 'true' or 'false'). |
||||
|
cygwin=false |
||||
|
msys=false |
||||
|
darwin=false |
||||
|
case "`uname`" in |
||||
|
CYGWIN* ) |
||||
|
cygwin=true |
||||
|
;; |
||||
|
Darwin* ) |
||||
|
darwin=true |
||||
|
;; |
||||
|
MINGW* ) |
||||
|
msys=true |
||||
|
;; |
||||
|
esac |
||||
|
|
||||
|
# 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 |
||||
|
|
||||
|
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar |
||||
|
|
||||
|
# Determine the Java command to use to start the JVM. |
||||
|
if [ -n "$JAVA_HOME" ] ; then |
||||
|
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then |
||||
|
# IBM's JDK on AIX uses strange locations for the executables |
||||
|
JAVACMD="$JAVA_HOME/jre/sh/java" |
||||
|
else |
||||
|
JAVACMD="$JAVA_HOME/bin/java" |
||||
|
fi |
||||
|
if [ ! -x "$JAVACMD" ] ; then |
||||
|
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME |
||||
|
|
||||
|
Please set the JAVA_HOME variable in your environment to match the |
||||
|
location of your Java installation." |
||||
|
fi |
||||
|
else |
||||
|
JAVACMD="java" |
||||
|
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. |
||||
|
|
||||
|
Please set the JAVA_HOME variable in your environment to match the |
||||
|
location of your Java installation." |
||||
|
fi |
||||
|
|
||||
|
# Increase the maximum file descriptors if we can. |
||||
|
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then |
||||
|
MAX_FD_LIMIT=`ulimit -H -n` |
||||
|
if [ $? -eq 0 ] ; then |
||||
|
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then |
||||
|
MAX_FD="$MAX_FD_LIMIT" |
||||
|
fi |
||||
|
ulimit -n $MAX_FD |
||||
|
if [ $? -ne 0 ] ; then |
||||
|
warn "Could not set maximum file descriptor limit: $MAX_FD" |
||||
|
fi |
||||
|
else |
||||
|
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" |
||||
|
fi |
||||
|
fi |
||||
|
|
||||
|
# For Darwin, add options to specify how the application appears in the dock |
||||
|
if $darwin; then |
||||
|
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" |
||||
|
fi |
||||
|
|
||||
|
# For Cygwin, switch paths to Windows format before running java |
||||
|
if $cygwin ; then |
||||
|
APP_HOME=`cygpath --path --mixed "$APP_HOME"` |
||||
|
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` |
||||
|
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 |
||||
|
|
||||
|
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules |
||||
|
function splitJvmOpts() { |
||||
|
JVM_OPTS=("$@") |
||||
|
} |
||||
|
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS |
||||
|
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" |
||||
|
|
||||
|
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" |
@ -0,0 +1,9 @@ |
|||||
|
include ':app' |
||||
|
|
||||
|
|
||||
|
// Import gradle helpers for unimodules. |
||||
|
apply from: '../node_modules/react-native-unimodules/gradle.groovy' |
||||
|
|
||||
|
// Include unimodules. |
||||
|
includeUnimodulesProjects( |
||||
|
) |