diff options
Diffstat (limited to 'android/app')
20 files changed, 278 insertions, 0 deletions
diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 0000000..d969418 --- /dev/null +++ b/android/app/build.gradle | |||
@@ -0,0 +1,119 @@ | |||
1 | apply plugin: "com.android.application" | ||
2 | apply plugin: "org.jetbrains.kotlin.android" | ||
3 | apply plugin: "com.facebook.react" | ||
4 | |||
5 | /** | ||
6 | * This is the configuration block to customize your React Native Android app. | ||
7 | * By default you don't need to apply any configuration, just uncomment the lines you need. | ||
8 | */ | ||
9 | react { | ||
10 | /* Folders */ | ||
11 | // The root of your project, i.e. where "package.json" lives. Default is '..' | ||
12 | // root = file("../") | ||
13 | // The folder where the react-native NPM package is. Default is ../node_modules/react-native | ||
14 | // reactNativeDir = file("../node_modules/react-native") | ||
15 | // The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen | ||
16 | // codegenDir = file("../node_modules/@react-native/codegen") | ||
17 | // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js | ||
18 | // cliFile = file("../node_modules/react-native/cli.js") | ||
19 | |||
20 | /* Variants */ | ||
21 | // The list of variants to that are debuggable. For those we're going to | ||
22 | // skip the bundling of the JS bundle and the assets. By default is just 'debug'. | ||
23 | // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. | ||
24 | // debuggableVariants = ["liteDebug", "prodDebug"] | ||
25 | |||
26 | /* Bundling */ | ||
27 | // A list containing the node command and its flags. Default is just 'node'. | ||
28 | // nodeExecutableAndArgs = ["node"] | ||
29 | // | ||
30 | // The command to run when bundling. By default is 'bundle' | ||
31 | // bundleCommand = "ram-bundle" | ||
32 | // | ||
33 | // The path to the CLI configuration file. Default is empty. | ||
34 | // bundleConfig = file(../rn-cli.config.js) | ||
35 | // | ||
36 | // The name of the generated asset file containing your JS bundle | ||
37 | // bundleAssetName = "MyApplication.android.bundle" | ||
38 | // | ||
39 | // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' | ||
40 | // entryFile = file("../js/MyApplication.android.js") | ||
41 | // | ||
42 | // A list of extra flags to pass to the 'bundle' commands. | ||
43 | // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle | ||
44 | // extraPackagerArgs = [] | ||
45 | |||
46 | /* Hermes Commands */ | ||
47 | // The hermes compiler command to run. By default it is 'hermesc' | ||
48 | // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" | ||
49 | // | ||
50 | // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" | ||
51 | // hermesFlags = ["-O", "-output-source-map"] | ||
52 | } | ||
53 | |||
54 | /** | ||
55 | * Set this to true to Run Proguard on Release builds to minify the Java bytecode. | ||
56 | */ | ||
57 | def enableProguardInReleaseBuilds = false | ||
58 | |||
59 | /** | ||
60 | * The preferred build flavor of JavaScriptCore (JSC) | ||
61 | * | ||
62 | * For example, to use the international variant, you can use: | ||
63 | * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` | ||
64 | * | ||
65 | * The international variant includes ICU i18n library and necessary data | ||
66 | * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that | ||
67 | * give correct results when using with locales other than en-US. Note that | ||
68 | * this variant is about 6MiB larger per architecture than default. | ||
69 | */ | ||
70 | def jscFlavor = 'org.webkit:android-jsc:+' | ||
71 | |||
72 | android { | ||
73 | ndkVersion rootProject.ext.ndkVersion | ||
74 | buildToolsVersion rootProject.ext.buildToolsVersion | ||
75 | compileSdk rootProject.ext.compileSdkVersion | ||
76 | |||
77 | namespace "com.cyberbadge_mobile" | ||
78 | defaultConfig { | ||
79 | applicationId "com.cyberbadge_mobile" | ||
80 | minSdkVersion rootProject.ext.minSdkVersion | ||
81 | targetSdkVersion rootProject.ext.targetSdkVersion | ||
82 | versionCode 1 | ||
83 | versionName "1.0" | ||
84 | } | ||
85 | signingConfigs { | ||
86 | debug { | ||
87 | storeFile file('debug.keystore') | ||
88 | storePassword 'android' | ||
89 | keyAlias 'androiddebugkey' | ||
90 | keyPassword 'android' | ||
91 | } | ||
92 | } | ||
93 | buildTypes { | ||
94 | debug { | ||
95 | signingConfig signingConfigs.debug | ||
96 | } | ||
97 | release { | ||
98 | // Caution! In production, you need to generate your own keystore file. | ||
99 | // see https://reactnative.dev/docs/signed-apk-android. | ||
100 | signingConfig signingConfigs.debug | ||
101 | minifyEnabled enableProguardInReleaseBuilds | ||
102 | proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" | ||
103 | } | ||
104 | } | ||
105 | } | ||
106 | |||
107 | dependencies { | ||
108 | // The version of react-native is set by the React Native Gradle Plugin | ||
109 | implementation("com.facebook.react:react-android") | ||
110 | implementation("com.facebook.react:flipper-integration") | ||
111 | |||
112 | if (hermesEnabled.toBoolean()) { | ||
113 | implementation("com.facebook.react:hermes-android") | ||
114 | } else { | ||
115 | implementation jscFlavor | ||
116 | } | ||
117 | } | ||
118 | |||
119 | apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) | ||
diff --git a/android/app/debug.keystore b/android/app/debug.keystore new file mode 100644 index 0000000..364e105 --- /dev/null +++ b/android/app/debug.keystore | |||
Binary files differ | |||
diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro new file mode 100644 index 0000000..11b0257 --- /dev/null +++ b/android/app/proguard-rules.pro | |||
@@ -0,0 +1,10 @@ | |||
1 | # Add project specific ProGuard rules here. | ||
2 | # By default, the flags in this file are appended to flags specified | ||
3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt | ||
4 | # You can edit the include path and order by changing the proguardFiles | ||
5 | # directive in build.gradle. | ||
6 | # | ||
7 | # For more details, see | ||
8 | # http://developer.android.com/guide/developing/tools/proguard.html | ||
9 | |||
10 | # Add any project specific keep options here: | ||
diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..eb98c01 --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml | |||
@@ -0,0 +1,9 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | xmlns:tools="http://schemas.android.com/tools"> | ||
4 | |||
5 | <application | ||
6 | android:usesCleartextTraffic="true" | ||
7 | tools:targetApi="28" | ||
8 | tools:ignore="GoogleAppIndexingWarning"/> | ||
9 | </manifest> | ||
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..4122f36 --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml | |||
@@ -0,0 +1,25 @@ | |||
1 | <manifest xmlns:android="http://schemas.android.com/apk/res/android"> | ||
2 | |||
3 | <uses-permission android:name="android.permission.INTERNET" /> | ||
4 | |||
5 | <application | ||
6 | android:name=".MainApplication" | ||
7 | android:label="@string/app_name" | ||
8 | android:icon="@mipmap/ic_launcher" | ||
9 | android:roundIcon="@mipmap/ic_launcher_round" | ||
10 | android:allowBackup="false" | ||
11 | android:theme="@style/AppTheme"> | ||
12 | <activity | ||
13 | android:name=".MainActivity" | ||
14 | android:label="@string/app_name" | ||
15 | android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" | ||
16 | android:launchMode="singleTask" | ||
17 | android:windowSoftInputMode="adjustResize" | ||
18 | android:exported="true"> | ||
19 | <intent-filter> | ||
20 | <action android:name="android.intent.action.MAIN" /> | ||
21 | <category android:name="android.intent.category.LAUNCHER" /> | ||
22 | </intent-filter> | ||
23 | </activity> | ||
24 | </application> | ||
25 | </manifest> | ||
diff --git a/android/app/src/main/java/com/cyberbadge_mobile/MainActivity.kt b/android/app/src/main/java/com/cyberbadge_mobile/MainActivity.kt new file mode 100644 index 0000000..1417a4e --- /dev/null +++ b/android/app/src/main/java/com/cyberbadge_mobile/MainActivity.kt | |||
@@ -0,0 +1,22 @@ | |||
1 | package com.cyberbadge_mobile | ||
2 | |||
3 | import com.facebook.react.ReactActivity | ||
4 | import com.facebook.react.ReactActivityDelegate | ||
5 | import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled | ||
6 | import com.facebook.react.defaults.DefaultReactActivityDelegate | ||
7 | |||
8 | class MainActivity : ReactActivity() { | ||
9 | |||
10 | /** | ||
11 | * Returns the name of the main component registered from JavaScript. This is used to schedule | ||
12 | * rendering of the component. | ||
13 | */ | ||
14 | override fun getMainComponentName(): String = "cyberbadge_mobile" | ||
15 | |||
16 | /** | ||
17 | * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate] | ||
18 | * which allows you to enable New Architecture with a single boolean flags [fabricEnabled] | ||
19 | */ | ||
20 | override fun createReactActivityDelegate(): ReactActivityDelegate = | ||
21 | DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled) | ||
22 | } | ||
diff --git a/android/app/src/main/java/com/cyberbadge_mobile/MainApplication.kt b/android/app/src/main/java/com/cyberbadge_mobile/MainApplication.kt new file mode 100644 index 0000000..3fc08cf --- /dev/null +++ b/android/app/src/main/java/com/cyberbadge_mobile/MainApplication.kt | |||
@@ -0,0 +1,45 @@ | |||
1 | package com.cyberbadge_mobile | ||
2 | |||
3 | import android.app.Application | ||
4 | import com.facebook.react.PackageList | ||
5 | import com.facebook.react.ReactApplication | ||
6 | import com.facebook.react.ReactHost | ||
7 | import com.facebook.react.ReactNativeHost | ||
8 | import com.facebook.react.ReactPackage | ||
9 | import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load | ||
10 | import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost | ||
11 | import com.facebook.react.defaults.DefaultReactNativeHost | ||
12 | import com.facebook.react.flipper.ReactNativeFlipper | ||
13 | import com.facebook.soloader.SoLoader | ||
14 | |||
15 | class MainApplication : Application(), ReactApplication { | ||
16 | |||
17 | override val reactNativeHost: ReactNativeHost = | ||
18 | object : DefaultReactNativeHost(this) { | ||
19 | override fun getPackages(): List<ReactPackage> { | ||
20 | // Packages that cannot be autolinked yet can be added manually here, for example: | ||
21 | // packages.add(new MyReactNativePackage()); | ||
22 | return PackageList(this).packages | ||
23 | } | ||
24 | |||
25 | override fun getJSMainModuleName(): String = "index" | ||
26 | |||
27 | override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG | ||
28 | |||
29 | override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED | ||
30 | override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED | ||
31 | } | ||
32 | |||
33 | override val reactHost: ReactHost | ||
34 | get() = getDefaultReactHost(this.applicationContext, reactNativeHost) | ||
35 | |||
36 | override fun onCreate() { | ||
37 | super.onCreate() | ||
38 | SoLoader.init(this, false) | ||
39 | if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { | ||
40 | // If you opted-in for the New Architecture, we load the native entry point for this app. | ||
41 | load() | ||
42 | } | ||
43 | ReactNativeFlipper.initializeFlipper(this, reactNativeHost.reactInstanceManager) | ||
44 | } | ||
45 | } | ||
diff --git a/android/app/src/main/res/drawable/rn_edit_text_material.xml b/android/app/src/main/res/drawable/rn_edit_text_material.xml new file mode 100644 index 0000000..73b37e4 --- /dev/null +++ b/android/app/src/main/res/drawable/rn_edit_text_material.xml | |||
@@ -0,0 +1,36 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <!-- Copyright (C) 2014 The Android Open Source Project | ||
3 | |||
4 | Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | you may not use this file except in compliance with the License. | ||
6 | You may obtain a copy of the License at | ||
7 | |||
8 | http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | |||
10 | Unless required by applicable law or agreed to in writing, software | ||
11 | distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | See the License for the specific language governing permissions and | ||
14 | limitations under the License. | ||
15 | --> | ||
16 | <inset xmlns:android="http://schemas.android.com/apk/res/android" | ||
17 | android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material" | ||
18 | android:insetRight="@dimen/abc_edit_text_inset_horizontal_material" | ||
19 | android:insetTop="@dimen/abc_edit_text_inset_top_material" | ||
20 | android:insetBottom="@dimen/abc_edit_text_inset_bottom_material"> | ||
21 | |||
22 | <selector> | ||
23 | <!-- | ||
24 | This file is a copy of abc_edit_text_material (https://bit.ly/3k8fX7I). | ||
25 | The item below with state_pressed="false" and state_focused="false" causes a NullPointerException. | ||
26 | NullPointerException:tempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' | ||
27 | |||
28 | <item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/> | ||
29 | |||
30 | For more info, see https://bit.ly/3CdLStv (react-native/pull/29452) and https://bit.ly/3nxOMoR. | ||
31 | --> | ||
32 | <item android:state_enabled="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/> | ||
33 | <item android:drawable="@drawable/abc_textfield_activated_mtrl_alpha"/> | ||
34 | </selector> | ||
35 | |||
36 | </inset> | ||
diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000..a2f5908 --- /dev/null +++ b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png | |||
Binary files differ | |||
diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000..1b52399 --- /dev/null +++ b/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png | |||
Binary files differ | |||
diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000..ff10afd --- /dev/null +++ b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png | |||
Binary files differ | |||
diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000..115a4c7 --- /dev/null +++ b/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png | |||
Binary files differ | |||
diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..dcd3cd8 --- /dev/null +++ b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png | |||
Binary files differ | |||
diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000..459ca60 --- /dev/null +++ b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png | |||
Binary files differ | |||
diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..8ca12fe --- /dev/null +++ b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png | |||
Binary files differ | |||
diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..8e19b41 --- /dev/null +++ b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png | |||
Binary files differ | |||
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000..b824ebd --- /dev/null +++ b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png | |||
Binary files differ | |||
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..4c19a13 --- /dev/null +++ b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png | |||
Binary files differ | |||
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..6e77bed --- /dev/null +++ b/android/app/src/main/res/values/strings.xml | |||
@@ -0,0 +1,3 @@ | |||
1 | <resources> | ||
2 | <string name="app_name">cyberbadge_mobile</string> | ||
3 | </resources> | ||
diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..7ba83a2 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml | |||
@@ -0,0 +1,9 @@ | |||
1 | <resources> | ||
2 | |||
3 | <!-- Base application theme. --> | ||
4 | <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar"> | ||
5 | <!-- Customize your theme here. --> | ||
6 | <item name="android:editTextBackground">@drawable/rn_edit_text_material</item> | ||
7 | </style> | ||
8 | |||
9 | </resources> | ||