Showing
73 changed files
with
3832 additions
and
0 deletions
DetectApp/.buckconfig
0 → 100644
DetectApp/.bundle/config
0 → 100644
DetectApp/.eslintrc.js
0 → 100644
1 | +module.exports = { | ||
2 | + root: true, | ||
3 | + extends: '@react-native-community', | ||
4 | + parser: '@typescript-eslint/parser', | ||
5 | + plugins: ['@typescript-eslint'], | ||
6 | + overrides: [ | ||
7 | + { | ||
8 | + files: ['*.ts', '*.tsx'], | ||
9 | + rules: { | ||
10 | + '@typescript-eslint/no-shadow': ['error'], | ||
11 | + 'no-shadow': 'off', | ||
12 | + 'no-undef': 'off', | ||
13 | + }, | ||
14 | + }, | ||
15 | + ], | ||
16 | +}; |
DetectApp/.gitignore
0 → 100644
1 | +# OSX | ||
2 | +# | ||
3 | +.DS_Store | ||
4 | + | ||
5 | +# Xcode | ||
6 | +# | ||
7 | +build/ | ||
8 | +*.pbxuser | ||
9 | +!default.pbxuser | ||
10 | +*.mode1v3 | ||
11 | +!default.mode1v3 | ||
12 | +*.mode2v3 | ||
13 | +!default.mode2v3 | ||
14 | +*.perspectivev3 | ||
15 | +!default.perspectivev3 | ||
16 | +xcuserdata | ||
17 | +*.xccheckout | ||
18 | +*.moved-aside | ||
19 | +DerivedData | ||
20 | +*.hmap | ||
21 | +*.ipa | ||
22 | +*.xcuserstate | ||
23 | + | ||
24 | +# Android/IntelliJ | ||
25 | +# | ||
26 | +build/ | ||
27 | +.idea | ||
28 | +.gradle | ||
29 | +local.properties | ||
30 | +*.iml | ||
31 | +*.hprof | ||
32 | + | ||
33 | +# node.js | ||
34 | +# | ||
35 | +node_modules/ | ||
36 | +npm-debug.log | ||
37 | +yarn-error.log | ||
38 | + | ||
39 | +# BUCK | ||
40 | +buck-out/ | ||
41 | +\.buckd/ | ||
42 | +*.keystore | ||
43 | +!debug.keystore | ||
44 | + | ||
45 | +# fastlane | ||
46 | +# | ||
47 | +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the | ||
48 | +# screenshots whenever they are needed. | ||
49 | +# For more information about the recommended setup visit: | ||
50 | +# https://docs.fastlane.tools/best-practices/source-control/ | ||
51 | + | ||
52 | +*/fastlane/report.xml | ||
53 | +*/fastlane/Preview.html | ||
54 | +*/fastlane/screenshots | ||
55 | + | ||
56 | +# Bundle artifact | ||
57 | +*.jsbundle | ||
58 | + | ||
59 | +# Ruby / CocoaPods | ||
60 | +/ios/Pods/ | ||
61 | +/vendor/bundle/ |
DetectApp/.prettierrc.js
0 → 100644
DetectApp/.ruby-version
0 → 100644
1 | +2.7.4 |
DetectApp/.watchmanconfig
0 → 100644
1 | +{} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
DetectApp/App.tsx
0 → 100644
1 | +/** | ||
2 | + * Sample React Native App | ||
3 | + * https://github.com/facebook/react-native | ||
4 | + * | ||
5 | + * Generated with the TypeScript template | ||
6 | + * https://github.com/react-native-community/react-native-template-typescript | ||
7 | + * | ||
8 | + * @format | ||
9 | + */ | ||
10 | + | ||
11 | +import React from 'react'; | ||
12 | +import { | ||
13 | + SafeAreaView, | ||
14 | + ScrollView, | ||
15 | + StatusBar, | ||
16 | + StyleSheet, | ||
17 | + Text, | ||
18 | + useColorScheme, | ||
19 | + View, | ||
20 | +} from 'react-native'; | ||
21 | + | ||
22 | +import { | ||
23 | + Colors, | ||
24 | + DebugInstructions, | ||
25 | + Header, | ||
26 | + LearnMoreLinks, | ||
27 | + ReloadInstructions, | ||
28 | +} from 'react-native/Libraries/NewAppScreen'; | ||
29 | + | ||
30 | +const Section: React.FC<{ | ||
31 | + title: string; | ||
32 | +}> = ({children, title}) => { | ||
33 | + const isDarkMode = useColorScheme() === 'dark'; | ||
34 | + return ( | ||
35 | + <View style={styles.sectionContainer}> | ||
36 | + <Text | ||
37 | + style={[ | ||
38 | + styles.sectionTitle, | ||
39 | + { | ||
40 | + color: isDarkMode ? Colors.white : Colors.black, | ||
41 | + }, | ||
42 | + ]}> | ||
43 | + {title} | ||
44 | + </Text> | ||
45 | + <Text | ||
46 | + style={[ | ||
47 | + styles.sectionDescription, | ||
48 | + { | ||
49 | + color: isDarkMode ? Colors.light : Colors.dark, | ||
50 | + }, | ||
51 | + ]}> | ||
52 | + {children} | ||
53 | + </Text> | ||
54 | + </View> | ||
55 | + ); | ||
56 | +}; | ||
57 | + | ||
58 | +const App = () => { | ||
59 | + const isDarkMode = useColorScheme() === 'dark'; | ||
60 | + | ||
61 | + const backgroundStyle = { | ||
62 | + backgroundColor: isDarkMode ? Colors.darker : Colors.lighter, | ||
63 | + }; | ||
64 | + | ||
65 | + return ( | ||
66 | + <SafeAreaView style={backgroundStyle}> | ||
67 | + <StatusBar barStyle={isDarkMode ? 'light-content' : 'dark-content'} /> | ||
68 | + <ScrollView | ||
69 | + contentInsetAdjustmentBehavior="automatic" | ||
70 | + style={backgroundStyle}> | ||
71 | + <Header /> | ||
72 | + <View | ||
73 | + style={{ | ||
74 | + backgroundColor: isDarkMode ? Colors.black : Colors.white, | ||
75 | + }}> | ||
76 | + <Section title="Step One"> | ||
77 | + Edit <Text style={styles.highlight}>App.tsx</Text> to change this | ||
78 | + screen and then come back to see your edits. | ||
79 | + </Section> | ||
80 | + <Section title="See Your Changes"> | ||
81 | + <ReloadInstructions /> | ||
82 | + </Section> | ||
83 | + <Section title="Debug"> | ||
84 | + <DebugInstructions /> | ||
85 | + </Section> | ||
86 | + <Section title="Learn More"> | ||
87 | + Read the docs to discover what to do next: | ||
88 | + </Section> | ||
89 | + <LearnMoreLinks /> | ||
90 | + </View> | ||
91 | + </ScrollView> | ||
92 | + </SafeAreaView> | ||
93 | + ); | ||
94 | +}; | ||
95 | + | ||
96 | +const styles = StyleSheet.create({ | ||
97 | + sectionContainer: { | ||
98 | + marginTop: 32, | ||
99 | + paddingHorizontal: 24, | ||
100 | + }, | ||
101 | + sectionTitle: { | ||
102 | + fontSize: 24, | ||
103 | + fontWeight: '600', | ||
104 | + }, | ||
105 | + sectionDescription: { | ||
106 | + marginTop: 8, | ||
107 | + fontSize: 18, | ||
108 | + fontWeight: '400', | ||
109 | + }, | ||
110 | + highlight: { | ||
111 | + fontWeight: '700', | ||
112 | + }, | ||
113 | +}); | ||
114 | + | ||
115 | +export default App; |
DetectApp/Gemfile
0 → 100644
DetectApp/Gemfile.lock
0 → 100644
1 | +GEM | ||
2 | + remote: https://rubygems.org/ | ||
3 | + specs: | ||
4 | + CFPropertyList (3.0.5) | ||
5 | + rexml | ||
6 | + activesupport (6.1.5) | ||
7 | + concurrent-ruby (~> 1.0, >= 1.0.2) | ||
8 | + i18n (>= 1.6, < 2) | ||
9 | + minitest (>= 5.1) | ||
10 | + tzinfo (~> 2.0) | ||
11 | + zeitwerk (~> 2.3) | ||
12 | + addressable (2.8.0) | ||
13 | + public_suffix (>= 2.0.2, < 5.0) | ||
14 | + algoliasearch (1.27.5) | ||
15 | + httpclient (~> 2.8, >= 2.8.3) | ||
16 | + json (>= 1.5.1) | ||
17 | + atomos (0.1.3) | ||
18 | + claide (1.1.0) | ||
19 | + cocoapods (1.11.3) | ||
20 | + addressable (~> 2.8) | ||
21 | + claide (>= 1.0.2, < 2.0) | ||
22 | + cocoapods-core (= 1.11.3) | ||
23 | + cocoapods-deintegrate (>= 1.0.3, < 2.0) | ||
24 | + cocoapods-downloader (>= 1.4.0, < 2.0) | ||
25 | + cocoapods-plugins (>= 1.0.0, < 2.0) | ||
26 | + cocoapods-search (>= 1.0.0, < 2.0) | ||
27 | + cocoapods-trunk (>= 1.4.0, < 2.0) | ||
28 | + cocoapods-try (>= 1.1.0, < 2.0) | ||
29 | + colored2 (~> 3.1) | ||
30 | + escape (~> 0.0.4) | ||
31 | + fourflusher (>= 2.3.0, < 3.0) | ||
32 | + gh_inspector (~> 1.0) | ||
33 | + molinillo (~> 0.8.0) | ||
34 | + nap (~> 1.0) | ||
35 | + ruby-macho (>= 1.0, < 3.0) | ||
36 | + xcodeproj (>= 1.21.0, < 2.0) | ||
37 | + cocoapods-core (1.11.3) | ||
38 | + activesupport (>= 5.0, < 7) | ||
39 | + addressable (~> 2.8) | ||
40 | + algoliasearch (~> 1.0) | ||
41 | + concurrent-ruby (~> 1.1) | ||
42 | + fuzzy_match (~> 2.0.4) | ||
43 | + nap (~> 1.0) | ||
44 | + netrc (~> 0.11) | ||
45 | + public_suffix (~> 4.0) | ||
46 | + typhoeus (~> 1.0) | ||
47 | + cocoapods-deintegrate (1.0.5) | ||
48 | + cocoapods-downloader (1.6.3) | ||
49 | + cocoapods-plugins (1.0.0) | ||
50 | + nap | ||
51 | + cocoapods-search (1.0.1) | ||
52 | + cocoapods-trunk (1.6.0) | ||
53 | + nap (>= 0.8, < 2.0) | ||
54 | + netrc (~> 0.11) | ||
55 | + cocoapods-try (1.2.0) | ||
56 | + colored2 (3.1.2) | ||
57 | + concurrent-ruby (1.1.10) | ||
58 | + escape (0.0.4) | ||
59 | + ethon (0.15.0) | ||
60 | + ffi (>= 1.15.0) | ||
61 | + ffi (1.15.5) | ||
62 | + fourflusher (2.3.1) | ||
63 | + fuzzy_match (2.0.4) | ||
64 | + gh_inspector (1.1.3) | ||
65 | + httpclient (2.8.3) | ||
66 | + i18n (1.10.0) | ||
67 | + concurrent-ruby (~> 1.0) | ||
68 | + json (2.6.1) | ||
69 | + minitest (5.15.0) | ||
70 | + molinillo (0.8.0) | ||
71 | + nanaimo (0.3.0) | ||
72 | + nap (1.1.0) | ||
73 | + netrc (0.11.0) | ||
74 | + public_suffix (4.0.7) | ||
75 | + rexml (3.2.5) | ||
76 | + ruby-macho (2.5.1) | ||
77 | + typhoeus (1.4.0) | ||
78 | + ethon (>= 0.9.0) | ||
79 | + tzinfo (2.0.4) | ||
80 | + concurrent-ruby (~> 1.0) | ||
81 | + xcodeproj (1.21.0) | ||
82 | + CFPropertyList (>= 2.3.3, < 4.0) | ||
83 | + atomos (~> 0.1.3) | ||
84 | + claide (>= 1.0.2, < 2.0) | ||
85 | + colored2 (~> 3.1) | ||
86 | + nanaimo (~> 0.3.0) | ||
87 | + rexml (~> 3.2.4) | ||
88 | + zeitwerk (2.5.4) | ||
89 | + | ||
90 | +PLATFORMS | ||
91 | + ruby | ||
92 | + | ||
93 | +DEPENDENCIES | ||
94 | + cocoapods (~> 1.11, >= 1.11.2) | ||
95 | + | ||
96 | +RUBY VERSION | ||
97 | + ruby 2.7.4p191 | ||
98 | + | ||
99 | +BUNDLED WITH | ||
100 | + 2.2.27 |
DetectApp/__tests__/App-test.tsx
0 → 100644
1 | +/** | ||
2 | + * @format | ||
3 | + */ | ||
4 | + | ||
5 | +import 'react-native'; | ||
6 | +import React from 'react'; | ||
7 | +import App from '../App'; | ||
8 | + | ||
9 | +// Note: test renderer must be required after react-native. | ||
10 | +import renderer from 'react-test-renderer'; | ||
11 | + | ||
12 | +it('renders correctly', () => { | ||
13 | + renderer.create(<App />); | ||
14 | +}); |
DetectApp/android/app/_BUCK
0 → 100644
1 | +# To learn about Buck see [Docs](https://buckbuild.com/). | ||
2 | +# To run your application with Buck: | ||
3 | +# - install Buck | ||
4 | +# - `npm start` - to start the packager | ||
5 | +# - `cd android` | ||
6 | +# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` | ||
7 | +# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck | ||
8 | +# - `buck install -r android/app` - compile, install and run application | ||
9 | +# | ||
10 | + | ||
11 | +load(":build_defs.bzl", "create_aar_targets", "create_jar_targets") | ||
12 | + | ||
13 | +lib_deps = [] | ||
14 | + | ||
15 | +create_aar_targets(glob(["libs/*.aar"])) | ||
16 | + | ||
17 | +create_jar_targets(glob(["libs/*.jar"])) | ||
18 | + | ||
19 | +android_library( | ||
20 | + name = "all-libs", | ||
21 | + exported_deps = lib_deps, | ||
22 | +) | ||
23 | + | ||
24 | +android_library( | ||
25 | + name = "app-code", | ||
26 | + srcs = glob([ | ||
27 | + "src/main/java/**/*.java", | ||
28 | + ]), | ||
29 | + deps = [ | ||
30 | + ":all-libs", | ||
31 | + ":build_config", | ||
32 | + ":res", | ||
33 | + ], | ||
34 | +) | ||
35 | + | ||
36 | +android_build_config( | ||
37 | + name = "build_config", | ||
38 | + package = "com.detectapp", | ||
39 | +) | ||
40 | + | ||
41 | +android_resource( | ||
42 | + name = "res", | ||
43 | + package = "com.detectapp", | ||
44 | + res = "src/main/res", | ||
45 | +) | ||
46 | + | ||
47 | +android_binary( | ||
48 | + name = "app", | ||
49 | + keystore = "//android/keystores:debug", | ||
50 | + manifest = "src/main/AndroidManifest.xml", | ||
51 | + package_type = "debug", | ||
52 | + deps = [ | ||
53 | + ":app-code", | ||
54 | + ], | ||
55 | +) |
DetectApp/android/app/build.gradle
0 → 100644
1 | +apply plugin: "com.android.application" | ||
2 | + | ||
3 | +import com.android.build.OutputFile | ||
4 | +import org.apache.tools.ant.taskdefs.condition.Os | ||
5 | + | ||
6 | +/** | ||
7 | + * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets | ||
8 | + * and bundleReleaseJsAndAssets). | ||
9 | + * These basically call `react-native bundle` with the correct arguments during the Android build | ||
10 | + * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the | ||
11 | + * bundle directly from the development server. Below you can see all the possible configurations | ||
12 | + * and their defaults. If you decide to add a configuration block, make sure to add it before the | ||
13 | + * `apply from: "../../node_modules/react-native/react.gradle"` line. | ||
14 | + * | ||
15 | + * project.ext.react = [ | ||
16 | + * // the name of the generated asset file containing your JS bundle | ||
17 | + * bundleAssetName: "index.android.bundle", | ||
18 | + * | ||
19 | + * // the entry file for bundle generation. If none specified and | ||
20 | + * // "index.android.js" exists, it will be used. Otherwise "index.js" is | ||
21 | + * // default. Can be overridden with ENTRY_FILE environment variable. | ||
22 | + * entryFile: "index.android.js", | ||
23 | + * | ||
24 | + * // https://reactnative.dev/docs/performance#enable-the-ram-format | ||
25 | + * bundleCommand: "ram-bundle", | ||
26 | + * | ||
27 | + * // whether to bundle JS and assets in debug mode | ||
28 | + * bundleInDebug: false, | ||
29 | + * | ||
30 | + * // whether to bundle JS and assets in release mode | ||
31 | + * bundleInRelease: true, | ||
32 | + * | ||
33 | + * // whether to bundle JS and assets in another build variant (if configured). | ||
34 | + * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants | ||
35 | + * // The configuration property can be in the following formats | ||
36 | + * // 'bundleIn${productFlavor}${buildType}' | ||
37 | + * // 'bundleIn${buildType}' | ||
38 | + * // bundleInFreeDebug: true, | ||
39 | + * // bundleInPaidRelease: true, | ||
40 | + * // bundleInBeta: true, | ||
41 | + * | ||
42 | + * // whether to disable dev mode in custom build variants (by default only disabled in release) | ||
43 | + * // for example: to disable dev mode in the staging build type (if configured) | ||
44 | + * devDisabledInStaging: true, | ||
45 | + * // The configuration property can be in the following formats | ||
46 | + * // 'devDisabledIn${productFlavor}${buildType}' | ||
47 | + * // 'devDisabledIn${buildType}' | ||
48 | + * | ||
49 | + * // the root of your project, i.e. where "package.json" lives | ||
50 | + * root: "../../", | ||
51 | + * | ||
52 | + * // where to put the JS bundle asset in debug mode | ||
53 | + * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", | ||
54 | + * | ||
55 | + * // where to put the JS bundle asset in release mode | ||
56 | + * jsBundleDirRelease: "$buildDir/intermediates/assets/release", | ||
57 | + * | ||
58 | + * // where to put drawable resources / React Native assets, e.g. the ones you use via | ||
59 | + * // require('./image.png')), in debug mode | ||
60 | + * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", | ||
61 | + * | ||
62 | + * // where to put drawable resources / React Native assets, e.g. the ones you use via | ||
63 | + * // require('./image.png')), in release mode | ||
64 | + * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", | ||
65 | + * | ||
66 | + * // by default the gradle tasks are skipped if none of the JS files or assets change; this means | ||
67 | + * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to | ||
68 | + * // date; if you have any other folders that you want to ignore for performance reasons (gradle | ||
69 | + * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ | ||
70 | + * // for example, you might want to remove it from here. | ||
71 | + * inputExcludes: ["android/**", "ios/**"], | ||
72 | + * | ||
73 | + * // override which node gets called and with what additional arguments | ||
74 | + * nodeExecutableAndArgs: ["node"], | ||
75 | + * | ||
76 | + * // supply additional arguments to the packager | ||
77 | + * extraPackagerArgs: [] | ||
78 | + * ] | ||
79 | + */ | ||
80 | + | ||
81 | +project.ext.react = [ | ||
82 | + enableHermes: false, // clean and rebuild if changing | ||
83 | +] | ||
84 | + | ||
85 | +apply from: "../../node_modules/react-native/react.gradle" | ||
86 | + | ||
87 | +/** | ||
88 | + * Set this to true to create two separate APKs instead of one: | ||
89 | + * - An APK that only works on ARM devices | ||
90 | + * - An APK that only works on x86 devices | ||
91 | + * The advantage is the size of the APK is reduced by about 4MB. | ||
92 | + * Upload all the APKs to the Play Store and people will download | ||
93 | + * the correct one based on the CPU architecture of their device. | ||
94 | + */ | ||
95 | +def enableSeparateBuildPerCPUArchitecture = false | ||
96 | + | ||
97 | +/** | ||
98 | + * Run Proguard to shrink the Java bytecode in release builds. | ||
99 | + */ | ||
100 | +def enableProguardInReleaseBuilds = false | ||
101 | + | ||
102 | +/** | ||
103 | + * The preferred build flavor of JavaScriptCore. | ||
104 | + * | ||
105 | + * For example, to use the international variant, you can use: | ||
106 | + * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` | ||
107 | + * | ||
108 | + * The international variant includes ICU i18n library and necessary data | ||
109 | + * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that | ||
110 | + * give correct results when using with locales other than en-US. Note that | ||
111 | + * this variant is about 6MiB larger per architecture than default. | ||
112 | + */ | ||
113 | +def jscFlavor = 'org.webkit:android-jsc:+' | ||
114 | + | ||
115 | +/** | ||
116 | + * Whether to enable the Hermes VM. | ||
117 | + * | ||
118 | + * This should be set on project.ext.react and that value will be read here. If it is not set | ||
119 | + * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode | ||
120 | + * and the benefits of using Hermes will therefore be sharply reduced. | ||
121 | + */ | ||
122 | +def enableHermes = project.ext.react.get("enableHermes", false); | ||
123 | + | ||
124 | +/** | ||
125 | + * Architectures to build native code for. | ||
126 | + */ | ||
127 | +def reactNativeArchitectures() { | ||
128 | + def value = project.getProperties().get("reactNativeArchitectures") | ||
129 | + return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] | ||
130 | +} | ||
131 | + | ||
132 | +android { | ||
133 | + ndkVersion rootProject.ext.ndkVersion | ||
134 | + | ||
135 | + compileSdkVersion rootProject.ext.compileSdkVersion | ||
136 | + | ||
137 | + defaultConfig { | ||
138 | + applicationId "com.detectapp" | ||
139 | + minSdkVersion rootProject.ext.minSdkVersion | ||
140 | + targetSdkVersion rootProject.ext.targetSdkVersion | ||
141 | + versionCode 1 | ||
142 | + versionName "1.0" | ||
143 | + buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() | ||
144 | + | ||
145 | + if (isNewArchitectureEnabled()) { | ||
146 | + // We configure the NDK build only if you decide to opt-in for the New Architecture. | ||
147 | + externalNativeBuild { | ||
148 | + ndkBuild { | ||
149 | + arguments "APP_PLATFORM=android-21", | ||
150 | + "APP_STL=c++_shared", | ||
151 | + "NDK_TOOLCHAIN_VERSION=clang", | ||
152 | + "GENERATED_SRC_DIR=$buildDir/generated/source", | ||
153 | + "PROJECT_BUILD_DIR=$buildDir", | ||
154 | + "REACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid", | ||
155 | + "REACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build" | ||
156 | + cFlags "-Wall", "-Werror", "-fexceptions", "-frtti", "-DWITH_INSPECTOR=1" | ||
157 | + cppFlags "-std=c++17" | ||
158 | + // Make sure this target name is the same you specify inside the | ||
159 | + // src/main/jni/Android.mk file for the `LOCAL_MODULE` variable. | ||
160 | + targets "detectapp_appmodules" | ||
161 | + | ||
162 | + // Fix for windows limit on number of character in file paths and in command lines | ||
163 | + if (Os.isFamily(Os.FAMILY_WINDOWS)) { | ||
164 | + arguments "NDK_OUT=${rootProject.projectDir.getParent()}\\.cxx", | ||
165 | + "NDK_APP_SHORT_COMMANDS=true" | ||
166 | + } | ||
167 | + } | ||
168 | + } | ||
169 | + if (!enableSeparateBuildPerCPUArchitecture) { | ||
170 | + ndk { | ||
171 | + abiFilters (*reactNativeArchitectures()) | ||
172 | + } | ||
173 | + } | ||
174 | + } | ||
175 | + } | ||
176 | + | ||
177 | + if (isNewArchitectureEnabled()) { | ||
178 | + // We configure the NDK build only if you decide to opt-in for the New Architecture. | ||
179 | + externalNativeBuild { | ||
180 | + ndkBuild { | ||
181 | + path "$projectDir/src/main/jni/Android.mk" | ||
182 | + } | ||
183 | + } | ||
184 | + def reactAndroidProjectDir = project(':ReactAndroid').projectDir | ||
185 | + def packageReactNdkDebugLibs = tasks.register("packageReactNdkDebugLibs", Copy) { | ||
186 | + dependsOn(":ReactAndroid:packageReactNdkDebugLibsForBuck") | ||
187 | + from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib") | ||
188 | + into("$buildDir/react-ndk/exported") | ||
189 | + } | ||
190 | + def packageReactNdkReleaseLibs = tasks.register("packageReactNdkReleaseLibs", Copy) { | ||
191 | + dependsOn(":ReactAndroid:packageReactNdkReleaseLibsForBuck") | ||
192 | + from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib") | ||
193 | + into("$buildDir/react-ndk/exported") | ||
194 | + } | ||
195 | + afterEvaluate { | ||
196 | + // If you wish to add a custom TurboModule or component locally, | ||
197 | + // you should uncomment this line. | ||
198 | + // preBuild.dependsOn("generateCodegenArtifactsFromSchema") | ||
199 | + preDebugBuild.dependsOn(packageReactNdkDebugLibs) | ||
200 | + preReleaseBuild.dependsOn(packageReactNdkReleaseLibs) | ||
201 | + | ||
202 | + // Due to a bug inside AGP, we have to explicitly set a dependency | ||
203 | + // between configureNdkBuild* tasks and the preBuild tasks. | ||
204 | + // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732 | ||
205 | + configureNdkBuildRelease.dependsOn(preReleaseBuild) | ||
206 | + configureNdkBuildDebug.dependsOn(preDebugBuild) | ||
207 | + reactNativeArchitectures().each { architecture -> | ||
208 | + tasks.findByName("configureNdkBuildDebug[${architecture}]")?.configure { | ||
209 | + dependsOn("preDebugBuild") | ||
210 | + } | ||
211 | + tasks.findByName("configureNdkBuildRelease[${architecture}]")?.configure { | ||
212 | + dependsOn("preReleaseBuild") | ||
213 | + } | ||
214 | + } | ||
215 | + } | ||
216 | + } | ||
217 | + | ||
218 | + splits { | ||
219 | + abi { | ||
220 | + reset() | ||
221 | + enable enableSeparateBuildPerCPUArchitecture | ||
222 | + universalApk false // If true, also generate a universal APK | ||
223 | + include (*reactNativeArchitectures()) | ||
224 | + } | ||
225 | + } | ||
226 | + signingConfigs { | ||
227 | + debug { | ||
228 | + storeFile file('debug.keystore') | ||
229 | + storePassword 'android' | ||
230 | + keyAlias 'androiddebugkey' | ||
231 | + keyPassword 'android' | ||
232 | + } | ||
233 | + } | ||
234 | + buildTypes { | ||
235 | + debug { | ||
236 | + signingConfig signingConfigs.debug | ||
237 | + } | ||
238 | + release { | ||
239 | + // Caution! In production, you need to generate your own keystore file. | ||
240 | + // see https://reactnative.dev/docs/signed-apk-android. | ||
241 | + signingConfig signingConfigs.debug | ||
242 | + minifyEnabled enableProguardInReleaseBuilds | ||
243 | + proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" | ||
244 | + } | ||
245 | + } | ||
246 | + | ||
247 | + // applicationVariants are e.g. debug, release | ||
248 | + applicationVariants.all { variant -> | ||
249 | + variant.outputs.each { output -> | ||
250 | + // For each separate APK per architecture, set a unique version code as described here: | ||
251 | + // https://developer.android.com/studio/build/configure-apk-splits.html | ||
252 | + // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc. | ||
253 | + def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4] | ||
254 | + def abi = output.getFilter(OutputFile.ABI) | ||
255 | + if (abi != null) { // null for the universal-debug, universal-release variants | ||
256 | + output.versionCodeOverride = | ||
257 | + defaultConfig.versionCode * 1000 + versionCodes.get(abi) | ||
258 | + } | ||
259 | + | ||
260 | + } | ||
261 | + } | ||
262 | +} | ||
263 | + | ||
264 | +dependencies { | ||
265 | + implementation fileTree(dir: "libs", include: ["*.jar"]) | ||
266 | + | ||
267 | + //noinspection GradleDynamicVersion | ||
268 | + implementation "com.facebook.react:react-native:+" // From node_modules | ||
269 | + | ||
270 | + implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" | ||
271 | + | ||
272 | + debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") { | ||
273 | + exclude group:'com.facebook.fbjni' | ||
274 | + } | ||
275 | + | ||
276 | + debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { | ||
277 | + exclude group:'com.facebook.flipper' | ||
278 | + exclude group:'com.squareup.okhttp3', module:'okhttp' | ||
279 | + } | ||
280 | + | ||
281 | + debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") { | ||
282 | + exclude group:'com.facebook.flipper' | ||
283 | + } | ||
284 | + | ||
285 | + if (enableHermes) { | ||
286 | + def hermesPath = "../../node_modules/hermes-engine/android/"; | ||
287 | + debugImplementation files(hermesPath + "hermes-debug.aar") | ||
288 | + releaseImplementation files(hermesPath + "hermes-release.aar") | ||
289 | + } else { | ||
290 | + implementation jscFlavor | ||
291 | + } | ||
292 | +} | ||
293 | + | ||
294 | +if (isNewArchitectureEnabled()) { | ||
295 | + // If new architecture is enabled, we let you build RN from source | ||
296 | + // Otherwise we fallback to a prebuilt .aar bundled in the NPM package. | ||
297 | + // This will be applied to all the imported transtitive dependency. | ||
298 | + configurations.all { | ||
299 | + resolutionStrategy.dependencySubstitution { | ||
300 | + substitute(module("com.facebook.react:react-native")) | ||
301 | + .using(project(":ReactAndroid")).because("On New Architecture we're building React Native from source") | ||
302 | + } | ||
303 | + } | ||
304 | +} | ||
305 | + | ||
306 | +// Run this once to be able to run the application with BUCK | ||
307 | +// puts all compile dependencies into folder libs for BUCK to use | ||
308 | +task copyDownloadableDepsToLibs(type: Copy) { | ||
309 | + from configurations.implementation | ||
310 | + into 'libs' | ||
311 | +} | ||
312 | + | ||
313 | +apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) | ||
314 | + | ||
315 | +def isNewArchitectureEnabled() { | ||
316 | + // To opt-in for the New Architecture, you can either: | ||
317 | + // - Set `newArchEnabled` to true inside the `gradle.properties` file | ||
318 | + // - Invoke gradle with `-newArchEnabled=true` | ||
319 | + // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true` | ||
320 | + return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true" | ||
321 | +} |
DetectApp/android/app/build_defs.bzl
0 → 100644
1 | +"""Helper definitions to glob .aar and .jar targets""" | ||
2 | + | ||
3 | +def create_aar_targets(aarfiles): | ||
4 | + for aarfile in aarfiles: | ||
5 | + name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")] | ||
6 | + lib_deps.append(":" + name) | ||
7 | + android_prebuilt_aar( | ||
8 | + name = name, | ||
9 | + aar = aarfile, | ||
10 | + ) | ||
11 | + | ||
12 | +def create_jar_targets(jarfiles): | ||
13 | + for jarfile in jarfiles: | ||
14 | + name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")] | ||
15 | + lib_deps.append(":" + name) | ||
16 | + prebuilt_jar( | ||
17 | + name = name, | ||
18 | + binary_jar = jarfile, | ||
19 | + ) |
DetectApp/android/app/debug.keystore
0 → 100644
No preview for this file type
DetectApp/android/app/proguard-rules.pro
0 → 100644
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: |
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 | + <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> | ||
6 | + | ||
7 | + <application | ||
8 | + android:usesCleartextTraffic="true" | ||
9 | + tools:targetApi="28" | ||
10 | + tools:ignore="GoogleAppIndexingWarning"> | ||
11 | + <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" android:exported="false" /> | ||
12 | + </application> | ||
13 | +</manifest> |
1 | +/** | ||
2 | + * Copyright (c) Meta Platforms, Inc. and affiliates. | ||
3 | + * | ||
4 | + * <p>This source code is licensed under the MIT license found in the LICENSE file in the root | ||
5 | + * directory of this source tree. | ||
6 | + */ | ||
7 | +package com.detectapp; | ||
8 | + | ||
9 | +import android.content.Context; | ||
10 | +import com.facebook.flipper.android.AndroidFlipperClient; | ||
11 | +import com.facebook.flipper.android.utils.FlipperUtils; | ||
12 | +import com.facebook.flipper.core.FlipperClient; | ||
13 | +import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin; | ||
14 | +import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin; | ||
15 | +import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin; | ||
16 | +import com.facebook.flipper.plugins.inspector.DescriptorMapping; | ||
17 | +import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin; | ||
18 | +import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor; | ||
19 | +import com.facebook.flipper.plugins.network.NetworkFlipperPlugin; | ||
20 | +import com.facebook.flipper.plugins.react.ReactFlipperPlugin; | ||
21 | +import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin; | ||
22 | +import com.facebook.react.ReactInstanceEventListener; | ||
23 | +import com.facebook.react.ReactInstanceManager; | ||
24 | +import com.facebook.react.bridge.ReactContext; | ||
25 | +import com.facebook.react.modules.network.NetworkingModule; | ||
26 | +import okhttp3.OkHttpClient; | ||
27 | + | ||
28 | +public class ReactNativeFlipper { | ||
29 | + public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { | ||
30 | + if (FlipperUtils.shouldEnableFlipper(context)) { | ||
31 | + final FlipperClient client = AndroidFlipperClient.getInstance(context); | ||
32 | + | ||
33 | + client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())); | ||
34 | + client.addPlugin(new ReactFlipperPlugin()); | ||
35 | + client.addPlugin(new DatabasesFlipperPlugin(context)); | ||
36 | + client.addPlugin(new SharedPreferencesFlipperPlugin(context)); | ||
37 | + client.addPlugin(CrashReporterPlugin.getInstance()); | ||
38 | + | ||
39 | + NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin(); | ||
40 | + NetworkingModule.setCustomClientBuilder( | ||
41 | + new NetworkingModule.CustomClientBuilder() { | ||
42 | + @Override | ||
43 | + public void apply(OkHttpClient.Builder builder) { | ||
44 | + builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin)); | ||
45 | + } | ||
46 | + }); | ||
47 | + client.addPlugin(networkFlipperPlugin); | ||
48 | + client.start(); | ||
49 | + | ||
50 | + // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized | ||
51 | + // Hence we run if after all native modules have been initialized | ||
52 | + ReactContext reactContext = reactInstanceManager.getCurrentReactContext(); | ||
53 | + if (reactContext == null) { | ||
54 | + reactInstanceManager.addReactInstanceEventListener( | ||
55 | + new ReactInstanceEventListener() { | ||
56 | + @Override | ||
57 | + public void onReactContextInitialized(ReactContext reactContext) { | ||
58 | + reactInstanceManager.removeReactInstanceEventListener(this); | ||
59 | + reactContext.runOnNativeModulesQueueThread( | ||
60 | + new Runnable() { | ||
61 | + @Override | ||
62 | + public void run() { | ||
63 | + client.addPlugin(new FrescoFlipperPlugin()); | ||
64 | + } | ||
65 | + }); | ||
66 | + } | ||
67 | + }); | ||
68 | + } else { | ||
69 | + client.addPlugin(new FrescoFlipperPlugin()); | ||
70 | + } | ||
71 | + } | ||
72 | + } | ||
73 | +} |
1 | +<manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
2 | + package="com.detectapp"> | ||
3 | + | ||
4 | + <uses-permission android:name="android.permission.INTERNET" /> | ||
5 | + | ||
6 | + <application | ||
7 | + android:name=".MainApplication" | ||
8 | + android:label="@string/app_name" | ||
9 | + android:icon="@mipmap/ic_launcher" | ||
10 | + android:roundIcon="@mipmap/ic_launcher_round" | ||
11 | + android:allowBackup="false" | ||
12 | + android:theme="@style/AppTheme"> | ||
13 | + <activity | ||
14 | + android:name=".MainActivity" | ||
15 | + android:label="@string/app_name" | ||
16 | + android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" | ||
17 | + android:launchMode="singleTask" | ||
18 | + android:windowSoftInputMode="adjustResize" | ||
19 | + android:exported="true"> | ||
20 | + <intent-filter> | ||
21 | + <action android:name="android.intent.action.MAIN" /> | ||
22 | + <category android:name="android.intent.category.LAUNCHER" /> | ||
23 | + </intent-filter> | ||
24 | + </activity> | ||
25 | + </application> | ||
26 | +</manifest> |
1 | +package com.detectapp; | ||
2 | + | ||
3 | +import com.facebook.react.ReactActivity; | ||
4 | +import com.facebook.react.ReactActivityDelegate; | ||
5 | +import com.facebook.react.ReactRootView; | ||
6 | + | ||
7 | +public class MainActivity extends ReactActivity { | ||
8 | + | ||
9 | + /** | ||
10 | + * Returns the name of the main component registered from JavaScript. This is used to schedule | ||
11 | + * rendering of the component. | ||
12 | + */ | ||
13 | + @Override | ||
14 | + protected String getMainComponentName() { | ||
15 | + return "DetectApp"; | ||
16 | + } | ||
17 | + | ||
18 | + /** | ||
19 | + * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and | ||
20 | + * you can specify the rendered you wish to use (Fabric or the older renderer). | ||
21 | + */ | ||
22 | + @Override | ||
23 | + protected ReactActivityDelegate createReactActivityDelegate() { | ||
24 | + return new MainActivityDelegate(this, getMainComponentName()); | ||
25 | + } | ||
26 | + | ||
27 | + public static class MainActivityDelegate extends ReactActivityDelegate { | ||
28 | + public MainActivityDelegate(ReactActivity activity, String mainComponentName) { | ||
29 | + super(activity, mainComponentName); | ||
30 | + } | ||
31 | + | ||
32 | + @Override | ||
33 | + protected ReactRootView createRootView() { | ||
34 | + ReactRootView reactRootView = new ReactRootView(getContext()); | ||
35 | + // If you opted-in for the New Architecture, we enable the Fabric Renderer. | ||
36 | + reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED); | ||
37 | + return reactRootView; | ||
38 | + } | ||
39 | + } | ||
40 | +} |
1 | +package com.detectapp; | ||
2 | + | ||
3 | +import android.app.Application; | ||
4 | +import android.content.Context; | ||
5 | +import com.facebook.react.PackageList; | ||
6 | +import com.facebook.react.ReactApplication; | ||
7 | +import com.facebook.react.ReactInstanceManager; | ||
8 | +import com.facebook.react.ReactNativeHost; | ||
9 | +import com.facebook.react.ReactPackage; | ||
10 | +import com.facebook.react.config.ReactFeatureFlags; | ||
11 | +import com.facebook.soloader.SoLoader; | ||
12 | +import com.detectapp.newarchitecture.MainApplicationReactNativeHost; | ||
13 | +import java.lang.reflect.InvocationTargetException; | ||
14 | +import java.util.List; | ||
15 | + | ||
16 | +public class MainApplication extends Application implements ReactApplication { | ||
17 | + | ||
18 | + private final ReactNativeHost mReactNativeHost = | ||
19 | + new ReactNativeHost(this) { | ||
20 | + @Override | ||
21 | + public boolean getUseDeveloperSupport() { | ||
22 | + return BuildConfig.DEBUG; | ||
23 | + } | ||
24 | + | ||
25 | + @Override | ||
26 | + protected List<ReactPackage> getPackages() { | ||
27 | + @SuppressWarnings("UnnecessaryLocalVariable") | ||
28 | + List<ReactPackage> packages = new PackageList(this).getPackages(); | ||
29 | + // Packages that cannot be autolinked yet can be added manually here, for example: | ||
30 | + // packages.add(new MyReactNativePackage()); | ||
31 | + return packages; | ||
32 | + } | ||
33 | + | ||
34 | + @Override | ||
35 | + protected String getJSMainModuleName() { | ||
36 | + return "index"; | ||
37 | + } | ||
38 | + }; | ||
39 | + | ||
40 | + private final ReactNativeHost mNewArchitectureNativeHost = | ||
41 | + new MainApplicationReactNativeHost(this); | ||
42 | + | ||
43 | + @Override | ||
44 | + public ReactNativeHost getReactNativeHost() { | ||
45 | + if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { | ||
46 | + return mNewArchitectureNativeHost; | ||
47 | + } else { | ||
48 | + return mReactNativeHost; | ||
49 | + } | ||
50 | + } | ||
51 | + | ||
52 | + @Override | ||
53 | + public void onCreate() { | ||
54 | + super.onCreate(); | ||
55 | + // If you opted-in for the New Architecture, we enable the TurboModule system | ||
56 | + ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; | ||
57 | + SoLoader.init(this, /* native exopackage */ false); | ||
58 | + initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); | ||
59 | + } | ||
60 | + | ||
61 | + /** | ||
62 | + * Loads Flipper in React Native templates. Call this in the onCreate method with something like | ||
63 | + * initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); | ||
64 | + * | ||
65 | + * @param context | ||
66 | + * @param reactInstanceManager | ||
67 | + */ | ||
68 | + private static void initializeFlipper( | ||
69 | + Context context, ReactInstanceManager reactInstanceManager) { | ||
70 | + if (BuildConfig.DEBUG) { | ||
71 | + try { | ||
72 | + /* | ||
73 | + We use reflection here to pick up the class that initializes Flipper, | ||
74 | + since Flipper library is not available in release mode | ||
75 | + */ | ||
76 | + Class<?> aClass = Class.forName("com.detectapp.ReactNativeFlipper"); | ||
77 | + aClass | ||
78 | + .getMethod("initializeFlipper", Context.class, ReactInstanceManager.class) | ||
79 | + .invoke(null, context, reactInstanceManager); | ||
80 | + } catch (ClassNotFoundException e) { | ||
81 | + e.printStackTrace(); | ||
82 | + } catch (NoSuchMethodException e) { | ||
83 | + e.printStackTrace(); | ||
84 | + } catch (IllegalAccessException e) { | ||
85 | + e.printStackTrace(); | ||
86 | + } catch (InvocationTargetException e) { | ||
87 | + e.printStackTrace(); | ||
88 | + } | ||
89 | + } | ||
90 | + } | ||
91 | +} |
1 | +package com.detectapp.newarchitecture; | ||
2 | + | ||
3 | +import android.app.Application; | ||
4 | +import androidx.annotation.NonNull; | ||
5 | +import com.facebook.react.PackageList; | ||
6 | +import com.facebook.react.ReactInstanceManager; | ||
7 | +import com.facebook.react.ReactNativeHost; | ||
8 | +import com.facebook.react.ReactPackage; | ||
9 | +import com.facebook.react.ReactPackageTurboModuleManagerDelegate; | ||
10 | +import com.facebook.react.bridge.JSIModulePackage; | ||
11 | +import com.facebook.react.bridge.JSIModuleProvider; | ||
12 | +import com.facebook.react.bridge.JSIModuleSpec; | ||
13 | +import com.facebook.react.bridge.JSIModuleType; | ||
14 | +import com.facebook.react.bridge.JavaScriptContextHolder; | ||
15 | +import com.facebook.react.bridge.ReactApplicationContext; | ||
16 | +import com.facebook.react.bridge.UIManager; | ||
17 | +import com.facebook.react.fabric.ComponentFactory; | ||
18 | +import com.facebook.react.fabric.CoreComponentsRegistry; | ||
19 | +import com.facebook.react.fabric.EmptyReactNativeConfig; | ||
20 | +import com.facebook.react.fabric.FabricJSIModuleProvider; | ||
21 | +import com.facebook.react.uimanager.ViewManagerRegistry; | ||
22 | +import com.detectapp.BuildConfig; | ||
23 | +import com.detectapp.newarchitecture.components.MainComponentsRegistry; | ||
24 | +import com.detectapp.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate; | ||
25 | +import java.util.ArrayList; | ||
26 | +import java.util.List; | ||
27 | + | ||
28 | +/** | ||
29 | + * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both | ||
30 | + * TurboModule delegates and the Fabric Renderer. | ||
31 | + * | ||
32 | + * <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the | ||
33 | + * `newArchEnabled` property). Is ignored otherwise. | ||
34 | + */ | ||
35 | +public class MainApplicationReactNativeHost extends ReactNativeHost { | ||
36 | + public MainApplicationReactNativeHost(Application application) { | ||
37 | + super(application); | ||
38 | + } | ||
39 | + | ||
40 | + @Override | ||
41 | + public boolean getUseDeveloperSupport() { | ||
42 | + return BuildConfig.DEBUG; | ||
43 | + } | ||
44 | + | ||
45 | + @Override | ||
46 | + protected List<ReactPackage> getPackages() { | ||
47 | + List<ReactPackage> packages = new PackageList(this).getPackages(); | ||
48 | + // Packages that cannot be autolinked yet can be added manually here, for example: | ||
49 | + // packages.add(new MyReactNativePackage()); | ||
50 | + // TurboModules must also be loaded here providing a valid TurboReactPackage implementation: | ||
51 | + // packages.add(new TurboReactPackage() { ... }); | ||
52 | + // If you have custom Fabric Components, their ViewManagers should also be loaded here | ||
53 | + // inside a ReactPackage. | ||
54 | + return packages; | ||
55 | + } | ||
56 | + | ||
57 | + @Override | ||
58 | + protected String getJSMainModuleName() { | ||
59 | + return "index"; | ||
60 | + } | ||
61 | + | ||
62 | + @NonNull | ||
63 | + @Override | ||
64 | + protected ReactPackageTurboModuleManagerDelegate.Builder | ||
65 | + getReactPackageTurboModuleManagerDelegateBuilder() { | ||
66 | + // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary | ||
67 | + // for the new architecture and to use TurboModules correctly. | ||
68 | + return new MainApplicationTurboModuleManagerDelegate.Builder(); | ||
69 | + } | ||
70 | + | ||
71 | + @Override | ||
72 | + protected JSIModulePackage getJSIModulePackage() { | ||
73 | + return new JSIModulePackage() { | ||
74 | + @Override | ||
75 | + public List<JSIModuleSpec> getJSIModules( | ||
76 | + final ReactApplicationContext reactApplicationContext, | ||
77 | + final JavaScriptContextHolder jsContext) { | ||
78 | + final List<JSIModuleSpec> specs = new ArrayList<>(); | ||
79 | + | ||
80 | + // Here we provide a new JSIModuleSpec that will be responsible of providing the | ||
81 | + // custom Fabric Components. | ||
82 | + specs.add( | ||
83 | + new JSIModuleSpec() { | ||
84 | + @Override | ||
85 | + public JSIModuleType getJSIModuleType() { | ||
86 | + return JSIModuleType.UIManager; | ||
87 | + } | ||
88 | + | ||
89 | + @Override | ||
90 | + public JSIModuleProvider<UIManager> getJSIModuleProvider() { | ||
91 | + final ComponentFactory componentFactory = new ComponentFactory(); | ||
92 | + CoreComponentsRegistry.register(componentFactory); | ||
93 | + | ||
94 | + // Here we register a Components Registry. | ||
95 | + // The one that is generated with the template contains no components | ||
96 | + // and just provides you the one from React Native core. | ||
97 | + MainComponentsRegistry.register(componentFactory); | ||
98 | + | ||
99 | + final ReactInstanceManager reactInstanceManager = getReactInstanceManager(); | ||
100 | + | ||
101 | + ViewManagerRegistry viewManagerRegistry = | ||
102 | + new ViewManagerRegistry( | ||
103 | + reactInstanceManager.getOrCreateViewManagers(reactApplicationContext)); | ||
104 | + | ||
105 | + return new FabricJSIModuleProvider( | ||
106 | + reactApplicationContext, | ||
107 | + componentFactory, | ||
108 | + new EmptyReactNativeConfig(), | ||
109 | + viewManagerRegistry); | ||
110 | + } | ||
111 | + }); | ||
112 | + return specs; | ||
113 | + } | ||
114 | + }; | ||
115 | + } | ||
116 | +} |
1 | +package com.detectapp.newarchitecture.components; | ||
2 | + | ||
3 | +import com.facebook.jni.HybridData; | ||
4 | +import com.facebook.proguard.annotations.DoNotStrip; | ||
5 | +import com.facebook.react.fabric.ComponentFactory; | ||
6 | +import com.facebook.soloader.SoLoader; | ||
7 | + | ||
8 | +/** | ||
9 | + * Class responsible to load the custom Fabric Components. This class has native methods and needs a | ||
10 | + * corresponding C++ implementation/header file to work correctly (already placed inside the jni/ | ||
11 | + * folder for you). | ||
12 | + * | ||
13 | + * <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the | ||
14 | + * `newArchEnabled` property). Is ignored otherwise. | ||
15 | + */ | ||
16 | +@DoNotStrip | ||
17 | +public class MainComponentsRegistry { | ||
18 | + static { | ||
19 | + SoLoader.loadLibrary("fabricjni"); | ||
20 | + } | ||
21 | + | ||
22 | + @DoNotStrip private final HybridData mHybridData; | ||
23 | + | ||
24 | + @DoNotStrip | ||
25 | + private native HybridData initHybrid(ComponentFactory componentFactory); | ||
26 | + | ||
27 | + @DoNotStrip | ||
28 | + private MainComponentsRegistry(ComponentFactory componentFactory) { | ||
29 | + mHybridData = initHybrid(componentFactory); | ||
30 | + } | ||
31 | + | ||
32 | + @DoNotStrip | ||
33 | + public static MainComponentsRegistry register(ComponentFactory componentFactory) { | ||
34 | + return new MainComponentsRegistry(componentFactory); | ||
35 | + } | ||
36 | +} |
1 | +package com.detectapp.newarchitecture.modules; | ||
2 | + | ||
3 | +import com.facebook.jni.HybridData; | ||
4 | +import com.facebook.react.ReactPackage; | ||
5 | +import com.facebook.react.ReactPackageTurboModuleManagerDelegate; | ||
6 | +import com.facebook.react.bridge.ReactApplicationContext; | ||
7 | +import com.facebook.soloader.SoLoader; | ||
8 | +import java.util.List; | ||
9 | + | ||
10 | +/** | ||
11 | + * Class responsible to load the TurboModules. This class has native methods and needs a | ||
12 | + * corresponding C++ implementation/header file to work correctly (already placed inside the jni/ | ||
13 | + * folder for you). | ||
14 | + * | ||
15 | + * <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the | ||
16 | + * `newArchEnabled` property). Is ignored otherwise. | ||
17 | + */ | ||
18 | +public class MainApplicationTurboModuleManagerDelegate | ||
19 | + extends ReactPackageTurboModuleManagerDelegate { | ||
20 | + | ||
21 | + private static volatile boolean sIsSoLibraryLoaded; | ||
22 | + | ||
23 | + protected MainApplicationTurboModuleManagerDelegate( | ||
24 | + ReactApplicationContext reactApplicationContext, List<ReactPackage> packages) { | ||
25 | + super(reactApplicationContext, packages); | ||
26 | + } | ||
27 | + | ||
28 | + protected native HybridData initHybrid(); | ||
29 | + | ||
30 | + native boolean canCreateTurboModule(String moduleName); | ||
31 | + | ||
32 | + public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder { | ||
33 | + protected MainApplicationTurboModuleManagerDelegate build( | ||
34 | + ReactApplicationContext context, List<ReactPackage> packages) { | ||
35 | + return new MainApplicationTurboModuleManagerDelegate(context, packages); | ||
36 | + } | ||
37 | + } | ||
38 | + | ||
39 | + @Override | ||
40 | + protected synchronized void maybeLoadOtherSoLibraries() { | ||
41 | + if (!sIsSoLibraryLoaded) { | ||
42 | + // If you change the name of your application .so file in the Android.mk file, | ||
43 | + // make sure you update the name here as well. | ||
44 | + SoLoader.loadLibrary("detectapp_appmodules"); | ||
45 | + sIsSoLibraryLoaded = true; | ||
46 | + } | ||
47 | + } | ||
48 | +} |
1 | +THIS_DIR := $(call my-dir) | ||
2 | + | ||
3 | +include $(REACT_ANDROID_DIR)/Android-prebuilt.mk | ||
4 | + | ||
5 | +# If you wish to add a custom TurboModule or Fabric component in your app you | ||
6 | +# will have to include the following autogenerated makefile. | ||
7 | +# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk | ||
8 | +include $(CLEAR_VARS) | ||
9 | + | ||
10 | +LOCAL_PATH := $(THIS_DIR) | ||
11 | + | ||
12 | +# You can customize the name of your application .so file here. | ||
13 | +LOCAL_MODULE := detectapp_appmodules | ||
14 | + | ||
15 | +LOCAL_C_INCLUDES := $(LOCAL_PATH) | ||
16 | +LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp) | ||
17 | +LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) | ||
18 | + | ||
19 | +# If you wish to add a custom TurboModule or Fabric component in your app you | ||
20 | +# will have to uncomment those lines to include the generated source | ||
21 | +# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni) | ||
22 | +# | ||
23 | +# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni | ||
24 | +# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp) | ||
25 | +# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni | ||
26 | + | ||
27 | +# Here you should add any native library you wish to depend on. | ||
28 | +LOCAL_SHARED_LIBRARIES := \ | ||
29 | + libfabricjni \ | ||
30 | + libfbjni \ | ||
31 | + libfolly_futures \ | ||
32 | + libfolly_json \ | ||
33 | + libglog \ | ||
34 | + libjsi \ | ||
35 | + libreact_codegen_rncore \ | ||
36 | + libreact_debug \ | ||
37 | + libreact_nativemodule_core \ | ||
38 | + libreact_render_componentregistry \ | ||
39 | + libreact_render_core \ | ||
40 | + libreact_render_debug \ | ||
41 | + libreact_render_graphics \ | ||
42 | + librrc_view \ | ||
43 | + libruntimeexecutor \ | ||
44 | + libturbomodulejsijni \ | ||
45 | + libyoga | ||
46 | + | ||
47 | +LOCAL_CFLAGS := -DLOG_TAG=\"ReactNative\" -fexceptions -frtti -std=c++17 -Wall | ||
48 | + | ||
49 | +include $(BUILD_SHARED_LIBRARY) |
1 | +#include "MainApplicationModuleProvider.h" | ||
2 | + | ||
3 | +#include <rncore.h> | ||
4 | + | ||
5 | +namespace facebook { | ||
6 | +namespace react { | ||
7 | + | ||
8 | +std::shared_ptr<TurboModule> MainApplicationModuleProvider( | ||
9 | + const std::string moduleName, | ||
10 | + const JavaTurboModule::InitParams ¶ms) { | ||
11 | + // Here you can provide your own module provider for TurboModules coming from | ||
12 | + // either your application or from external libraries. The approach to follow | ||
13 | + // is similar to the following (for a library called `samplelibrary`: | ||
14 | + // | ||
15 | + // auto module = samplelibrary_ModuleProvider(moduleName, params); | ||
16 | + // if (module != nullptr) { | ||
17 | + // return module; | ||
18 | + // } | ||
19 | + // return rncore_ModuleProvider(moduleName, params); | ||
20 | + return rncore_ModuleProvider(moduleName, params); | ||
21 | +} | ||
22 | + | ||
23 | +} // namespace react | ||
24 | +} // namespace facebook |
1 | +#pragma once | ||
2 | + | ||
3 | +#include <memory> | ||
4 | +#include <string> | ||
5 | + | ||
6 | +#include <ReactCommon/JavaTurboModule.h> | ||
7 | + | ||
8 | +namespace facebook { | ||
9 | +namespace react { | ||
10 | + | ||
11 | +std::shared_ptr<TurboModule> MainApplicationModuleProvider( | ||
12 | + const std::string moduleName, | ||
13 | + const JavaTurboModule::InitParams ¶ms); | ||
14 | + | ||
15 | +} // namespace react | ||
16 | +} // namespace facebook |
1 | +#include "MainApplicationTurboModuleManagerDelegate.h" | ||
2 | +#include "MainApplicationModuleProvider.h" | ||
3 | + | ||
4 | +namespace facebook { | ||
5 | +namespace react { | ||
6 | + | ||
7 | +jni::local_ref<MainApplicationTurboModuleManagerDelegate::jhybriddata> | ||
8 | +MainApplicationTurboModuleManagerDelegate::initHybrid( | ||
9 | + jni::alias_ref<jhybridobject>) { | ||
10 | + return makeCxxInstance(); | ||
11 | +} | ||
12 | + | ||
13 | +void MainApplicationTurboModuleManagerDelegate::registerNatives() { | ||
14 | + registerHybrid({ | ||
15 | + makeNativeMethod( | ||
16 | + "initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid), | ||
17 | + makeNativeMethod( | ||
18 | + "canCreateTurboModule", | ||
19 | + MainApplicationTurboModuleManagerDelegate::canCreateTurboModule), | ||
20 | + }); | ||
21 | +} | ||
22 | + | ||
23 | +std::shared_ptr<TurboModule> | ||
24 | +MainApplicationTurboModuleManagerDelegate::getTurboModule( | ||
25 | + const std::string name, | ||
26 | + const std::shared_ptr<CallInvoker> jsInvoker) { | ||
27 | + // Not implemented yet: provide pure-C++ NativeModules here. | ||
28 | + return nullptr; | ||
29 | +} | ||
30 | + | ||
31 | +std::shared_ptr<TurboModule> | ||
32 | +MainApplicationTurboModuleManagerDelegate::getTurboModule( | ||
33 | + const std::string name, | ||
34 | + const JavaTurboModule::InitParams ¶ms) { | ||
35 | + return MainApplicationModuleProvider(name, params); | ||
36 | +} | ||
37 | + | ||
38 | +bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule( | ||
39 | + std::string name) { | ||
40 | + return getTurboModule(name, nullptr) != nullptr || | ||
41 | + getTurboModule(name, {.moduleName = name}) != nullptr; | ||
42 | +} | ||
43 | + | ||
44 | +} // namespace react | ||
45 | +} // namespace facebook |
1 | +#include <memory> | ||
2 | +#include <string> | ||
3 | + | ||
4 | +#include <ReactCommon/TurboModuleManagerDelegate.h> | ||
5 | +#include <fbjni/fbjni.h> | ||
6 | + | ||
7 | +namespace facebook { | ||
8 | +namespace react { | ||
9 | + | ||
10 | +class MainApplicationTurboModuleManagerDelegate | ||
11 | + : public jni::HybridClass< | ||
12 | + MainApplicationTurboModuleManagerDelegate, | ||
13 | + TurboModuleManagerDelegate> { | ||
14 | + public: | ||
15 | + // Adapt it to the package you used for your Java class. | ||
16 | + static constexpr auto kJavaDescriptor = | ||
17 | + "Lcom/detectapp/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;"; | ||
18 | + | ||
19 | + static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject>); | ||
20 | + | ||
21 | + static void registerNatives(); | ||
22 | + | ||
23 | + std::shared_ptr<TurboModule> getTurboModule( | ||
24 | + const std::string name, | ||
25 | + const std::shared_ptr<CallInvoker> jsInvoker) override; | ||
26 | + std::shared_ptr<TurboModule> getTurboModule( | ||
27 | + const std::string name, | ||
28 | + const JavaTurboModule::InitParams ¶ms) override; | ||
29 | + | ||
30 | + /** | ||
31 | + * Test-only method. Allows user to verify whether a TurboModule can be | ||
32 | + * created by instances of this class. | ||
33 | + */ | ||
34 | + bool canCreateTurboModule(std::string name); | ||
35 | +}; | ||
36 | + | ||
37 | +} // namespace react | ||
38 | +} // namespace facebook |
1 | +#include "MainComponentsRegistry.h" | ||
2 | + | ||
3 | +#include <CoreComponentsRegistry.h> | ||
4 | +#include <fbjni/fbjni.h> | ||
5 | +#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h> | ||
6 | +#include <react/renderer/components/rncore/ComponentDescriptors.h> | ||
7 | + | ||
8 | +namespace facebook { | ||
9 | +namespace react { | ||
10 | + | ||
11 | +MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {} | ||
12 | + | ||
13 | +std::shared_ptr<ComponentDescriptorProviderRegistry const> | ||
14 | +MainComponentsRegistry::sharedProviderRegistry() { | ||
15 | + auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry(); | ||
16 | + | ||
17 | + // Custom Fabric Components go here. You can register custom | ||
18 | + // components coming from your App or from 3rd party libraries here. | ||
19 | + // | ||
20 | + // providerRegistry->add(concreteComponentDescriptorProvider< | ||
21 | + // AocViewerComponentDescriptor>()); | ||
22 | + return providerRegistry; | ||
23 | +} | ||
24 | + | ||
25 | +jni::local_ref<MainComponentsRegistry::jhybriddata> | ||
26 | +MainComponentsRegistry::initHybrid( | ||
27 | + jni::alias_ref<jclass>, | ||
28 | + ComponentFactory *delegate) { | ||
29 | + auto instance = makeCxxInstance(delegate); | ||
30 | + | ||
31 | + auto buildRegistryFunction = | ||
32 | + [](EventDispatcher::Weak const &eventDispatcher, | ||
33 | + ContextContainer::Shared const &contextContainer) | ||
34 | + -> ComponentDescriptorRegistry::Shared { | ||
35 | + auto registry = MainComponentsRegistry::sharedProviderRegistry() | ||
36 | + ->createComponentDescriptorRegistry( | ||
37 | + {eventDispatcher, contextContainer}); | ||
38 | + | ||
39 | + auto mutableRegistry = | ||
40 | + std::const_pointer_cast<ComponentDescriptorRegistry>(registry); | ||
41 | + | ||
42 | + mutableRegistry->setFallbackComponentDescriptor( | ||
43 | + std::make_shared<UnimplementedNativeViewComponentDescriptor>( | ||
44 | + ComponentDescriptorParameters{ | ||
45 | + eventDispatcher, contextContainer, nullptr})); | ||
46 | + | ||
47 | + return registry; | ||
48 | + }; | ||
49 | + | ||
50 | + delegate->buildRegistryFunction = buildRegistryFunction; | ||
51 | + return instance; | ||
52 | +} | ||
53 | + | ||
54 | +void MainComponentsRegistry::registerNatives() { | ||
55 | + registerHybrid({ | ||
56 | + makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid), | ||
57 | + }); | ||
58 | +} | ||
59 | + | ||
60 | +} // namespace react | ||
61 | +} // namespace facebook |
1 | +#pragma once | ||
2 | + | ||
3 | +#include <ComponentFactory.h> | ||
4 | +#include <fbjni/fbjni.h> | ||
5 | +#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h> | ||
6 | +#include <react/renderer/componentregistry/ComponentDescriptorRegistry.h> | ||
7 | + | ||
8 | +namespace facebook { | ||
9 | +namespace react { | ||
10 | + | ||
11 | +class MainComponentsRegistry | ||
12 | + : public facebook::jni::HybridClass<MainComponentsRegistry> { | ||
13 | + public: | ||
14 | + // Adapt it to the package you used for your Java class. | ||
15 | + constexpr static auto kJavaDescriptor = | ||
16 | + "Lcom/detectapp/newarchitecture/components/MainComponentsRegistry;"; | ||
17 | + | ||
18 | + static void registerNatives(); | ||
19 | + | ||
20 | + MainComponentsRegistry(ComponentFactory *delegate); | ||
21 | + | ||
22 | + private: | ||
23 | + static std::shared_ptr<ComponentDescriptorProviderRegistry const> | ||
24 | + sharedProviderRegistry(); | ||
25 | + | ||
26 | + static jni::local_ref<jhybriddata> initHybrid( | ||
27 | + jni::alias_ref<jclass>, | ||
28 | + ComponentFactory *delegate); | ||
29 | +}; | ||
30 | + | ||
31 | +} // namespace react | ||
32 | +} // namespace facebook |
1 | +#include <fbjni/fbjni.h> | ||
2 | +#include "MainApplicationTurboModuleManagerDelegate.h" | ||
3 | +#include "MainComponentsRegistry.h" | ||
4 | + | ||
5 | +JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) { | ||
6 | + return facebook::jni::initialize(vm, [] { | ||
7 | + facebook::react::MainApplicationTurboModuleManagerDelegate:: | ||
8 | + registerNatives(); | ||
9 | + facebook::react::MainComponentsRegistry::registerNatives(); | ||
10 | + }); | ||
11 | +} |
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> |
2.98 KB
4.91 KB
2.05 KB
2.79 KB
4.46 KB
6.93 KB
6.31 KB
10.4 KB
9.03 KB
15.2 KB
DetectApp/android/build.gradle
0 → 100644
1 | +import org.apache.tools.ant.taskdefs.condition.Os | ||
2 | + | ||
3 | +// Top-level build file where you can add configuration options common to all sub-projects/modules. | ||
4 | + | ||
5 | +buildscript { | ||
6 | + ext { | ||
7 | + buildToolsVersion = "31.0.0" | ||
8 | + minSdkVersion = 21 | ||
9 | + compileSdkVersion = 31 | ||
10 | + targetSdkVersion = 31 | ||
11 | + | ||
12 | + if (System.properties['os.arch'] == "aarch64") { | ||
13 | + // For M1 Users we need to use the NDK 24 which added support for aarch64 | ||
14 | + ndkVersion = "24.0.8215888" | ||
15 | + } else if (Os.isFamily(Os.FAMILY_WINDOWS)) { | ||
16 | + // For Android Users, we need to use NDK 23, otherwise the build will | ||
17 | + // fail due to paths longer than the OS limit | ||
18 | + ndkVersion = "23.1.7779620" | ||
19 | + } else { | ||
20 | + // Otherwise we default to the side-by-side NDK version from AGP. | ||
21 | + ndkVersion = "21.4.7075529" | ||
22 | + } | ||
23 | + } | ||
24 | + repositories { | ||
25 | + google() | ||
26 | + mavenCentral() | ||
27 | + } | ||
28 | + dependencies { | ||
29 | + classpath("com.android.tools.build:gradle:7.0.4") | ||
30 | + classpath("com.facebook.react:react-native-gradle-plugin") | ||
31 | + classpath("de.undercouch:gradle-download-task:4.1.2") | ||
32 | + // NOTE: Do not place your application dependencies here; they belong | ||
33 | + // in the individual module build.gradle files | ||
34 | + } | ||
35 | +} | ||
36 | + | ||
37 | +allprojects { | ||
38 | + repositories { | ||
39 | + maven { | ||
40 | + // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm | ||
41 | + url("$rootDir/../node_modules/react-native/android") | ||
42 | + } | ||
43 | + maven { | ||
44 | + // Android JSC is installed from npm | ||
45 | + url("$rootDir/../node_modules/jsc-android/dist") | ||
46 | + } | ||
47 | + mavenCentral { | ||
48 | + // We don't want to fetch react-native from Maven Central as there are | ||
49 | + // older versions over there. | ||
50 | + content { | ||
51 | + excludeGroup "com.facebook.react" | ||
52 | + } | ||
53 | + } | ||
54 | + google() | ||
55 | + maven { url 'https://www.jitpack.io' } | ||
56 | + } | ||
57 | +} |
DetectApp/android/gradle.properties
0 → 100644
1 | +# Project-wide Gradle settings. | ||
2 | + | ||
3 | +# IDE (e.g. Android Studio) users: | ||
4 | +# Gradle settings configured through the IDE *will override* | ||
5 | +# any settings specified in this file. | ||
6 | + | ||
7 | +# For more details on how to configure your build environment visit | ||
8 | +# http://www.gradle.org/docs/current/userguide/build_environment.html | ||
9 | + | ||
10 | +# Specifies the JVM arguments used for the daemon process. | ||
11 | +# The setting is particularly useful for tweaking memory settings. | ||
12 | +# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m | ||
13 | +org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m | ||
14 | + | ||
15 | +# When configured, Gradle will run in incubating parallel mode. | ||
16 | +# This option should only be used with decoupled projects. More details, visit | ||
17 | +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects | ||
18 | +# org.gradle.parallel=true | ||
19 | + | ||
20 | +# AndroidX package structure to make it clearer which packages are bundled with the | ||
21 | +# Android operating system, and which are packaged with your app's APK | ||
22 | +# https://developer.android.com/topic/libraries/support-library/androidx-rn | ||
23 | +android.useAndroidX=true | ||
24 | +# Automatically convert third-party libraries to use AndroidX | ||
25 | +android.enableJetifier=true | ||
26 | + | ||
27 | +# Version of flipper SDK to use with React Native | ||
28 | +FLIPPER_VERSION=0.125.0 | ||
29 | + | ||
30 | +# Use this property to specify which architecture you want to build. | ||
31 | +# You can also override it from the CLI using | ||
32 | +# ./gradlew <task> -PreactNativeArchitectures=x86_64 | ||
33 | +reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 | ||
34 | + | ||
35 | +# Use this property to enable support to the new architecture. | ||
36 | +# This will allow you to use TurboModules and the Fabric render in | ||
37 | +# your application. You should enable this flag either if you want | ||
38 | +# to write custom TurboModules/Fabric components OR use libraries that | ||
39 | +# are providing them. | ||
40 | +newArchEnabled=false |
No preview for this file type
DetectApp/android/gradlew
0 → 100755
1 | +#!/bin/sh | ||
2 | + | ||
3 | +# | ||
4 | +# Copyright © 2015-2021 the original authors. | ||
5 | +# | ||
6 | +# Licensed under the Apache License, Version 2.0 (the "License"); | ||
7 | +# you may not use this file except in compliance with the License. | ||
8 | +# You may obtain a copy of the License at | ||
9 | +# | ||
10 | +# https://www.apache.org/licenses/LICENSE-2.0 | ||
11 | +# | ||
12 | +# Unless required by applicable law or agreed to in writing, software | ||
13 | +# distributed under the License is distributed on an "AS IS" BASIS, | ||
14 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
15 | +# See the License for the specific language governing permissions and | ||
16 | +# limitations under the License. | ||
17 | +# | ||
18 | + | ||
19 | +############################################################################## | ||
20 | +# | ||
21 | +# Gradle start up script for POSIX generated by Gradle. | ||
22 | +# | ||
23 | +# Important for running: | ||
24 | +# | ||
25 | +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is | ||
26 | +# noncompliant, but you have some other compliant shell such as ksh or | ||
27 | +# bash, then to run this script, type that shell name before the whole | ||
28 | +# command line, like: | ||
29 | +# | ||
30 | +# ksh Gradle | ||
31 | +# | ||
32 | +# Busybox and similar reduced shells will NOT work, because this script | ||
33 | +# requires all of these POSIX shell features: | ||
34 | +# * functions; | ||
35 | +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», | ||
36 | +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; | ||
37 | +# * compound commands having a testable exit status, especially «case»; | ||
38 | +# * various built-in commands including «command», «set», and «ulimit». | ||
39 | +# | ||
40 | +# Important for patching: | ||
41 | +# | ||
42 | +# (2) This script targets any POSIX shell, so it avoids extensions provided | ||
43 | +# by Bash, Ksh, etc; in particular arrays are avoided. | ||
44 | +# | ||
45 | +# The "traditional" practice of packing multiple parameters into a | ||
46 | +# space-separated string is a well documented source of bugs and security | ||
47 | +# problems, so this is (mostly) avoided, by progressively accumulating | ||
48 | +# options in "$@", and eventually passing that to Java. | ||
49 | +# | ||
50 | +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, | ||
51 | +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; | ||
52 | +# see the in-line comments for details. | ||
53 | +# | ||
54 | +# There are tweaks for specific operating systems such as AIX, CygWin, | ||
55 | +# Darwin, MinGW, and NonStop. | ||
56 | +# | ||
57 | +# (3) This script is generated from the Groovy template | ||
58 | +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt | ||
59 | +# within the Gradle project. | ||
60 | +# | ||
61 | +# You can find Gradle at https://github.com/gradle/gradle/. | ||
62 | +# | ||
63 | +############################################################################## | ||
64 | + | ||
65 | +# Attempt to set APP_HOME | ||
66 | + | ||
67 | +# Resolve links: $0 may be a link | ||
68 | +app_path=$0 | ||
69 | + | ||
70 | +# Need this for daisy-chained symlinks. | ||
71 | +while | ||
72 | + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path | ||
73 | + [ -h "$app_path" ] | ||
74 | +do | ||
75 | + ls=$( ls -ld "$app_path" ) | ||
76 | + link=${ls#*' -> '} | ||
77 | + case $link in #( | ||
78 | + /*) app_path=$link ;; #( | ||
79 | + *) app_path=$APP_HOME$link ;; | ||
80 | + esac | ||
81 | +done | ||
82 | + | ||
83 | +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit | ||
84 | + | ||
85 | +APP_NAME="Gradle" | ||
86 | +APP_BASE_NAME=${0##*/} | ||
87 | + | ||
88 | +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||
89 | +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | ||
90 | + | ||
91 | +# Use the maximum available, or set MAX_FD != -1 to use that value. | ||
92 | +MAX_FD=maximum | ||
93 | + | ||
94 | +warn () { | ||
95 | + echo "$*" | ||
96 | +} >&2 | ||
97 | + | ||
98 | +die () { | ||
99 | + echo | ||
100 | + echo "$*" | ||
101 | + echo | ||
102 | + exit 1 | ||
103 | +} >&2 | ||
104 | + | ||
105 | +# OS specific support (must be 'true' or 'false'). | ||
106 | +cygwin=false | ||
107 | +msys=false | ||
108 | +darwin=false | ||
109 | +nonstop=false | ||
110 | +case "$( uname )" in #( | ||
111 | + CYGWIN* ) cygwin=true ;; #( | ||
112 | + Darwin* ) darwin=true ;; #( | ||
113 | + MSYS* | MINGW* ) msys=true ;; #( | ||
114 | + NONSTOP* ) nonstop=true ;; | ||
115 | +esac | ||
116 | + | ||
117 | +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | ||
118 | + | ||
119 | + | ||
120 | +# Determine the Java command to use to start the JVM. | ||
121 | +if [ -n "$JAVA_HOME" ] ; then | ||
122 | + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | ||
123 | + # IBM's JDK on AIX uses strange locations for the executables | ||
124 | + JAVACMD=$JAVA_HOME/jre/sh/java | ||
125 | + else | ||
126 | + JAVACMD=$JAVA_HOME/bin/java | ||
127 | + fi | ||
128 | + if [ ! -x "$JAVACMD" ] ; then | ||
129 | + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME | ||
130 | + | ||
131 | +Please set the JAVA_HOME variable in your environment to match the | ||
132 | +location of your Java installation." | ||
133 | + fi | ||
134 | +else | ||
135 | + JAVACMD=java | ||
136 | + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||
137 | + | ||
138 | +Please set the JAVA_HOME variable in your environment to match the | ||
139 | +location of your Java installation." | ||
140 | +fi | ||
141 | + | ||
142 | +# Increase the maximum file descriptors if we can. | ||
143 | +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then | ||
144 | + case $MAX_FD in #( | ||
145 | + max*) | ||
146 | + MAX_FD=$( ulimit -H -n ) || | ||
147 | + warn "Could not query maximum file descriptor limit" | ||
148 | + esac | ||
149 | + case $MAX_FD in #( | ||
150 | + '' | soft) :;; #( | ||
151 | + *) | ||
152 | + ulimit -n "$MAX_FD" || | ||
153 | + warn "Could not set maximum file descriptor limit to $MAX_FD" | ||
154 | + esac | ||
155 | +fi | ||
156 | + | ||
157 | +# Collect all arguments for the java command, stacking in reverse order: | ||
158 | +# * args from the command line | ||
159 | +# * the main class name | ||
160 | +# * -classpath | ||
161 | +# * -D...appname settings | ||
162 | +# * --module-path (only if needed) | ||
163 | +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. | ||
164 | + | ||
165 | +# For Cygwin or MSYS, switch paths to Windows format before running java | ||
166 | +if "$cygwin" || "$msys" ; then | ||
167 | + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) | ||
168 | + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) | ||
169 | + | ||
170 | + JAVACMD=$( cygpath --unix "$JAVACMD" ) | ||
171 | + | ||
172 | + # Now convert the arguments - kludge to limit ourselves to /bin/sh | ||
173 | + for arg do | ||
174 | + if | ||
175 | + case $arg in #( | ||
176 | + -*) false ;; # don't mess with options #( | ||
177 | + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath | ||
178 | + [ -e "$t" ] ;; #( | ||
179 | + *) false ;; | ||
180 | + esac | ||
181 | + then | ||
182 | + arg=$( cygpath --path --ignore --mixed "$arg" ) | ||
183 | + fi | ||
184 | + # Roll the args list around exactly as many times as the number of | ||
185 | + # args, so each arg winds up back in the position where it started, but | ||
186 | + # possibly modified. | ||
187 | + # | ||
188 | + # NB: a `for` loop captures its iteration list before it begins, so | ||
189 | + # changing the positional parameters here affects neither the number of | ||
190 | + # iterations, nor the values presented in `arg`. | ||
191 | + shift # remove old arg | ||
192 | + set -- "$@" "$arg" # push replacement arg | ||
193 | + done | ||
194 | +fi | ||
195 | + | ||
196 | +# Collect all arguments for the java command; | ||
197 | +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of | ||
198 | +# shell script including quotes and variable substitutions, so put them in | ||
199 | +# double quotes to make sure that they get re-expanded; and | ||
200 | +# * put everything else in single quotes, so that it's not re-expanded. | ||
201 | + | ||
202 | +set -- \ | ||
203 | + "-Dorg.gradle.appname=$APP_BASE_NAME" \ | ||
204 | + -classpath "$CLASSPATH" \ | ||
205 | + org.gradle.wrapper.GradleWrapperMain \ | ||
206 | + "$@" | ||
207 | + | ||
208 | +# Use "xargs" to parse quoted args. | ||
209 | +# | ||
210 | +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. | ||
211 | +# | ||
212 | +# In Bash we could simply go: | ||
213 | +# | ||
214 | +# readarray ARGS < <( xargs -n1 <<<"$var" ) && | ||
215 | +# set -- "${ARGS[@]}" "$@" | ||
216 | +# | ||
217 | +# but POSIX shell has neither arrays nor command substitution, so instead we | ||
218 | +# post-process each arg (as a line of input to sed) to backslash-escape any | ||
219 | +# character that might be a shell metacharacter, then use eval to reverse | ||
220 | +# that process (while maintaining the separation between arguments), and wrap | ||
221 | +# the whole thing up as a single "set" statement. | ||
222 | +# | ||
223 | +# This will of course break if any of these variables contains a newline or | ||
224 | +# an unmatched quote. | ||
225 | +# | ||
226 | + | ||
227 | +eval "set -- $( | ||
228 | + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | | ||
229 | + xargs -n1 | | ||
230 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | | ||
231 | + tr '\n' ' ' | ||
232 | + )" '"$@"' | ||
233 | + | ||
234 | +exec "$JAVACMD" "$@" |
DetectApp/android/gradlew.bat
0 → 100644
1 | +@rem | ||
2 | +@rem Copyright 2015 the original author or authors. | ||
3 | +@rem | ||
4 | +@rem Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | +@rem you may not use this file except in compliance with the License. | ||
6 | +@rem You may obtain a copy of the License at | ||
7 | +@rem | ||
8 | +@rem https://www.apache.org/licenses/LICENSE-2.0 | ||
9 | +@rem | ||
10 | +@rem Unless required by applicable law or agreed to in writing, software | ||
11 | +@rem distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | +@rem See the License for the specific language governing permissions and | ||
14 | +@rem limitations under the License. | ||
15 | +@rem | ||
16 | + | ||
17 | +@if "%DEBUG%" == "" @echo off | ||
18 | +@rem ########################################################################## | ||
19 | +@rem | ||
20 | +@rem Gradle startup script for Windows | ||
21 | +@rem | ||
22 | +@rem ########################################################################## | ||
23 | + | ||
24 | +@rem Set local scope for the variables with windows NT shell | ||
25 | +if "%OS%"=="Windows_NT" setlocal | ||
26 | + | ||
27 | +set DIRNAME=%~dp0 | ||
28 | +if "%DIRNAME%" == "" set DIRNAME=. | ||
29 | +set APP_BASE_NAME=%~n0 | ||
30 | +set APP_HOME=%DIRNAME% | ||
31 | + | ||
32 | +@rem Resolve any "." and ".." in APP_HOME to make it shorter. | ||
33 | +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi | ||
34 | + | ||
35 | +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||
36 | +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" | ||
37 | + | ||
38 | +@rem Find java.exe | ||
39 | +if defined JAVA_HOME goto findJavaFromJavaHome | ||
40 | + | ||
41 | +set JAVA_EXE=java.exe | ||
42 | +%JAVA_EXE% -version >NUL 2>&1 | ||
43 | +if "%ERRORLEVEL%" == "0" goto execute | ||
44 | + | ||
45 | +echo. | ||
46 | +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||
47 | +echo. | ||
48 | +echo Please set the JAVA_HOME variable in your environment to match the | ||
49 | +echo location of your Java installation. | ||
50 | + | ||
51 | +goto fail | ||
52 | + | ||
53 | +:findJavaFromJavaHome | ||
54 | +set JAVA_HOME=%JAVA_HOME:"=% | ||
55 | +set JAVA_EXE=%JAVA_HOME%/bin/java.exe | ||
56 | + | ||
57 | +if exist "%JAVA_EXE%" goto execute | ||
58 | + | ||
59 | +echo. | ||
60 | +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | ||
61 | +echo. | ||
62 | +echo Please set the JAVA_HOME variable in your environment to match the | ||
63 | +echo location of your Java installation. | ||
64 | + | ||
65 | +goto fail | ||
66 | + | ||
67 | +:execute | ||
68 | +@rem Setup the command line | ||
69 | + | ||
70 | +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | ||
71 | + | ||
72 | + | ||
73 | +@rem Execute Gradle | ||
74 | +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* | ||
75 | + | ||
76 | +:end | ||
77 | +@rem End local scope for the variables with windows NT shell | ||
78 | +if "%ERRORLEVEL%"=="0" goto mainEnd | ||
79 | + | ||
80 | +:fail | ||
81 | +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of | ||
82 | +rem the _cmd.exe /c_ return code! | ||
83 | +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 | ||
84 | +exit /b 1 | ||
85 | + | ||
86 | +:mainEnd | ||
87 | +if "%OS%"=="Windows_NT" endlocal | ||
88 | + | ||
89 | +:omega |
DetectApp/android/settings.gradle
0 → 100644
1 | +rootProject.name = 'DetectApp' | ||
2 | +apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) | ||
3 | +include ':app' | ||
4 | +includeBuild('../node_modules/react-native-gradle-plugin') | ||
5 | + | ||
6 | +if (settings.hasProperty("newArchEnabled") && settings.newArchEnabled == "true") { | ||
7 | + include(":ReactAndroid") | ||
8 | + project(":ReactAndroid").projectDir = file('../node_modules/react-native/ReactAndroid') | ||
9 | +} |
DetectApp/app.json
0 → 100644
DetectApp/babel.config.js
0 → 100644
DetectApp/index.js
0 → 100644
1 | +// !$*UTF8*$! | ||
2 | +{ | ||
3 | + archiveVersion = 1; | ||
4 | + classes = { | ||
5 | + }; | ||
6 | + objectVersion = 54; | ||
7 | + objects = { | ||
8 | + | ||
9 | +/* Begin PBXBuildFile section */ | ||
10 | + 00E356F31AD99517003FC87E /* DetectAppTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* DetectAppTests.m */; }; | ||
11 | + 0C80B921A6F3F58F76C31292 /* libPods-DetectApp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-DetectApp.a */; }; | ||
12 | + 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; | ||
13 | + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; | ||
14 | + 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; | ||
15 | + 7699B88040F8A987B510C191 /* libPods-DetectApp-DetectAppTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-DetectApp-DetectAppTests.a */; }; | ||
16 | + 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; | ||
17 | +/* End PBXBuildFile section */ | ||
18 | + | ||
19 | +/* Begin PBXContainerItemProxy section */ | ||
20 | + 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { | ||
21 | + isa = PBXContainerItemProxy; | ||
22 | + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; | ||
23 | + proxyType = 1; | ||
24 | + remoteGlobalIDString = 13B07F861A680F5B00A75B9A; | ||
25 | + remoteInfo = DetectApp; | ||
26 | + }; | ||
27 | +/* End PBXContainerItemProxy section */ | ||
28 | + | ||
29 | +/* Begin PBXFileReference section */ | ||
30 | + 00E356EE1AD99517003FC87E /* DetectAppTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DetectAppTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
31 | + 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; | ||
32 | + 00E356F21AD99517003FC87E /* DetectAppTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DetectAppTests.m; sourceTree = "<group>"; }; | ||
33 | + 13B07F961A680F5B00A75B9A /* DetectApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DetectApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
34 | + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = DetectApp/AppDelegate.h; sourceTree = "<group>"; }; | ||
35 | + 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = DetectApp/AppDelegate.mm; sourceTree = "<group>"; }; | ||
36 | + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = DetectApp/Images.xcassets; sourceTree = "<group>"; }; | ||
37 | + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = DetectApp/Info.plist; sourceTree = "<group>"; }; | ||
38 | + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = DetectApp/main.m; sourceTree = "<group>"; }; | ||
39 | + 19F6CBCC0A4E27FBF8BF4A61 /* libPods-DetectApp-DetectAppTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-DetectApp-DetectAppTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
40 | + 3B4392A12AC88292D35C810B /* Pods-DetectApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DetectApp.debug.xcconfig"; path = "Target Support Files/Pods-DetectApp/Pods-DetectApp.debug.xcconfig"; sourceTree = "<group>"; }; | ||
41 | + 5709B34CF0A7D63546082F79 /* Pods-DetectApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DetectApp.release.xcconfig"; path = "Target Support Files/Pods-DetectApp/Pods-DetectApp.release.xcconfig"; sourceTree = "<group>"; }; | ||
42 | + 5B7EB9410499542E8C5724F5 /* Pods-DetectApp-DetectAppTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DetectApp-DetectAppTests.debug.xcconfig"; path = "Target Support Files/Pods-DetectApp-DetectAppTests/Pods-DetectApp-DetectAppTests.debug.xcconfig"; sourceTree = "<group>"; }; | ||
43 | + 5DCACB8F33CDC322A6C60F78 /* libPods-DetectApp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-DetectApp.a"; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
44 | + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = DetectApp/LaunchScreen.storyboard; sourceTree = "<group>"; }; | ||
45 | + 89C6BE57DB24E9ADA2F236DE /* Pods-DetectApp-DetectAppTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DetectApp-DetectAppTests.release.xcconfig"; path = "Target Support Files/Pods-DetectApp-DetectAppTests/Pods-DetectApp-DetectAppTests.release.xcconfig"; sourceTree = "<group>"; }; | ||
46 | + ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; | ||
47 | +/* End PBXFileReference section */ | ||
48 | + | ||
49 | +/* Begin PBXFrameworksBuildPhase section */ | ||
50 | + 00E356EB1AD99517003FC87E /* Frameworks */ = { | ||
51 | + isa = PBXFrameworksBuildPhase; | ||
52 | + buildActionMask = 2147483647; | ||
53 | + files = ( | ||
54 | + 7699B88040F8A987B510C191 /* libPods-DetectApp-DetectAppTests.a in Frameworks */, | ||
55 | + ); | ||
56 | + runOnlyForDeploymentPostprocessing = 0; | ||
57 | + }; | ||
58 | + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { | ||
59 | + isa = PBXFrameworksBuildPhase; | ||
60 | + buildActionMask = 2147483647; | ||
61 | + files = ( | ||
62 | + 0C80B921A6F3F58F76C31292 /* libPods-DetectApp.a in Frameworks */, | ||
63 | + ); | ||
64 | + runOnlyForDeploymentPostprocessing = 0; | ||
65 | + }; | ||
66 | +/* End PBXFrameworksBuildPhase section */ | ||
67 | + | ||
68 | +/* Begin PBXGroup section */ | ||
69 | + 00E356EF1AD99517003FC87E /* DetectAppTests */ = { | ||
70 | + isa = PBXGroup; | ||
71 | + children = ( | ||
72 | + 00E356F21AD99517003FC87E /* DetectAppTests.m */, | ||
73 | + 00E356F01AD99517003FC87E /* Supporting Files */, | ||
74 | + ); | ||
75 | + path = DetectAppTests; | ||
76 | + sourceTree = "<group>"; | ||
77 | + }; | ||
78 | + 00E356F01AD99517003FC87E /* Supporting Files */ = { | ||
79 | + isa = PBXGroup; | ||
80 | + children = ( | ||
81 | + 00E356F11AD99517003FC87E /* Info.plist */, | ||
82 | + ); | ||
83 | + name = "Supporting Files"; | ||
84 | + sourceTree = "<group>"; | ||
85 | + }; | ||
86 | + 13B07FAE1A68108700A75B9A /* DetectApp */ = { | ||
87 | + isa = PBXGroup; | ||
88 | + children = ( | ||
89 | + 13B07FAF1A68108700A75B9A /* AppDelegate.h */, | ||
90 | + 13B07FB01A68108700A75B9A /* AppDelegate.mm */, | ||
91 | + 13B07FB51A68108700A75B9A /* Images.xcassets */, | ||
92 | + 13B07FB61A68108700A75B9A /* Info.plist */, | ||
93 | + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, | ||
94 | + 13B07FB71A68108700A75B9A /* main.m */, | ||
95 | + ); | ||
96 | + name = DetectApp; | ||
97 | + sourceTree = "<group>"; | ||
98 | + }; | ||
99 | + 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { | ||
100 | + isa = PBXGroup; | ||
101 | + children = ( | ||
102 | + ED297162215061F000B7C4FE /* JavaScriptCore.framework */, | ||
103 | + 5DCACB8F33CDC322A6C60F78 /* libPods-DetectApp.a */, | ||
104 | + 19F6CBCC0A4E27FBF8BF4A61 /* libPods-DetectApp-DetectAppTests.a */, | ||
105 | + ); | ||
106 | + name = Frameworks; | ||
107 | + sourceTree = "<group>"; | ||
108 | + }; | ||
109 | + 832341AE1AAA6A7D00B99B32 /* Libraries */ = { | ||
110 | + isa = PBXGroup; | ||
111 | + children = ( | ||
112 | + ); | ||
113 | + name = Libraries; | ||
114 | + sourceTree = "<group>"; | ||
115 | + }; | ||
116 | + 83CBB9F61A601CBA00E9B192 = { | ||
117 | + isa = PBXGroup; | ||
118 | + children = ( | ||
119 | + 13B07FAE1A68108700A75B9A /* DetectApp */, | ||
120 | + 832341AE1AAA6A7D00B99B32 /* Libraries */, | ||
121 | + 00E356EF1AD99517003FC87E /* DetectAppTests */, | ||
122 | + 83CBBA001A601CBA00E9B192 /* Products */, | ||
123 | + 2D16E6871FA4F8E400B85C8A /* Frameworks */, | ||
124 | + BBD78D7AC51CEA395F1C20DB /* Pods */, | ||
125 | + ); | ||
126 | + indentWidth = 2; | ||
127 | + sourceTree = "<group>"; | ||
128 | + tabWidth = 2; | ||
129 | + usesTabs = 0; | ||
130 | + }; | ||
131 | + 83CBBA001A601CBA00E9B192 /* Products */ = { | ||
132 | + isa = PBXGroup; | ||
133 | + children = ( | ||
134 | + 13B07F961A680F5B00A75B9A /* DetectApp.app */, | ||
135 | + 00E356EE1AD99517003FC87E /* DetectAppTests.xctest */, | ||
136 | + ); | ||
137 | + name = Products; | ||
138 | + sourceTree = "<group>"; | ||
139 | + }; | ||
140 | + BBD78D7AC51CEA395F1C20DB /* Pods */ = { | ||
141 | + isa = PBXGroup; | ||
142 | + children = ( | ||
143 | + 3B4392A12AC88292D35C810B /* Pods-DetectApp.debug.xcconfig */, | ||
144 | + 5709B34CF0A7D63546082F79 /* Pods-DetectApp.release.xcconfig */, | ||
145 | + 5B7EB9410499542E8C5724F5 /* Pods-DetectApp-DetectAppTests.debug.xcconfig */, | ||
146 | + 89C6BE57DB24E9ADA2F236DE /* Pods-DetectApp-DetectAppTests.release.xcconfig */, | ||
147 | + ); | ||
148 | + path = Pods; | ||
149 | + sourceTree = "<group>"; | ||
150 | + }; | ||
151 | +/* End PBXGroup section */ | ||
152 | + | ||
153 | +/* Begin PBXNativeTarget section */ | ||
154 | + 00E356ED1AD99517003FC87E /* DetectAppTests */ = { | ||
155 | + isa = PBXNativeTarget; | ||
156 | + buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "DetectAppTests" */; | ||
157 | + buildPhases = ( | ||
158 | + A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */, | ||
159 | + 00E356EA1AD99517003FC87E /* Sources */, | ||
160 | + 00E356EB1AD99517003FC87E /* Frameworks */, | ||
161 | + 00E356EC1AD99517003FC87E /* Resources */, | ||
162 | + C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */, | ||
163 | + F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */, | ||
164 | + ); | ||
165 | + buildRules = ( | ||
166 | + ); | ||
167 | + dependencies = ( | ||
168 | + 00E356F51AD99517003FC87E /* PBXTargetDependency */, | ||
169 | + ); | ||
170 | + name = DetectAppTests; | ||
171 | + productName = DetectAppTests; | ||
172 | + productReference = 00E356EE1AD99517003FC87E /* DetectAppTests.xctest */; | ||
173 | + productType = "com.apple.product-type.bundle.unit-test"; | ||
174 | + }; | ||
175 | + 13B07F861A680F5B00A75B9A /* DetectApp */ = { | ||
176 | + isa = PBXNativeTarget; | ||
177 | + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "DetectApp" */; | ||
178 | + buildPhases = ( | ||
179 | + C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */, | ||
180 | + FD10A7F022414F080027D42C /* Start Packager */, | ||
181 | + 13B07F871A680F5B00A75B9A /* Sources */, | ||
182 | + 13B07F8C1A680F5B00A75B9A /* Frameworks */, | ||
183 | + 13B07F8E1A680F5B00A75B9A /* Resources */, | ||
184 | + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, | ||
185 | + 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */, | ||
186 | + E235C05ADACE081382539298 /* [CP] Copy Pods Resources */, | ||
187 | + ); | ||
188 | + buildRules = ( | ||
189 | + ); | ||
190 | + dependencies = ( | ||
191 | + ); | ||
192 | + name = DetectApp; | ||
193 | + productName = DetectApp; | ||
194 | + productReference = 13B07F961A680F5B00A75B9A /* DetectApp.app */; | ||
195 | + productType = "com.apple.product-type.application"; | ||
196 | + }; | ||
197 | +/* End PBXNativeTarget section */ | ||
198 | + | ||
199 | +/* Begin PBXProject section */ | ||
200 | + 83CBB9F71A601CBA00E9B192 /* Project object */ = { | ||
201 | + isa = PBXProject; | ||
202 | + attributes = { | ||
203 | + LastUpgradeCheck = 1210; | ||
204 | + TargetAttributes = { | ||
205 | + 00E356ED1AD99517003FC87E = { | ||
206 | + CreatedOnToolsVersion = 6.2; | ||
207 | + TestTargetID = 13B07F861A680F5B00A75B9A; | ||
208 | + }; | ||
209 | + 13B07F861A680F5B00A75B9A = { | ||
210 | + LastSwiftMigration = 1120; | ||
211 | + }; | ||
212 | + }; | ||
213 | + }; | ||
214 | + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "DetectApp" */; | ||
215 | + compatibilityVersion = "Xcode 12.0"; | ||
216 | + developmentRegion = en; | ||
217 | + hasScannedForEncodings = 0; | ||
218 | + knownRegions = ( | ||
219 | + en, | ||
220 | + Base, | ||
221 | + ); | ||
222 | + mainGroup = 83CBB9F61A601CBA00E9B192; | ||
223 | + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; | ||
224 | + projectDirPath = ""; | ||
225 | + projectRoot = ""; | ||
226 | + targets = ( | ||
227 | + 13B07F861A680F5B00A75B9A /* DetectApp */, | ||
228 | + 00E356ED1AD99517003FC87E /* DetectAppTests */, | ||
229 | + ); | ||
230 | + }; | ||
231 | +/* End PBXProject section */ | ||
232 | + | ||
233 | +/* Begin PBXResourcesBuildPhase section */ | ||
234 | + 00E356EC1AD99517003FC87E /* Resources */ = { | ||
235 | + isa = PBXResourcesBuildPhase; | ||
236 | + buildActionMask = 2147483647; | ||
237 | + files = ( | ||
238 | + ); | ||
239 | + runOnlyForDeploymentPostprocessing = 0; | ||
240 | + }; | ||
241 | + 13B07F8E1A680F5B00A75B9A /* Resources */ = { | ||
242 | + isa = PBXResourcesBuildPhase; | ||
243 | + buildActionMask = 2147483647; | ||
244 | + files = ( | ||
245 | + 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, | ||
246 | + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, | ||
247 | + ); | ||
248 | + runOnlyForDeploymentPostprocessing = 0; | ||
249 | + }; | ||
250 | +/* End PBXResourcesBuildPhase section */ | ||
251 | + | ||
252 | +/* Begin PBXShellScriptBuildPhase section */ | ||
253 | + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { | ||
254 | + isa = PBXShellScriptBuildPhase; | ||
255 | + buildActionMask = 2147483647; | ||
256 | + files = ( | ||
257 | + ); | ||
258 | + inputPaths = ( | ||
259 | + ); | ||
260 | + name = "Bundle React Native code and images"; | ||
261 | + outputPaths = ( | ||
262 | + ); | ||
263 | + runOnlyForDeploymentPostprocessing = 0; | ||
264 | + shellPath = /bin/sh; | ||
265 | + shellScript = "set -e\n\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n"; | ||
266 | + }; | ||
267 | + 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = { | ||
268 | + isa = PBXShellScriptBuildPhase; | ||
269 | + buildActionMask = 2147483647; | ||
270 | + files = ( | ||
271 | + ); | ||
272 | + inputFileListPaths = ( | ||
273 | + "${PODS_ROOT}/Target Support Files/Pods-DetectApp/Pods-DetectApp-frameworks-${CONFIGURATION}-input-files.xcfilelist", | ||
274 | + ); | ||
275 | + name = "[CP] Embed Pods Frameworks"; | ||
276 | + outputFileListPaths = ( | ||
277 | + "${PODS_ROOT}/Target Support Files/Pods-DetectApp/Pods-DetectApp-frameworks-${CONFIGURATION}-output-files.xcfilelist", | ||
278 | + ); | ||
279 | + runOnlyForDeploymentPostprocessing = 0; | ||
280 | + shellPath = /bin/sh; | ||
281 | + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DetectApp/Pods-DetectApp-frameworks.sh\"\n"; | ||
282 | + showEnvVarsInLog = 0; | ||
283 | + }; | ||
284 | + A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */ = { | ||
285 | + isa = PBXShellScriptBuildPhase; | ||
286 | + buildActionMask = 2147483647; | ||
287 | + files = ( | ||
288 | + ); | ||
289 | + inputFileListPaths = ( | ||
290 | + ); | ||
291 | + inputPaths = ( | ||
292 | + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", | ||
293 | + "${PODS_ROOT}/Manifest.lock", | ||
294 | + ); | ||
295 | + name = "[CP] Check Pods Manifest.lock"; | ||
296 | + outputFileListPaths = ( | ||
297 | + ); | ||
298 | + outputPaths = ( | ||
299 | + "$(DERIVED_FILE_DIR)/Pods-DetectApp-DetectAppTests-checkManifestLockResult.txt", | ||
300 | + ); | ||
301 | + runOnlyForDeploymentPostprocessing = 0; | ||
302 | + shellPath = /bin/sh; | ||
303 | + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; | ||
304 | + showEnvVarsInLog = 0; | ||
305 | + }; | ||
306 | + C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = { | ||
307 | + isa = PBXShellScriptBuildPhase; | ||
308 | + buildActionMask = 2147483647; | ||
309 | + files = ( | ||
310 | + ); | ||
311 | + inputFileListPaths = ( | ||
312 | + ); | ||
313 | + inputPaths = ( | ||
314 | + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", | ||
315 | + "${PODS_ROOT}/Manifest.lock", | ||
316 | + ); | ||
317 | + name = "[CP] Check Pods Manifest.lock"; | ||
318 | + outputFileListPaths = ( | ||
319 | + ); | ||
320 | + outputPaths = ( | ||
321 | + "$(DERIVED_FILE_DIR)/Pods-DetectApp-checkManifestLockResult.txt", | ||
322 | + ); | ||
323 | + runOnlyForDeploymentPostprocessing = 0; | ||
324 | + shellPath = /bin/sh; | ||
325 | + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; | ||
326 | + showEnvVarsInLog = 0; | ||
327 | + }; | ||
328 | + C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */ = { | ||
329 | + isa = PBXShellScriptBuildPhase; | ||
330 | + buildActionMask = 2147483647; | ||
331 | + files = ( | ||
332 | + ); | ||
333 | + inputFileListPaths = ( | ||
334 | + "${PODS_ROOT}/Target Support Files/Pods-DetectApp-DetectAppTests/Pods-DetectApp-DetectAppTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", | ||
335 | + ); | ||
336 | + name = "[CP] Embed Pods Frameworks"; | ||
337 | + outputFileListPaths = ( | ||
338 | + "${PODS_ROOT}/Target Support Files/Pods-DetectApp-DetectAppTests/Pods-DetectApp-DetectAppTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", | ||
339 | + ); | ||
340 | + runOnlyForDeploymentPostprocessing = 0; | ||
341 | + shellPath = /bin/sh; | ||
342 | + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DetectApp-DetectAppTests/Pods-DetectApp-DetectAppTests-frameworks.sh\"\n"; | ||
343 | + showEnvVarsInLog = 0; | ||
344 | + }; | ||
345 | + E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = { | ||
346 | + isa = PBXShellScriptBuildPhase; | ||
347 | + buildActionMask = 2147483647; | ||
348 | + files = ( | ||
349 | + ); | ||
350 | + inputFileListPaths = ( | ||
351 | + "${PODS_ROOT}/Target Support Files/Pods-DetectApp/Pods-DetectApp-resources-${CONFIGURATION}-input-files.xcfilelist", | ||
352 | + ); | ||
353 | + name = "[CP] Copy Pods Resources"; | ||
354 | + outputFileListPaths = ( | ||
355 | + "${PODS_ROOT}/Target Support Files/Pods-DetectApp/Pods-DetectApp-resources-${CONFIGURATION}-output-files.xcfilelist", | ||
356 | + ); | ||
357 | + runOnlyForDeploymentPostprocessing = 0; | ||
358 | + shellPath = /bin/sh; | ||
359 | + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DetectApp/Pods-DetectApp-resources.sh\"\n"; | ||
360 | + showEnvVarsInLog = 0; | ||
361 | + }; | ||
362 | + F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = { | ||
363 | + isa = PBXShellScriptBuildPhase; | ||
364 | + buildActionMask = 2147483647; | ||
365 | + files = ( | ||
366 | + ); | ||
367 | + inputFileListPaths = ( | ||
368 | + "${PODS_ROOT}/Target Support Files/Pods-DetectApp-DetectAppTests/Pods-DetectApp-DetectAppTests-resources-${CONFIGURATION}-input-files.xcfilelist", | ||
369 | + ); | ||
370 | + name = "[CP] Copy Pods Resources"; | ||
371 | + outputFileListPaths = ( | ||
372 | + "${PODS_ROOT}/Target Support Files/Pods-DetectApp-DetectAppTests/Pods-DetectApp-DetectAppTests-resources-${CONFIGURATION}-output-files.xcfilelist", | ||
373 | + ); | ||
374 | + runOnlyForDeploymentPostprocessing = 0; | ||
375 | + shellPath = /bin/sh; | ||
376 | + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DetectApp-DetectAppTests/Pods-DetectApp-DetectAppTests-resources.sh\"\n"; | ||
377 | + showEnvVarsInLog = 0; | ||
378 | + }; | ||
379 | + FD10A7F022414F080027D42C /* Start Packager */ = { | ||
380 | + isa = PBXShellScriptBuildPhase; | ||
381 | + buildActionMask = 2147483647; | ||
382 | + files = ( | ||
383 | + ); | ||
384 | + inputFileListPaths = ( | ||
385 | + ); | ||
386 | + inputPaths = ( | ||
387 | + ); | ||
388 | + name = "Start Packager"; | ||
389 | + outputFileListPaths = ( | ||
390 | + ); | ||
391 | + outputPaths = ( | ||
392 | + ); | ||
393 | + runOnlyForDeploymentPostprocessing = 0; | ||
394 | + shellPath = /bin/sh; | ||
395 | + shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; | ||
396 | + showEnvVarsInLog = 0; | ||
397 | + }; | ||
398 | +/* End PBXShellScriptBuildPhase section */ | ||
399 | + | ||
400 | +/* Begin PBXSourcesBuildPhase section */ | ||
401 | + 00E356EA1AD99517003FC87E /* Sources */ = { | ||
402 | + isa = PBXSourcesBuildPhase; | ||
403 | + buildActionMask = 2147483647; | ||
404 | + files = ( | ||
405 | + 00E356F31AD99517003FC87E /* DetectAppTests.m in Sources */, | ||
406 | + ); | ||
407 | + runOnlyForDeploymentPostprocessing = 0; | ||
408 | + }; | ||
409 | + 13B07F871A680F5B00A75B9A /* Sources */ = { | ||
410 | + isa = PBXSourcesBuildPhase; | ||
411 | + buildActionMask = 2147483647; | ||
412 | + files = ( | ||
413 | + 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, | ||
414 | + 13B07FC11A68108700A75B9A /* main.m in Sources */, | ||
415 | + ); | ||
416 | + runOnlyForDeploymentPostprocessing = 0; | ||
417 | + }; | ||
418 | +/* End PBXSourcesBuildPhase section */ | ||
419 | + | ||
420 | +/* Begin PBXTargetDependency section */ | ||
421 | + 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { | ||
422 | + isa = PBXTargetDependency; | ||
423 | + target = 13B07F861A680F5B00A75B9A /* DetectApp */; | ||
424 | + targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; | ||
425 | + }; | ||
426 | +/* End PBXTargetDependency section */ | ||
427 | + | ||
428 | +/* Begin XCBuildConfiguration section */ | ||
429 | + 00E356F61AD99517003FC87E /* Debug */ = { | ||
430 | + isa = XCBuildConfiguration; | ||
431 | + baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-DetectApp-DetectAppTests.debug.xcconfig */; | ||
432 | + buildSettings = { | ||
433 | + BUNDLE_LOADER = "$(TEST_HOST)"; | ||
434 | + GCC_PREPROCESSOR_DEFINITIONS = ( | ||
435 | + "DEBUG=1", | ||
436 | + "$(inherited)", | ||
437 | + ); | ||
438 | + INFOPLIST_FILE = DetectAppTests/Info.plist; | ||
439 | + IPHONEOS_DEPLOYMENT_TARGET = 11.0; | ||
440 | + LD_RUNPATH_SEARCH_PATHS = ( | ||
441 | + "$(inherited)", | ||
442 | + "@executable_path/Frameworks", | ||
443 | + "@loader_path/Frameworks", | ||
444 | + ); | ||
445 | + OTHER_LDFLAGS = ( | ||
446 | + "-ObjC", | ||
447 | + "-lc++", | ||
448 | + "$(inherited)", | ||
449 | + ); | ||
450 | + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; | ||
451 | + PRODUCT_NAME = "$(TARGET_NAME)"; | ||
452 | + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/DetectApp.app/DetectApp"; | ||
453 | + }; | ||
454 | + name = Debug; | ||
455 | + }; | ||
456 | + 00E356F71AD99517003FC87E /* Release */ = { | ||
457 | + isa = XCBuildConfiguration; | ||
458 | + baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-DetectApp-DetectAppTests.release.xcconfig */; | ||
459 | + buildSettings = { | ||
460 | + BUNDLE_LOADER = "$(TEST_HOST)"; | ||
461 | + COPY_PHASE_STRIP = NO; | ||
462 | + INFOPLIST_FILE = DetectAppTests/Info.plist; | ||
463 | + IPHONEOS_DEPLOYMENT_TARGET = 11.0; | ||
464 | + LD_RUNPATH_SEARCH_PATHS = ( | ||
465 | + "$(inherited)", | ||
466 | + "@executable_path/Frameworks", | ||
467 | + "@loader_path/Frameworks", | ||
468 | + ); | ||
469 | + OTHER_LDFLAGS = ( | ||
470 | + "-ObjC", | ||
471 | + "-lc++", | ||
472 | + "$(inherited)", | ||
473 | + ); | ||
474 | + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; | ||
475 | + PRODUCT_NAME = "$(TARGET_NAME)"; | ||
476 | + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/DetectApp.app/DetectApp"; | ||
477 | + }; | ||
478 | + name = Release; | ||
479 | + }; | ||
480 | + 13B07F941A680F5B00A75B9A /* Debug */ = { | ||
481 | + isa = XCBuildConfiguration; | ||
482 | + baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-DetectApp.debug.xcconfig */; | ||
483 | + buildSettings = { | ||
484 | + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||
485 | + CLANG_ENABLE_MODULES = YES; | ||
486 | + CURRENT_PROJECT_VERSION = 1; | ||
487 | + ENABLE_BITCODE = NO; | ||
488 | + INFOPLIST_FILE = DetectApp/Info.plist; | ||
489 | + LD_RUNPATH_SEARCH_PATHS = ( | ||
490 | + "$(inherited)", | ||
491 | + "@executable_path/Frameworks", | ||
492 | + ); | ||
493 | + OTHER_LDFLAGS = ( | ||
494 | + "$(inherited)", | ||
495 | + "-ObjC", | ||
496 | + "-lc++", | ||
497 | + ); | ||
498 | + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; | ||
499 | + PRODUCT_NAME = DetectApp; | ||
500 | + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; | ||
501 | + SWIFT_VERSION = 5.0; | ||
502 | + VERSIONING_SYSTEM = "apple-generic"; | ||
503 | + }; | ||
504 | + name = Debug; | ||
505 | + }; | ||
506 | + 13B07F951A680F5B00A75B9A /* Release */ = { | ||
507 | + isa = XCBuildConfiguration; | ||
508 | + baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-DetectApp.release.xcconfig */; | ||
509 | + buildSettings = { | ||
510 | + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||
511 | + CLANG_ENABLE_MODULES = YES; | ||
512 | + CURRENT_PROJECT_VERSION = 1; | ||
513 | + INFOPLIST_FILE = DetectApp/Info.plist; | ||
514 | + LD_RUNPATH_SEARCH_PATHS = ( | ||
515 | + "$(inherited)", | ||
516 | + "@executable_path/Frameworks", | ||
517 | + ); | ||
518 | + OTHER_LDFLAGS = ( | ||
519 | + "$(inherited)", | ||
520 | + "-ObjC", | ||
521 | + "-lc++", | ||
522 | + ); | ||
523 | + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; | ||
524 | + PRODUCT_NAME = DetectApp; | ||
525 | + SWIFT_VERSION = 5.0; | ||
526 | + VERSIONING_SYSTEM = "apple-generic"; | ||
527 | + }; | ||
528 | + name = Release; | ||
529 | + }; | ||
530 | + 83CBBA201A601CBA00E9B192 /* Debug */ = { | ||
531 | + isa = XCBuildConfiguration; | ||
532 | + buildSettings = { | ||
533 | + ALWAYS_SEARCH_USER_PATHS = NO; | ||
534 | + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; | ||
535 | + CLANG_CXX_LANGUAGE_STANDARD = "c++17"; | ||
536 | + CLANG_CXX_LIBRARY = "libc++"; | ||
537 | + CLANG_ENABLE_MODULES = YES; | ||
538 | + CLANG_ENABLE_OBJC_ARC = YES; | ||
539 | + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | ||
540 | + CLANG_WARN_BOOL_CONVERSION = YES; | ||
541 | + CLANG_WARN_COMMA = YES; | ||
542 | + CLANG_WARN_CONSTANT_CONVERSION = YES; | ||
543 | + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; | ||
544 | + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | ||
545 | + CLANG_WARN_EMPTY_BODY = YES; | ||
546 | + CLANG_WARN_ENUM_CONVERSION = YES; | ||
547 | + CLANG_WARN_INFINITE_RECURSION = YES; | ||
548 | + CLANG_WARN_INT_CONVERSION = YES; | ||
549 | + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | ||
550 | + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||
551 | + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||
552 | + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||
553 | + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; | ||
554 | + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||
555 | + CLANG_WARN_STRICT_PROTOTYPES = YES; | ||
556 | + CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||
557 | + CLANG_WARN_UNREACHABLE_CODE = YES; | ||
558 | + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | ||
559 | + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; | ||
560 | + COPY_PHASE_STRIP = NO; | ||
561 | + ENABLE_STRICT_OBJC_MSGSEND = YES; | ||
562 | + ENABLE_TESTABILITY = YES; | ||
563 | + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; | ||
564 | + GCC_C_LANGUAGE_STANDARD = gnu99; | ||
565 | + GCC_DYNAMIC_NO_PIC = NO; | ||
566 | + GCC_NO_COMMON_BLOCKS = YES; | ||
567 | + GCC_OPTIMIZATION_LEVEL = 0; | ||
568 | + GCC_PREPROCESSOR_DEFINITIONS = ( | ||
569 | + "DEBUG=1", | ||
570 | + "$(inherited)", | ||
571 | + ); | ||
572 | + GCC_SYMBOLS_PRIVATE_EXTERN = NO; | ||
573 | + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||
574 | + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | ||
575 | + GCC_WARN_UNDECLARED_SELECTOR = YES; | ||
576 | + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||
577 | + GCC_WARN_UNUSED_FUNCTION = YES; | ||
578 | + GCC_WARN_UNUSED_VARIABLE = YES; | ||
579 | + IPHONEOS_DEPLOYMENT_TARGET = 11.0; | ||
580 | + LD_RUNPATH_SEARCH_PATHS = ( | ||
581 | + /usr/lib/swift, | ||
582 | + "$(inherited)", | ||
583 | + ); | ||
584 | + LIBRARY_SEARCH_PATHS = ( | ||
585 | + "\"$(SDKROOT)/usr/lib/swift\"", | ||
586 | + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", | ||
587 | + "\"$(inherited)\"", | ||
588 | + ); | ||
589 | + MTL_ENABLE_DEBUG_INFO = YES; | ||
590 | + ONLY_ACTIVE_ARCH = YES; | ||
591 | + OTHER_CPLUSPLUSFLAGS = ( | ||
592 | + "$(OTHER_CFLAGS)", | ||
593 | + "-DFOLLY_NO_CONFIG", | ||
594 | + "-DFOLLY_MOBILE=1", | ||
595 | + "-DFOLLY_USE_LIBCPP=1", | ||
596 | + ); | ||
597 | + SDKROOT = iphoneos; | ||
598 | + }; | ||
599 | + name = Debug; | ||
600 | + }; | ||
601 | + 83CBBA211A601CBA00E9B192 /* Release */ = { | ||
602 | + isa = XCBuildConfiguration; | ||
603 | + buildSettings = { | ||
604 | + ALWAYS_SEARCH_USER_PATHS = NO; | ||
605 | + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; | ||
606 | + CLANG_CXX_LANGUAGE_STANDARD = "c++17"; | ||
607 | + CLANG_CXX_LIBRARY = "libc++"; | ||
608 | + CLANG_ENABLE_MODULES = YES; | ||
609 | + CLANG_ENABLE_OBJC_ARC = YES; | ||
610 | + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | ||
611 | + CLANG_WARN_BOOL_CONVERSION = YES; | ||
612 | + CLANG_WARN_COMMA = YES; | ||
613 | + CLANG_WARN_CONSTANT_CONVERSION = YES; | ||
614 | + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; | ||
615 | + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | ||
616 | + CLANG_WARN_EMPTY_BODY = YES; | ||
617 | + CLANG_WARN_ENUM_CONVERSION = YES; | ||
618 | + CLANG_WARN_INFINITE_RECURSION = YES; | ||
619 | + CLANG_WARN_INT_CONVERSION = YES; | ||
620 | + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | ||
621 | + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||
622 | + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||
623 | + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||
624 | + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; | ||
625 | + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||
626 | + CLANG_WARN_STRICT_PROTOTYPES = YES; | ||
627 | + CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||
628 | + CLANG_WARN_UNREACHABLE_CODE = YES; | ||
629 | + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | ||
630 | + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; | ||
631 | + COPY_PHASE_STRIP = YES; | ||
632 | + ENABLE_NS_ASSERTIONS = NO; | ||
633 | + ENABLE_STRICT_OBJC_MSGSEND = YES; | ||
634 | + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; | ||
635 | + GCC_C_LANGUAGE_STANDARD = gnu99; | ||
636 | + GCC_NO_COMMON_BLOCKS = YES; | ||
637 | + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||
638 | + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | ||
639 | + GCC_WARN_UNDECLARED_SELECTOR = YES; | ||
640 | + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||
641 | + GCC_WARN_UNUSED_FUNCTION = YES; | ||
642 | + GCC_WARN_UNUSED_VARIABLE = YES; | ||
643 | + IPHONEOS_DEPLOYMENT_TARGET = 11.0; | ||
644 | + LD_RUNPATH_SEARCH_PATHS = ( | ||
645 | + /usr/lib/swift, | ||
646 | + "$(inherited)", | ||
647 | + ); | ||
648 | + LIBRARY_SEARCH_PATHS = ( | ||
649 | + "\"$(SDKROOT)/usr/lib/swift\"", | ||
650 | + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", | ||
651 | + "\"$(inherited)\"", | ||
652 | + ); | ||
653 | + MTL_ENABLE_DEBUG_INFO = NO; | ||
654 | + OTHER_CPLUSPLUSFLAGS = ( | ||
655 | + "$(OTHER_CFLAGS)", | ||
656 | + "-DFOLLY_NO_CONFIG", | ||
657 | + "-DFOLLY_MOBILE=1", | ||
658 | + "-DFOLLY_USE_LIBCPP=1", | ||
659 | + ); | ||
660 | + SDKROOT = iphoneos; | ||
661 | + VALIDATE_PRODUCT = YES; | ||
662 | + }; | ||
663 | + name = Release; | ||
664 | + }; | ||
665 | +/* End XCBuildConfiguration section */ | ||
666 | + | ||
667 | +/* Begin XCConfigurationList section */ | ||
668 | + 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "DetectAppTests" */ = { | ||
669 | + isa = XCConfigurationList; | ||
670 | + buildConfigurations = ( | ||
671 | + 00E356F61AD99517003FC87E /* Debug */, | ||
672 | + 00E356F71AD99517003FC87E /* Release */, | ||
673 | + ); | ||
674 | + defaultConfigurationIsVisible = 0; | ||
675 | + defaultConfigurationName = Release; | ||
676 | + }; | ||
677 | + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "DetectApp" */ = { | ||
678 | + isa = XCConfigurationList; | ||
679 | + buildConfigurations = ( | ||
680 | + 13B07F941A680F5B00A75B9A /* Debug */, | ||
681 | + 13B07F951A680F5B00A75B9A /* Release */, | ||
682 | + ); | ||
683 | + defaultConfigurationIsVisible = 0; | ||
684 | + defaultConfigurationName = Release; | ||
685 | + }; | ||
686 | + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "DetectApp" */ = { | ||
687 | + isa = XCConfigurationList; | ||
688 | + buildConfigurations = ( | ||
689 | + 83CBBA201A601CBA00E9B192 /* Debug */, | ||
690 | + 83CBBA211A601CBA00E9B192 /* Release */, | ||
691 | + ); | ||
692 | + defaultConfigurationIsVisible = 0; | ||
693 | + defaultConfigurationName = Release; | ||
694 | + }; | ||
695 | +/* End XCConfigurationList section */ | ||
696 | + }; | ||
697 | + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; | ||
698 | +} |
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<Scheme | ||
3 | + LastUpgradeVersion = "1210" | ||
4 | + version = "1.3"> | ||
5 | + <BuildAction | ||
6 | + parallelizeBuildables = "YES" | ||
7 | + buildImplicitDependencies = "YES"> | ||
8 | + <BuildActionEntries> | ||
9 | + <BuildActionEntry | ||
10 | + buildForTesting = "YES" | ||
11 | + buildForRunning = "YES" | ||
12 | + buildForProfiling = "YES" | ||
13 | + buildForArchiving = "YES" | ||
14 | + buildForAnalyzing = "YES"> | ||
15 | + <BuildableReference | ||
16 | + BuildableIdentifier = "primary" | ||
17 | + BlueprintIdentifier = "13B07F861A680F5B00A75B9A" | ||
18 | + BuildableName = "DetectApp.app" | ||
19 | + BlueprintName = "DetectApp" | ||
20 | + ReferencedContainer = "container:DetectApp.xcodeproj"> | ||
21 | + </BuildableReference> | ||
22 | + </BuildActionEntry> | ||
23 | + </BuildActionEntries> | ||
24 | + </BuildAction> | ||
25 | + <TestAction | ||
26 | + buildConfiguration = "Debug" | ||
27 | + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | ||
28 | + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||
29 | + shouldUseLaunchSchemeArgsEnv = "YES"> | ||
30 | + <Testables> | ||
31 | + <TestableReference | ||
32 | + skipped = "NO"> | ||
33 | + <BuildableReference | ||
34 | + BuildableIdentifier = "primary" | ||
35 | + BlueprintIdentifier = "00E356ED1AD99517003FC87E" | ||
36 | + BuildableName = "DetectAppTests.xctest" | ||
37 | + BlueprintName = "DetectAppTests" | ||
38 | + ReferencedContainer = "container:DetectApp.xcodeproj"> | ||
39 | + </BuildableReference> | ||
40 | + </TestableReference> | ||
41 | + </Testables> | ||
42 | + </TestAction> | ||
43 | + <LaunchAction | ||
44 | + buildConfiguration = "Debug" | ||
45 | + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | ||
46 | + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||
47 | + launchStyle = "0" | ||
48 | + useCustomWorkingDirectory = "NO" | ||
49 | + ignoresPersistentStateOnLaunch = "NO" | ||
50 | + debugDocumentVersioning = "YES" | ||
51 | + debugServiceExtension = "internal" | ||
52 | + allowLocationSimulation = "YES"> | ||
53 | + <BuildableProductRunnable | ||
54 | + runnableDebuggingMode = "0"> | ||
55 | + <BuildableReference | ||
56 | + BuildableIdentifier = "primary" | ||
57 | + BlueprintIdentifier = "13B07F861A680F5B00A75B9A" | ||
58 | + BuildableName = "DetectApp.app" | ||
59 | + BlueprintName = "DetectApp" | ||
60 | + ReferencedContainer = "container:DetectApp.xcodeproj"> | ||
61 | + </BuildableReference> | ||
62 | + </BuildableProductRunnable> | ||
63 | + </LaunchAction> | ||
64 | + <ProfileAction | ||
65 | + buildConfiguration = "Release" | ||
66 | + shouldUseLaunchSchemeArgsEnv = "YES" | ||
67 | + savedToolIdentifier = "" | ||
68 | + useCustomWorkingDirectory = "NO" | ||
69 | + debugDocumentVersioning = "YES"> | ||
70 | + <BuildableProductRunnable | ||
71 | + runnableDebuggingMode = "0"> | ||
72 | + <BuildableReference | ||
73 | + BuildableIdentifier = "primary" | ||
74 | + BlueprintIdentifier = "13B07F861A680F5B00A75B9A" | ||
75 | + BuildableName = "DetectApp.app" | ||
76 | + BlueprintName = "DetectApp" | ||
77 | + ReferencedContainer = "container:DetectApp.xcodeproj"> | ||
78 | + </BuildableReference> | ||
79 | + </BuildableProductRunnable> | ||
80 | + </ProfileAction> | ||
81 | + <AnalyzeAction | ||
82 | + buildConfiguration = "Debug"> | ||
83 | + </AnalyzeAction> | ||
84 | + <ArchiveAction | ||
85 | + buildConfiguration = "Release" | ||
86 | + revealArchiveInOrganizer = "YES"> | ||
87 | + </ArchiveAction> | ||
88 | +</Scheme> |
DetectApp/ios/DetectApp/AppDelegate.h
0 → 100644
DetectApp/ios/DetectApp/AppDelegate.mm
0 → 100644
1 | +#import "AppDelegate.h" | ||
2 | + | ||
3 | +#import <React/RCTBridge.h> | ||
4 | +#import <React/RCTBundleURLProvider.h> | ||
5 | +#import <React/RCTRootView.h> | ||
6 | + | ||
7 | +#import <React/RCTAppSetupUtils.h> | ||
8 | + | ||
9 | +#if RCT_NEW_ARCH_ENABLED | ||
10 | +#import <React/CoreModulesPlugins.h> | ||
11 | +#import <React/RCTCxxBridgeDelegate.h> | ||
12 | +#import <React/RCTFabricSurfaceHostingProxyRootView.h> | ||
13 | +#import <React/RCTSurfacePresenter.h> | ||
14 | +#import <React/RCTSurfacePresenterBridgeAdapter.h> | ||
15 | +#import <ReactCommon/RCTTurboModuleManager.h> | ||
16 | + | ||
17 | +#import <react/config/ReactNativeConfig.h> | ||
18 | + | ||
19 | +@interface AppDelegate () <RCTCxxBridgeDelegate, RCTTurboModuleManagerDelegate> { | ||
20 | + RCTTurboModuleManager *_turboModuleManager; | ||
21 | + RCTSurfacePresenterBridgeAdapter *_bridgeAdapter; | ||
22 | + std::shared_ptr<const facebook::react::ReactNativeConfig> _reactNativeConfig; | ||
23 | + facebook::react::ContextContainer::Shared _contextContainer; | ||
24 | +} | ||
25 | +@end | ||
26 | +#endif | ||
27 | + | ||
28 | +@implementation AppDelegate | ||
29 | + | ||
30 | +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions | ||
31 | +{ | ||
32 | + RCTAppSetupPrepareApp(application); | ||
33 | + | ||
34 | + RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; | ||
35 | + | ||
36 | +#if RCT_NEW_ARCH_ENABLED | ||
37 | + _contextContainer = std::make_shared<facebook::react::ContextContainer const>(); | ||
38 | + _reactNativeConfig = std::make_shared<facebook::react::EmptyReactNativeConfig const>(); | ||
39 | + _contextContainer->insert("ReactNativeConfig", _reactNativeConfig); | ||
40 | + _bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer]; | ||
41 | + bridge.surfacePresenter = _bridgeAdapter.surfacePresenter; | ||
42 | +#endif | ||
43 | + | ||
44 | + UIView *rootView = RCTAppSetupDefaultRootView(bridge, @"DetectApp", nil); | ||
45 | + | ||
46 | + if (@available(iOS 13.0, *)) { | ||
47 | + rootView.backgroundColor = [UIColor systemBackgroundColor]; | ||
48 | + } else { | ||
49 | + rootView.backgroundColor = [UIColor whiteColor]; | ||
50 | + } | ||
51 | + | ||
52 | + self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; | ||
53 | + UIViewController *rootViewController = [UIViewController new]; | ||
54 | + rootViewController.view = rootView; | ||
55 | + self.window.rootViewController = rootViewController; | ||
56 | + [self.window makeKeyAndVisible]; | ||
57 | + return YES; | ||
58 | +} | ||
59 | + | ||
60 | +- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge | ||
61 | +{ | ||
62 | +#if DEBUG | ||
63 | + return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; | ||
64 | +#else | ||
65 | + return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; | ||
66 | +#endif | ||
67 | +} | ||
68 | + | ||
69 | +#if RCT_NEW_ARCH_ENABLED | ||
70 | + | ||
71 | +#pragma mark - RCTCxxBridgeDelegate | ||
72 | + | ||
73 | +- (std::unique_ptr<facebook::react::JSExecutorFactory>)jsExecutorFactoryForBridge:(RCTBridge *)bridge | ||
74 | +{ | ||
75 | + _turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge | ||
76 | + delegate:self | ||
77 | + jsInvoker:bridge.jsCallInvoker]; | ||
78 | + return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager); | ||
79 | +} | ||
80 | + | ||
81 | +#pragma mark RCTTurboModuleManagerDelegate | ||
82 | + | ||
83 | +- (Class)getModuleClassFromName:(const char *)name | ||
84 | +{ | ||
85 | + return RCTCoreModulesClassProvider(name); | ||
86 | +} | ||
87 | + | ||
88 | +- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const std::string &)name | ||
89 | + jsInvoker:(std::shared_ptr<facebook::react::CallInvoker>)jsInvoker | ||
90 | +{ | ||
91 | + return nullptr; | ||
92 | +} | ||
93 | + | ||
94 | +- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const std::string &)name | ||
95 | + initParams: | ||
96 | + (const facebook::react::ObjCTurboModule::InitParams &)params | ||
97 | +{ | ||
98 | + return nullptr; | ||
99 | +} | ||
100 | + | ||
101 | +- (id<RCTTurboModule>)getModuleInstanceFromClass:(Class)moduleClass | ||
102 | +{ | ||
103 | + return RCTAppSetupDefaultModuleFromClass(moduleClass); | ||
104 | +} | ||
105 | + | ||
106 | +#endif | ||
107 | + | ||
108 | +@end |
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "idiom" : "iphone", | ||
5 | + "scale" : "2x", | ||
6 | + "size" : "20x20" | ||
7 | + }, | ||
8 | + { | ||
9 | + "idiom" : "iphone", | ||
10 | + "scale" : "3x", | ||
11 | + "size" : "20x20" | ||
12 | + }, | ||
13 | + { | ||
14 | + "idiom" : "iphone", | ||
15 | + "scale" : "2x", | ||
16 | + "size" : "29x29" | ||
17 | + }, | ||
18 | + { | ||
19 | + "idiom" : "iphone", | ||
20 | + "scale" : "3x", | ||
21 | + "size" : "29x29" | ||
22 | + }, | ||
23 | + { | ||
24 | + "idiom" : "iphone", | ||
25 | + "scale" : "2x", | ||
26 | + "size" : "40x40" | ||
27 | + }, | ||
28 | + { | ||
29 | + "idiom" : "iphone", | ||
30 | + "scale" : "3x", | ||
31 | + "size" : "40x40" | ||
32 | + }, | ||
33 | + { | ||
34 | + "idiom" : "iphone", | ||
35 | + "scale" : "2x", | ||
36 | + "size" : "60x60" | ||
37 | + }, | ||
38 | + { | ||
39 | + "idiom" : "iphone", | ||
40 | + "scale" : "3x", | ||
41 | + "size" : "60x60" | ||
42 | + }, | ||
43 | + { | ||
44 | + "idiom" : "ios-marketing", | ||
45 | + "scale" : "1x", | ||
46 | + "size" : "1024x1024" | ||
47 | + } | ||
48 | + ], | ||
49 | + "info" : { | ||
50 | + "author" : "xcode", | ||
51 | + "version" : 1 | ||
52 | + } | ||
53 | +} |
DetectApp/ios/DetectApp/Info.plist
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
3 | +<plist version="1.0"> | ||
4 | +<dict> | ||
5 | + <key>CFBundleDevelopmentRegion</key> | ||
6 | + <string>en</string> | ||
7 | + <key>CFBundleDisplayName</key> | ||
8 | + <string>DetectApp</string> | ||
9 | + <key>CFBundleExecutable</key> | ||
10 | + <string>$(EXECUTABLE_NAME)</string> | ||
11 | + <key>CFBundleIdentifier</key> | ||
12 | + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> | ||
13 | + <key>CFBundleInfoDictionaryVersion</key> | ||
14 | + <string>6.0</string> | ||
15 | + <key>CFBundleName</key> | ||
16 | + <string>$(PRODUCT_NAME)</string> | ||
17 | + <key>CFBundlePackageType</key> | ||
18 | + <string>APPL</string> | ||
19 | + <key>CFBundleShortVersionString</key> | ||
20 | + <string>1.0</string> | ||
21 | + <key>CFBundleSignature</key> | ||
22 | + <string>????</string> | ||
23 | + <key>CFBundleVersion</key> | ||
24 | + <string>1</string> | ||
25 | + <key>LSRequiresIPhoneOS</key> | ||
26 | + <true/> | ||
27 | + <key>NSAppTransportSecurity</key> | ||
28 | + <dict> | ||
29 | + <key>NSExceptionDomains</key> | ||
30 | + <dict> | ||
31 | + <key>localhost</key> | ||
32 | + <dict> | ||
33 | + <key>NSExceptionAllowsInsecureHTTPLoads</key> | ||
34 | + <true/> | ||
35 | + </dict> | ||
36 | + </dict> | ||
37 | + </dict> | ||
38 | + <key>NSLocationWhenInUseUsageDescription</key> | ||
39 | + <string></string> | ||
40 | + <key>UILaunchStoryboardName</key> | ||
41 | + <string>LaunchScreen</string> | ||
42 | + <key>UIRequiredDeviceCapabilities</key> | ||
43 | + <array> | ||
44 | + <string>armv7</string> | ||
45 | + </array> | ||
46 | + <key>UISupportedInterfaceOrientations</key> | ||
47 | + <array> | ||
48 | + <string>UIInterfaceOrientationPortrait</string> | ||
49 | + <string>UIInterfaceOrientationLandscapeLeft</string> | ||
50 | + <string>UIInterfaceOrientationLandscapeRight</string> | ||
51 | + </array> | ||
52 | + <key>UIViewControllerBasedStatusBarAppearance</key> | ||
53 | + <false/> | ||
54 | +</dict> | ||
55 | +</plist> |
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM"> | ||
3 | + <device id="retina4_7" orientation="portrait" appearance="light"/> | ||
4 | + <dependencies> | ||
5 | + <deployment identifier="iOS"/> | ||
6 | + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/> | ||
7 | + <capability name="Safe area layout guides" minToolsVersion="9.0"/> | ||
8 | + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> | ||
9 | + </dependencies> | ||
10 | + <scenes> | ||
11 | + <!--View Controller--> | ||
12 | + <scene sceneID="EHf-IW-A2E"> | ||
13 | + <objects> | ||
14 | + <viewController id="01J-lp-oVM" sceneMemberID="viewController"> | ||
15 | + <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3"> | ||
16 | + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> | ||
17 | + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
18 | + <subviews> | ||
19 | + <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="DetectApp" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="GJd-Yh-RWb"> | ||
20 | + <rect key="frame" x="0.0" y="202" width="375" height="43"/> | ||
21 | + <fontDescription key="fontDescription" type="boldSystem" pointSize="36"/> | ||
22 | + <nil key="highlightedColor"/> | ||
23 | + </label> | ||
24 | + <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Powered by React Native" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="MN2-I3-ftu"> | ||
25 | + <rect key="frame" x="0.0" y="626" width="375" height="21"/> | ||
26 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
27 | + <nil key="highlightedColor"/> | ||
28 | + </label> | ||
29 | + </subviews> | ||
30 | + <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> | ||
31 | + <constraints> | ||
32 | + <constraint firstItem="Bcu-3y-fUS" firstAttribute="bottom" secondItem="MN2-I3-ftu" secondAttribute="bottom" constant="20" id="OZV-Vh-mqD"/> | ||
33 | + <constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="GJd-Yh-RWb" secondAttribute="centerX" id="Q3B-4B-g5h"/> | ||
34 | + <constraint firstItem="MN2-I3-ftu" firstAttribute="centerX" secondItem="Bcu-3y-fUS" secondAttribute="centerX" id="akx-eg-2ui"/> | ||
35 | + <constraint firstItem="MN2-I3-ftu" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" id="i1E-0Y-4RG"/> | ||
36 | + <constraint firstItem="GJd-Yh-RWb" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="bottom" multiplier="1/3" constant="1" id="moa-c2-u7t"/> | ||
37 | + <constraint firstItem="GJd-Yh-RWb" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="x7j-FC-K8j"/> | ||
38 | + </constraints> | ||
39 | + <viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/> | ||
40 | + </view> | ||
41 | + </viewController> | ||
42 | + <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/> | ||
43 | + </objects> | ||
44 | + <point key="canvasLocation" x="52.173913043478265" y="375"/> | ||
45 | + </scene> | ||
46 | + </scenes> | ||
47 | +</document> |
DetectApp/ios/DetectApp/main.m
0 → 100644
1 | +#import <UIKit/UIKit.h> | ||
2 | +#import <XCTest/XCTest.h> | ||
3 | + | ||
4 | +#import <React/RCTLog.h> | ||
5 | +#import <React/RCTRootView.h> | ||
6 | + | ||
7 | +#define TIMEOUT_SECONDS 600 | ||
8 | +#define TEXT_TO_LOOK_FOR @"Welcome to React" | ||
9 | + | ||
10 | +@interface DetectAppTests : XCTestCase | ||
11 | + | ||
12 | +@end | ||
13 | + | ||
14 | +@implementation DetectAppTests | ||
15 | + | ||
16 | +- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL (^)(UIView *view))test | ||
17 | +{ | ||
18 | + if (test(view)) { | ||
19 | + return YES; | ||
20 | + } | ||
21 | + for (UIView *subview in [view subviews]) { | ||
22 | + if ([self findSubviewInView:subview matching:test]) { | ||
23 | + return YES; | ||
24 | + } | ||
25 | + } | ||
26 | + return NO; | ||
27 | +} | ||
28 | + | ||
29 | +- (void)testRendersWelcomeScreen | ||
30 | +{ | ||
31 | + UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; | ||
32 | + NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; | ||
33 | + BOOL foundElement = NO; | ||
34 | + | ||
35 | + __block NSString *redboxError = nil; | ||
36 | +#ifdef DEBUG | ||
37 | + RCTSetLogFunction( | ||
38 | + ^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { | ||
39 | + if (level >= RCTLogLevelError) { | ||
40 | + redboxError = message; | ||
41 | + } | ||
42 | + }); | ||
43 | +#endif | ||
44 | + | ||
45 | + while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { | ||
46 | + [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; | ||
47 | + [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; | ||
48 | + | ||
49 | + foundElement = [self findSubviewInView:vc.view | ||
50 | + matching:^BOOL(UIView *view) { | ||
51 | + if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { | ||
52 | + return YES; | ||
53 | + } | ||
54 | + return NO; | ||
55 | + }]; | ||
56 | + } | ||
57 | + | ||
58 | +#ifdef DEBUG | ||
59 | + RCTSetLogFunction(RCTDefaultLogFunction); | ||
60 | +#endif | ||
61 | + | ||
62 | + XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); | ||
63 | + XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); | ||
64 | +} | ||
65 | + | ||
66 | +@end |
DetectApp/ios/DetectAppTests/Info.plist
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
3 | +<plist version="1.0"> | ||
4 | +<dict> | ||
5 | + <key>CFBundleDevelopmentRegion</key> | ||
6 | + <string>en</string> | ||
7 | + <key>CFBundleExecutable</key> | ||
8 | + <string>$(EXECUTABLE_NAME)</string> | ||
9 | + <key>CFBundleIdentifier</key> | ||
10 | + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> | ||
11 | + <key>CFBundleInfoDictionaryVersion</key> | ||
12 | + <string>6.0</string> | ||
13 | + <key>CFBundleName</key> | ||
14 | + <string>$(PRODUCT_NAME)</string> | ||
15 | + <key>CFBundlePackageType</key> | ||
16 | + <string>BNDL</string> | ||
17 | + <key>CFBundleShortVersionString</key> | ||
18 | + <string>1.0</string> | ||
19 | + <key>CFBundleSignature</key> | ||
20 | + <string>????</string> | ||
21 | + <key>CFBundleVersion</key> | ||
22 | + <string>1</string> | ||
23 | +</dict> | ||
24 | +</plist> |
DetectApp/ios/Podfile
0 → 100644
1 | +require_relative '../node_modules/react-native/scripts/react_native_pods' | ||
2 | +require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' | ||
3 | + | ||
4 | +platform :ios, '11.0' | ||
5 | +install! 'cocoapods', :deterministic_uuids => false | ||
6 | + | ||
7 | +target 'DetectApp' do | ||
8 | + config = use_native_modules! | ||
9 | + | ||
10 | + # Flags change depending on the env values. | ||
11 | + flags = get_default_flags() | ||
12 | + | ||
13 | + use_react_native!( | ||
14 | + :path => config[:reactNativePath], | ||
15 | + # to enable hermes on iOS, change `false` to `true` and then install pods | ||
16 | + :hermes_enabled => flags[:hermes_enabled], | ||
17 | + :fabric_enabled => flags[:fabric_enabled], | ||
18 | + # An absolute path to your application root. | ||
19 | + :app_path => "#{Pod::Config.instance.installation_root}/.." | ||
20 | + ) | ||
21 | + | ||
22 | + target 'DetectAppTests' do | ||
23 | + inherit! :complete | ||
24 | + # Pods for testing | ||
25 | + end | ||
26 | + | ||
27 | + # Enables Flipper. | ||
28 | + # | ||
29 | + # Note that if you have use_frameworks! enabled, Flipper will not work and | ||
30 | + # you should disable the next line. | ||
31 | + use_flipper!() | ||
32 | + | ||
33 | + post_install do |installer| | ||
34 | + react_native_post_install(installer) | ||
35 | + __apply_Xcode_12_5_M1_post_install_workaround(installer) | ||
36 | + end | ||
37 | +end |
DetectApp/ios/Podfile.lock
0 → 100644
1 | +PODS: | ||
2 | + - boost (1.76.0) | ||
3 | + - CocoaAsyncSocket (7.6.5) | ||
4 | + - DoubleConversion (1.1.6) | ||
5 | + - FBLazyVector (0.68.1) | ||
6 | + - FBReactNativeSpec (0.68.1): | ||
7 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
8 | + - RCTRequired (= 0.68.1) | ||
9 | + - RCTTypeSafety (= 0.68.1) | ||
10 | + - React-Core (= 0.68.1) | ||
11 | + - React-jsi (= 0.68.1) | ||
12 | + - ReactCommon/turbomodule/core (= 0.68.1) | ||
13 | + - Flipper (0.125.0): | ||
14 | + - Flipper-Folly (~> 2.6) | ||
15 | + - Flipper-RSocket (~> 1.4) | ||
16 | + - Flipper-Boost-iOSX (1.76.0.1.11) | ||
17 | + - Flipper-DoubleConversion (3.2.0) | ||
18 | + - Flipper-Fmt (7.1.7) | ||
19 | + - Flipper-Folly (2.6.10): | ||
20 | + - Flipper-Boost-iOSX | ||
21 | + - Flipper-DoubleConversion | ||
22 | + - Flipper-Fmt (= 7.1.7) | ||
23 | + - Flipper-Glog | ||
24 | + - libevent (~> 2.1.12) | ||
25 | + - OpenSSL-Universal (= 1.1.1100) | ||
26 | + - Flipper-Glog (0.5.0.4) | ||
27 | + - Flipper-PeerTalk (0.0.4) | ||
28 | + - Flipper-RSocket (1.4.3): | ||
29 | + - Flipper-Folly (~> 2.6) | ||
30 | + - FlipperKit (0.125.0): | ||
31 | + - FlipperKit/Core (= 0.125.0) | ||
32 | + - FlipperKit/Core (0.125.0): | ||
33 | + - Flipper (~> 0.125.0) | ||
34 | + - FlipperKit/CppBridge | ||
35 | + - FlipperKit/FBCxxFollyDynamicConvert | ||
36 | + - FlipperKit/FBDefines | ||
37 | + - FlipperKit/FKPortForwarding | ||
38 | + - SocketRocket (~> 0.6.0) | ||
39 | + - FlipperKit/CppBridge (0.125.0): | ||
40 | + - Flipper (~> 0.125.0) | ||
41 | + - FlipperKit/FBCxxFollyDynamicConvert (0.125.0): | ||
42 | + - Flipper-Folly (~> 2.6) | ||
43 | + - FlipperKit/FBDefines (0.125.0) | ||
44 | + - FlipperKit/FKPortForwarding (0.125.0): | ||
45 | + - CocoaAsyncSocket (~> 7.6) | ||
46 | + - Flipper-PeerTalk (~> 0.0.4) | ||
47 | + - FlipperKit/FlipperKitHighlightOverlay (0.125.0) | ||
48 | + - FlipperKit/FlipperKitLayoutHelpers (0.125.0): | ||
49 | + - FlipperKit/Core | ||
50 | + - FlipperKit/FlipperKitHighlightOverlay | ||
51 | + - FlipperKit/FlipperKitLayoutTextSearchable | ||
52 | + - FlipperKit/FlipperKitLayoutIOSDescriptors (0.125.0): | ||
53 | + - FlipperKit/Core | ||
54 | + - FlipperKit/FlipperKitHighlightOverlay | ||
55 | + - FlipperKit/FlipperKitLayoutHelpers | ||
56 | + - YogaKit (~> 1.18) | ||
57 | + - FlipperKit/FlipperKitLayoutPlugin (0.125.0): | ||
58 | + - FlipperKit/Core | ||
59 | + - FlipperKit/FlipperKitHighlightOverlay | ||
60 | + - FlipperKit/FlipperKitLayoutHelpers | ||
61 | + - FlipperKit/FlipperKitLayoutIOSDescriptors | ||
62 | + - FlipperKit/FlipperKitLayoutTextSearchable | ||
63 | + - YogaKit (~> 1.18) | ||
64 | + - FlipperKit/FlipperKitLayoutTextSearchable (0.125.0) | ||
65 | + - FlipperKit/FlipperKitNetworkPlugin (0.125.0): | ||
66 | + - FlipperKit/Core | ||
67 | + - FlipperKit/FlipperKitReactPlugin (0.125.0): | ||
68 | + - FlipperKit/Core | ||
69 | + - FlipperKit/FlipperKitUserDefaultsPlugin (0.125.0): | ||
70 | + - FlipperKit/Core | ||
71 | + - FlipperKit/SKIOSNetworkPlugin (0.125.0): | ||
72 | + - FlipperKit/Core | ||
73 | + - FlipperKit/FlipperKitNetworkPlugin | ||
74 | + - fmt (6.2.1) | ||
75 | + - glog (0.3.5) | ||
76 | + - libevent (2.1.12) | ||
77 | + - OpenSSL-Universal (1.1.1100) | ||
78 | + - RCT-Folly (2021.06.28.00-v2): | ||
79 | + - boost | ||
80 | + - DoubleConversion | ||
81 | + - fmt (~> 6.2.1) | ||
82 | + - glog | ||
83 | + - RCT-Folly/Default (= 2021.06.28.00-v2) | ||
84 | + - RCT-Folly/Default (2021.06.28.00-v2): | ||
85 | + - boost | ||
86 | + - DoubleConversion | ||
87 | + - fmt (~> 6.2.1) | ||
88 | + - glog | ||
89 | + - RCTRequired (0.68.1) | ||
90 | + - RCTTypeSafety (0.68.1): | ||
91 | + - FBLazyVector (= 0.68.1) | ||
92 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
93 | + - RCTRequired (= 0.68.1) | ||
94 | + - React-Core (= 0.68.1) | ||
95 | + - React (0.68.1): | ||
96 | + - React-Core (= 0.68.1) | ||
97 | + - React-Core/DevSupport (= 0.68.1) | ||
98 | + - React-Core/RCTWebSocket (= 0.68.1) | ||
99 | + - React-RCTActionSheet (= 0.68.1) | ||
100 | + - React-RCTAnimation (= 0.68.1) | ||
101 | + - React-RCTBlob (= 0.68.1) | ||
102 | + - React-RCTImage (= 0.68.1) | ||
103 | + - React-RCTLinking (= 0.68.1) | ||
104 | + - React-RCTNetwork (= 0.68.1) | ||
105 | + - React-RCTSettings (= 0.68.1) | ||
106 | + - React-RCTText (= 0.68.1) | ||
107 | + - React-RCTVibration (= 0.68.1) | ||
108 | + - React-callinvoker (0.68.1) | ||
109 | + - React-Codegen (0.68.1): | ||
110 | + - FBReactNativeSpec (= 0.68.1) | ||
111 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
112 | + - RCTRequired (= 0.68.1) | ||
113 | + - RCTTypeSafety (= 0.68.1) | ||
114 | + - React-Core (= 0.68.1) | ||
115 | + - React-jsi (= 0.68.1) | ||
116 | + - React-jsiexecutor (= 0.68.1) | ||
117 | + - ReactCommon/turbomodule/core (= 0.68.1) | ||
118 | + - React-Core (0.68.1): | ||
119 | + - glog | ||
120 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
121 | + - React-Core/Default (= 0.68.1) | ||
122 | + - React-cxxreact (= 0.68.1) | ||
123 | + - React-jsi (= 0.68.1) | ||
124 | + - React-jsiexecutor (= 0.68.1) | ||
125 | + - React-perflogger (= 0.68.1) | ||
126 | + - Yoga | ||
127 | + - React-Core/CoreModulesHeaders (0.68.1): | ||
128 | + - glog | ||
129 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
130 | + - React-Core/Default | ||
131 | + - React-cxxreact (= 0.68.1) | ||
132 | + - React-jsi (= 0.68.1) | ||
133 | + - React-jsiexecutor (= 0.68.1) | ||
134 | + - React-perflogger (= 0.68.1) | ||
135 | + - Yoga | ||
136 | + - React-Core/Default (0.68.1): | ||
137 | + - glog | ||
138 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
139 | + - React-cxxreact (= 0.68.1) | ||
140 | + - React-jsi (= 0.68.1) | ||
141 | + - React-jsiexecutor (= 0.68.1) | ||
142 | + - React-perflogger (= 0.68.1) | ||
143 | + - Yoga | ||
144 | + - React-Core/DevSupport (0.68.1): | ||
145 | + - glog | ||
146 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
147 | + - React-Core/Default (= 0.68.1) | ||
148 | + - React-Core/RCTWebSocket (= 0.68.1) | ||
149 | + - React-cxxreact (= 0.68.1) | ||
150 | + - React-jsi (= 0.68.1) | ||
151 | + - React-jsiexecutor (= 0.68.1) | ||
152 | + - React-jsinspector (= 0.68.1) | ||
153 | + - React-perflogger (= 0.68.1) | ||
154 | + - Yoga | ||
155 | + - React-Core/RCTActionSheetHeaders (0.68.1): | ||
156 | + - glog | ||
157 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
158 | + - React-Core/Default | ||
159 | + - React-cxxreact (= 0.68.1) | ||
160 | + - React-jsi (= 0.68.1) | ||
161 | + - React-jsiexecutor (= 0.68.1) | ||
162 | + - React-perflogger (= 0.68.1) | ||
163 | + - Yoga | ||
164 | + - React-Core/RCTAnimationHeaders (0.68.1): | ||
165 | + - glog | ||
166 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
167 | + - React-Core/Default | ||
168 | + - React-cxxreact (= 0.68.1) | ||
169 | + - React-jsi (= 0.68.1) | ||
170 | + - React-jsiexecutor (= 0.68.1) | ||
171 | + - React-perflogger (= 0.68.1) | ||
172 | + - Yoga | ||
173 | + - React-Core/RCTBlobHeaders (0.68.1): | ||
174 | + - glog | ||
175 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
176 | + - React-Core/Default | ||
177 | + - React-cxxreact (= 0.68.1) | ||
178 | + - React-jsi (= 0.68.1) | ||
179 | + - React-jsiexecutor (= 0.68.1) | ||
180 | + - React-perflogger (= 0.68.1) | ||
181 | + - Yoga | ||
182 | + - React-Core/RCTImageHeaders (0.68.1): | ||
183 | + - glog | ||
184 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
185 | + - React-Core/Default | ||
186 | + - React-cxxreact (= 0.68.1) | ||
187 | + - React-jsi (= 0.68.1) | ||
188 | + - React-jsiexecutor (= 0.68.1) | ||
189 | + - React-perflogger (= 0.68.1) | ||
190 | + - Yoga | ||
191 | + - React-Core/RCTLinkingHeaders (0.68.1): | ||
192 | + - glog | ||
193 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
194 | + - React-Core/Default | ||
195 | + - React-cxxreact (= 0.68.1) | ||
196 | + - React-jsi (= 0.68.1) | ||
197 | + - React-jsiexecutor (= 0.68.1) | ||
198 | + - React-perflogger (= 0.68.1) | ||
199 | + - Yoga | ||
200 | + - React-Core/RCTNetworkHeaders (0.68.1): | ||
201 | + - glog | ||
202 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
203 | + - React-Core/Default | ||
204 | + - React-cxxreact (= 0.68.1) | ||
205 | + - React-jsi (= 0.68.1) | ||
206 | + - React-jsiexecutor (= 0.68.1) | ||
207 | + - React-perflogger (= 0.68.1) | ||
208 | + - Yoga | ||
209 | + - React-Core/RCTSettingsHeaders (0.68.1): | ||
210 | + - glog | ||
211 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
212 | + - React-Core/Default | ||
213 | + - React-cxxreact (= 0.68.1) | ||
214 | + - React-jsi (= 0.68.1) | ||
215 | + - React-jsiexecutor (= 0.68.1) | ||
216 | + - React-perflogger (= 0.68.1) | ||
217 | + - Yoga | ||
218 | + - React-Core/RCTTextHeaders (0.68.1): | ||
219 | + - glog | ||
220 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
221 | + - React-Core/Default | ||
222 | + - React-cxxreact (= 0.68.1) | ||
223 | + - React-jsi (= 0.68.1) | ||
224 | + - React-jsiexecutor (= 0.68.1) | ||
225 | + - React-perflogger (= 0.68.1) | ||
226 | + - Yoga | ||
227 | + - React-Core/RCTVibrationHeaders (0.68.1): | ||
228 | + - glog | ||
229 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
230 | + - React-Core/Default | ||
231 | + - React-cxxreact (= 0.68.1) | ||
232 | + - React-jsi (= 0.68.1) | ||
233 | + - React-jsiexecutor (= 0.68.1) | ||
234 | + - React-perflogger (= 0.68.1) | ||
235 | + - Yoga | ||
236 | + - React-Core/RCTWebSocket (0.68.1): | ||
237 | + - glog | ||
238 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
239 | + - React-Core/Default (= 0.68.1) | ||
240 | + - React-cxxreact (= 0.68.1) | ||
241 | + - React-jsi (= 0.68.1) | ||
242 | + - React-jsiexecutor (= 0.68.1) | ||
243 | + - React-perflogger (= 0.68.1) | ||
244 | + - Yoga | ||
245 | + - React-CoreModules (0.68.1): | ||
246 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
247 | + - RCTTypeSafety (= 0.68.1) | ||
248 | + - React-Codegen (= 0.68.1) | ||
249 | + - React-Core/CoreModulesHeaders (= 0.68.1) | ||
250 | + - React-jsi (= 0.68.1) | ||
251 | + - React-RCTImage (= 0.68.1) | ||
252 | + - ReactCommon/turbomodule/core (= 0.68.1) | ||
253 | + - React-cxxreact (0.68.1): | ||
254 | + - boost (= 1.76.0) | ||
255 | + - DoubleConversion | ||
256 | + - glog | ||
257 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
258 | + - React-callinvoker (= 0.68.1) | ||
259 | + - React-jsi (= 0.68.1) | ||
260 | + - React-jsinspector (= 0.68.1) | ||
261 | + - React-logger (= 0.68.1) | ||
262 | + - React-perflogger (= 0.68.1) | ||
263 | + - React-runtimeexecutor (= 0.68.1) | ||
264 | + - React-jsi (0.68.1): | ||
265 | + - boost (= 1.76.0) | ||
266 | + - DoubleConversion | ||
267 | + - glog | ||
268 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
269 | + - React-jsi/Default (= 0.68.1) | ||
270 | + - React-jsi/Default (0.68.1): | ||
271 | + - boost (= 1.76.0) | ||
272 | + - DoubleConversion | ||
273 | + - glog | ||
274 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
275 | + - React-jsiexecutor (0.68.1): | ||
276 | + - DoubleConversion | ||
277 | + - glog | ||
278 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
279 | + - React-cxxreact (= 0.68.1) | ||
280 | + - React-jsi (= 0.68.1) | ||
281 | + - React-perflogger (= 0.68.1) | ||
282 | + - React-jsinspector (0.68.1) | ||
283 | + - React-logger (0.68.1): | ||
284 | + - glog | ||
285 | + - React-perflogger (0.68.1) | ||
286 | + - React-RCTActionSheet (0.68.1): | ||
287 | + - React-Core/RCTActionSheetHeaders (= 0.68.1) | ||
288 | + - React-RCTAnimation (0.68.1): | ||
289 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
290 | + - RCTTypeSafety (= 0.68.1) | ||
291 | + - React-Codegen (= 0.68.1) | ||
292 | + - React-Core/RCTAnimationHeaders (= 0.68.1) | ||
293 | + - React-jsi (= 0.68.1) | ||
294 | + - ReactCommon/turbomodule/core (= 0.68.1) | ||
295 | + - React-RCTBlob (0.68.1): | ||
296 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
297 | + - React-Codegen (= 0.68.1) | ||
298 | + - React-Core/RCTBlobHeaders (= 0.68.1) | ||
299 | + - React-Core/RCTWebSocket (= 0.68.1) | ||
300 | + - React-jsi (= 0.68.1) | ||
301 | + - React-RCTNetwork (= 0.68.1) | ||
302 | + - ReactCommon/turbomodule/core (= 0.68.1) | ||
303 | + - React-RCTImage (0.68.1): | ||
304 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
305 | + - RCTTypeSafety (= 0.68.1) | ||
306 | + - React-Codegen (= 0.68.1) | ||
307 | + - React-Core/RCTImageHeaders (= 0.68.1) | ||
308 | + - React-jsi (= 0.68.1) | ||
309 | + - React-RCTNetwork (= 0.68.1) | ||
310 | + - ReactCommon/turbomodule/core (= 0.68.1) | ||
311 | + - React-RCTLinking (0.68.1): | ||
312 | + - React-Codegen (= 0.68.1) | ||
313 | + - React-Core/RCTLinkingHeaders (= 0.68.1) | ||
314 | + - React-jsi (= 0.68.1) | ||
315 | + - ReactCommon/turbomodule/core (= 0.68.1) | ||
316 | + - React-RCTNetwork (0.68.1): | ||
317 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
318 | + - RCTTypeSafety (= 0.68.1) | ||
319 | + - React-Codegen (= 0.68.1) | ||
320 | + - React-Core/RCTNetworkHeaders (= 0.68.1) | ||
321 | + - React-jsi (= 0.68.1) | ||
322 | + - ReactCommon/turbomodule/core (= 0.68.1) | ||
323 | + - React-RCTSettings (0.68.1): | ||
324 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
325 | + - RCTTypeSafety (= 0.68.1) | ||
326 | + - React-Codegen (= 0.68.1) | ||
327 | + - React-Core/RCTSettingsHeaders (= 0.68.1) | ||
328 | + - React-jsi (= 0.68.1) | ||
329 | + - ReactCommon/turbomodule/core (= 0.68.1) | ||
330 | + - React-RCTText (0.68.1): | ||
331 | + - React-Core/RCTTextHeaders (= 0.68.1) | ||
332 | + - React-RCTVibration (0.68.1): | ||
333 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
334 | + - React-Codegen (= 0.68.1) | ||
335 | + - React-Core/RCTVibrationHeaders (= 0.68.1) | ||
336 | + - React-jsi (= 0.68.1) | ||
337 | + - ReactCommon/turbomodule/core (= 0.68.1) | ||
338 | + - React-runtimeexecutor (0.68.1): | ||
339 | + - React-jsi (= 0.68.1) | ||
340 | + - ReactCommon/turbomodule/core (0.68.1): | ||
341 | + - DoubleConversion | ||
342 | + - glog | ||
343 | + - RCT-Folly (= 2021.06.28.00-v2) | ||
344 | + - React-callinvoker (= 0.68.1) | ||
345 | + - React-Core (= 0.68.1) | ||
346 | + - React-cxxreact (= 0.68.1) | ||
347 | + - React-jsi (= 0.68.1) | ||
348 | + - React-logger (= 0.68.1) | ||
349 | + - React-perflogger (= 0.68.1) | ||
350 | + - SocketRocket (0.6.0) | ||
351 | + - Yoga (1.14.0) | ||
352 | + - YogaKit (1.18.1): | ||
353 | + - Yoga (~> 1.14) | ||
354 | + | ||
355 | +DEPENDENCIES: | ||
356 | + - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) | ||
357 | + - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) | ||
358 | + - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) | ||
359 | + - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) | ||
360 | + - Flipper (= 0.125.0) | ||
361 | + - Flipper-Boost-iOSX (= 1.76.0.1.11) | ||
362 | + - Flipper-DoubleConversion (= 3.2.0) | ||
363 | + - Flipper-Fmt (= 7.1.7) | ||
364 | + - Flipper-Folly (= 2.6.10) | ||
365 | + - Flipper-Glog (= 0.5.0.4) | ||
366 | + - Flipper-PeerTalk (= 0.0.4) | ||
367 | + - Flipper-RSocket (= 1.4.3) | ||
368 | + - FlipperKit (= 0.125.0) | ||
369 | + - FlipperKit/Core (= 0.125.0) | ||
370 | + - FlipperKit/CppBridge (= 0.125.0) | ||
371 | + - FlipperKit/FBCxxFollyDynamicConvert (= 0.125.0) | ||
372 | + - FlipperKit/FBDefines (= 0.125.0) | ||
373 | + - FlipperKit/FKPortForwarding (= 0.125.0) | ||
374 | + - FlipperKit/FlipperKitHighlightOverlay (= 0.125.0) | ||
375 | + - FlipperKit/FlipperKitLayoutPlugin (= 0.125.0) | ||
376 | + - FlipperKit/FlipperKitLayoutTextSearchable (= 0.125.0) | ||
377 | + - FlipperKit/FlipperKitNetworkPlugin (= 0.125.0) | ||
378 | + - FlipperKit/FlipperKitReactPlugin (= 0.125.0) | ||
379 | + - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.125.0) | ||
380 | + - FlipperKit/SKIOSNetworkPlugin (= 0.125.0) | ||
381 | + - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) | ||
382 | + - OpenSSL-Universal (= 1.1.1100) | ||
383 | + - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) | ||
384 | + - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) | ||
385 | + - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) | ||
386 | + - React (from `../node_modules/react-native/`) | ||
387 | + - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) | ||
388 | + - React-Codegen (from `build/generated/ios`) | ||
389 | + - React-Core (from `../node_modules/react-native/`) | ||
390 | + - React-Core/DevSupport (from `../node_modules/react-native/`) | ||
391 | + - React-Core/RCTWebSocket (from `../node_modules/react-native/`) | ||
392 | + - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) | ||
393 | + - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) | ||
394 | + - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) | ||
395 | + - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) | ||
396 | + - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) | ||
397 | + - React-logger (from `../node_modules/react-native/ReactCommon/logger`) | ||
398 | + - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) | ||
399 | + - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) | ||
400 | + - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) | ||
401 | + - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) | ||
402 | + - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) | ||
403 | + - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) | ||
404 | + - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) | ||
405 | + - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) | ||
406 | + - React-RCTText (from `../node_modules/react-native/Libraries/Text`) | ||
407 | + - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) | ||
408 | + - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) | ||
409 | + - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) | ||
410 | + - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) | ||
411 | + | ||
412 | +SPEC REPOS: | ||
413 | + trunk: | ||
414 | + - CocoaAsyncSocket | ||
415 | + - Flipper | ||
416 | + - Flipper-Boost-iOSX | ||
417 | + - Flipper-DoubleConversion | ||
418 | + - Flipper-Fmt | ||
419 | + - Flipper-Folly | ||
420 | + - Flipper-Glog | ||
421 | + - Flipper-PeerTalk | ||
422 | + - Flipper-RSocket | ||
423 | + - FlipperKit | ||
424 | + - fmt | ||
425 | + - libevent | ||
426 | + - OpenSSL-Universal | ||
427 | + - SocketRocket | ||
428 | + - YogaKit | ||
429 | + | ||
430 | +EXTERNAL SOURCES: | ||
431 | + boost: | ||
432 | + :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" | ||
433 | + DoubleConversion: | ||
434 | + :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" | ||
435 | + FBLazyVector: | ||
436 | + :path: "../node_modules/react-native/Libraries/FBLazyVector" | ||
437 | + FBReactNativeSpec: | ||
438 | + :path: "../node_modules/react-native/React/FBReactNativeSpec" | ||
439 | + glog: | ||
440 | + :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" | ||
441 | + RCT-Folly: | ||
442 | + :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" | ||
443 | + RCTRequired: | ||
444 | + :path: "../node_modules/react-native/Libraries/RCTRequired" | ||
445 | + RCTTypeSafety: | ||
446 | + :path: "../node_modules/react-native/Libraries/TypeSafety" | ||
447 | + React: | ||
448 | + :path: "../node_modules/react-native/" | ||
449 | + React-callinvoker: | ||
450 | + :path: "../node_modules/react-native/ReactCommon/callinvoker" | ||
451 | + React-Codegen: | ||
452 | + :path: build/generated/ios | ||
453 | + React-Core: | ||
454 | + :path: "../node_modules/react-native/" | ||
455 | + React-CoreModules: | ||
456 | + :path: "../node_modules/react-native/React/CoreModules" | ||
457 | + React-cxxreact: | ||
458 | + :path: "../node_modules/react-native/ReactCommon/cxxreact" | ||
459 | + React-jsi: | ||
460 | + :path: "../node_modules/react-native/ReactCommon/jsi" | ||
461 | + React-jsiexecutor: | ||
462 | + :path: "../node_modules/react-native/ReactCommon/jsiexecutor" | ||
463 | + React-jsinspector: | ||
464 | + :path: "../node_modules/react-native/ReactCommon/jsinspector" | ||
465 | + React-logger: | ||
466 | + :path: "../node_modules/react-native/ReactCommon/logger" | ||
467 | + React-perflogger: | ||
468 | + :path: "../node_modules/react-native/ReactCommon/reactperflogger" | ||
469 | + React-RCTActionSheet: | ||
470 | + :path: "../node_modules/react-native/Libraries/ActionSheetIOS" | ||
471 | + React-RCTAnimation: | ||
472 | + :path: "../node_modules/react-native/Libraries/NativeAnimation" | ||
473 | + React-RCTBlob: | ||
474 | + :path: "../node_modules/react-native/Libraries/Blob" | ||
475 | + React-RCTImage: | ||
476 | + :path: "../node_modules/react-native/Libraries/Image" | ||
477 | + React-RCTLinking: | ||
478 | + :path: "../node_modules/react-native/Libraries/LinkingIOS" | ||
479 | + React-RCTNetwork: | ||
480 | + :path: "../node_modules/react-native/Libraries/Network" | ||
481 | + React-RCTSettings: | ||
482 | + :path: "../node_modules/react-native/Libraries/Settings" | ||
483 | + React-RCTText: | ||
484 | + :path: "../node_modules/react-native/Libraries/Text" | ||
485 | + React-RCTVibration: | ||
486 | + :path: "../node_modules/react-native/Libraries/Vibration" | ||
487 | + React-runtimeexecutor: | ||
488 | + :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" | ||
489 | + ReactCommon: | ||
490 | + :path: "../node_modules/react-native/ReactCommon" | ||
491 | + Yoga: | ||
492 | + :path: "../node_modules/react-native/ReactCommon/yoga" | ||
493 | + | ||
494 | +SPEC CHECKSUMS: | ||
495 | + boost: a7c83b31436843459a1961bfd74b96033dc77234 | ||
496 | + CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 | ||
497 | + DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662 | ||
498 | + FBLazyVector: 2c76493a346ef8cacf1f442926a39f805fffec1f | ||
499 | + FBReactNativeSpec: 371350f24afa87b6aba606972ec959dcd4a95c9a | ||
500 | + Flipper: 26fc4b7382499f1281eb8cb921e5c3ad6de91fe0 | ||
501 | + Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c | ||
502 | + Flipper-DoubleConversion: 3d3d04a078d4f3a1b6c6916587f159dc11f232c4 | ||
503 | + Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b | ||
504 | + Flipper-Folly: 584845625005ff068a6ebf41f857f468decd26b3 | ||
505 | + Flipper-Glog: 87bc98ff48de90cb5b0b5114ed3da79d85ee2dd4 | ||
506 | + Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 | ||
507 | + Flipper-RSocket: d9d9ade67cbecf6ac10730304bf5607266dd2541 | ||
508 | + FlipperKit: cbdee19bdd4e7f05472a66ce290f1b729ba3cb86 | ||
509 | + fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 | ||
510 | + glog: 476ee3e89abb49e07f822b48323c51c57124b572 | ||
511 | + libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 | ||
512 | + OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c | ||
513 | + RCT-Folly: 4d8508a426467c48885f1151029bc15fa5d7b3b8 | ||
514 | + RCTRequired: 00581111c53531e39e3c6346ef0d2c0cf52a5a37 | ||
515 | + RCTTypeSafety: 07e03ee7800e7dd65cba8e52ad0c2edb06c96604 | ||
516 | + React: e61f4bf3c573d0c61c56b53dc3eb1d9daf0768a0 | ||
517 | + React-callinvoker: 047d47230bb6fd66827f8cb0bea4e944ffd1309b | ||
518 | + React-Codegen: bb0403cde7374af091530e84e492589485aab480 | ||
519 | + React-Core: a4a3a8e10d004b08e013c3d0438259dd89a3894c | ||
520 | + React-CoreModules: bb9f8bc36f1ae6d780b856927fa9d4aa01ccccc0 | ||
521 | + React-cxxreact: 7dd472aefb8629d6080cbb859240bafccd902704 | ||
522 | + React-jsi: b25808afe821b607d51c779bdd1717be8393b7ec | ||
523 | + React-jsiexecutor: 4a4bae5671b064a2248a690cf75957669489d08c | ||
524 | + React-jsinspector: 218a2503198ff28a085f8e16622a8d8f507c8019 | ||
525 | + React-logger: f79dd3cc0f9b44f5611c6c7862badd891a862cf8 | ||
526 | + React-perflogger: 30ab8d6db10e175626069e742eead3ebe8f24fd5 | ||
527 | + React-RCTActionSheet: 4b45da334a175b24dabe75f856b98fed3dfd6201 | ||
528 | + React-RCTAnimation: d6237386cb04500889877845b3e9e9291146bc2e | ||
529 | + React-RCTBlob: bc9e2cd738c43bd2948e862e371402ef9584730a | ||
530 | + React-RCTImage: 9f8cac465c6e5837007f59ade2a0a741016dd6a3 | ||
531 | + React-RCTLinking: 5073abb7d30cc0824b2172bd4582fc15bfc40510 | ||
532 | + React-RCTNetwork: 28ff94aa7d8fc117fc800b87dd80869a00d2bef3 | ||
533 | + React-RCTSettings: f27aa036f7270fe6ca43f8cdd1819e821fa429a0 | ||
534 | + React-RCTText: 7cb6f86fa7bc86f22f16333ad243b158e63b2a68 | ||
535 | + React-RCTVibration: 9e344c840176b0af9c84d5019eb4fed8b3c105a1 | ||
536 | + React-runtimeexecutor: 7285b499d0339104b2813a1f58ad1ada4adbd6c0 | ||
537 | + ReactCommon: bf2888a826ceedf54b99ad1b6182d1bc4a8a3984 | ||
538 | + SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608 | ||
539 | + Yoga: 17cd9a50243093b547c1e539c749928dd68152da | ||
540 | + YogaKit: f782866e155069a2cca2517aafea43200b01fd5a | ||
541 | + | ||
542 | +PODFILE CHECKSUM: e24b4764b19176c74a151f2e26d118185b9452ac | ||
543 | + | ||
544 | +COCOAPODS: 1.11.3 |
DetectApp/metro.config.js
0 → 100644
1 | +/** | ||
2 | + * Metro configuration for React Native | ||
3 | + * https://github.com/facebook/react-native | ||
4 | + * | ||
5 | + * @format | ||
6 | + */ | ||
7 | + | ||
8 | +module.exports = { | ||
9 | + transformer: { | ||
10 | + getTransformOptions: async () => ({ | ||
11 | + transform: { | ||
12 | + experimentalImportSupport: false, | ||
13 | + inlineRequires: true, | ||
14 | + }, | ||
15 | + }), | ||
16 | + }, | ||
17 | +}; |
DetectApp/package.json
0 → 100644
1 | +{ | ||
2 | + "name": "detectapp", | ||
3 | + "version": "0.0.1", | ||
4 | + "private": true, | ||
5 | + "scripts": { | ||
6 | + "android": "react-native run-android", | ||
7 | + "ios": "react-native run-ios", | ||
8 | + "start": "react-native start", | ||
9 | + "test": "jest", | ||
10 | + "lint": "eslint . --ext .js,.jsx,.ts,.tsx" | ||
11 | + }, | ||
12 | + "dependencies": { | ||
13 | + "react": "17.0.2", | ||
14 | + "react-native": "0.68.1" | ||
15 | + }, | ||
16 | + "devDependencies": { | ||
17 | + "@babel/core": "^7.12.9", | ||
18 | + "@babel/runtime": "^7.12.5", | ||
19 | + "@react-native-community/eslint-config": "^2.0.0", | ||
20 | + "@types/jest": "^26.0.23", | ||
21 | + "@types/react-native": "^0.67.3", | ||
22 | + "@types/react-test-renderer": "^17.0.1", | ||
23 | + "@typescript-eslint/eslint-plugin": "^5.17.0", | ||
24 | + "@typescript-eslint/parser": "^5.17.0", | ||
25 | + "babel-jest": "^26.6.3", | ||
26 | + "eslint": "^7.32.0", | ||
27 | + "jest": "^26.6.3", | ||
28 | + "metro-react-native-babel-preset": "^0.67.0", | ||
29 | + "react-test-renderer": "17.0.2", | ||
30 | + "typescript": "^4.4.4" | ||
31 | + }, | ||
32 | + "resolutions": { | ||
33 | + "@types/react": "^17" | ||
34 | + }, | ||
35 | + "jest": { | ||
36 | + "preset": "react-native", | ||
37 | + "moduleFileExtensions": [ | ||
38 | + "ts", | ||
39 | + "tsx", | ||
40 | + "js", | ||
41 | + "jsx", | ||
42 | + "json", | ||
43 | + "node" | ||
44 | + ] | ||
45 | + } | ||
46 | +} |
DetectApp/tsconfig.json
0 → 100644
1 | + | ||
2 | +{ | ||
3 | + "compilerOptions": { | ||
4 | + /* Basic Options */ | ||
5 | + "target": "esnext", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */ | ||
6 | + "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ | ||
7 | + "lib": ["es2017"], /* Specify library files to be included in the compilation. */ | ||
8 | + "allowJs": true, /* Allow javascript files to be compiled. */ | ||
9 | + // "checkJs": true, /* Report errors in .js files. */ | ||
10 | + "jsx": "react-native", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ | ||
11 | + // "declaration": true, /* Generates corresponding '.d.ts' file. */ | ||
12 | + // "sourceMap": true, /* Generates corresponding '.map' file. */ | ||
13 | + // "outFile": "./", /* Concatenate and emit output to single file. */ | ||
14 | + // "outDir": "./", /* Redirect output structure to the directory. */ | ||
15 | + // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ | ||
16 | + // "removeComments": true, /* Do not emit comments to output. */ | ||
17 | + "noEmit": true, /* Do not emit outputs. */ | ||
18 | + // "incremental": true, /* Enable incremental compilation */ | ||
19 | + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ | ||
20 | + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ | ||
21 | + "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ | ||
22 | + | ||
23 | + /* Strict Type-Checking Options */ | ||
24 | + "strict": true, /* Enable all strict type-checking options. */ | ||
25 | + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ | ||
26 | + // "strictNullChecks": true, /* Enable strict null checks. */ | ||
27 | + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ | ||
28 | + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ | ||
29 | + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ | ||
30 | + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ | ||
31 | + | ||
32 | + /* Additional Checks */ | ||
33 | + // "noUnusedLocals": true, /* Report errors on unused locals. */ | ||
34 | + // "noUnusedParameters": true, /* Report errors on unused parameters. */ | ||
35 | + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ | ||
36 | + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ | ||
37 | + | ||
38 | + /* Module Resolution Options */ | ||
39 | + "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ | ||
40 | + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ | ||
41 | + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ | ||
42 | + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ | ||
43 | + // "typeRoots": [], /* List of folders to include type definitions from. */ | ||
44 | + // "types": [], /* Type declaration files to be included in compilation. */ | ||
45 | + "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ | ||
46 | + "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ | ||
47 | + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ | ||
48 | + "skipLibCheck": true, /* Skip type checking of declaration files. */ | ||
49 | + "resolveJsonModule": true /* Allows importing modules with a ‘.json’ extension, which is a common practice in node projects. */ | ||
50 | + | ||
51 | + /* Source Map Options */ | ||
52 | + // "sourceRoot": "./", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ | ||
53 | + // "mapRoot": "./", /* Specify the location where debugger should locate map files instead of generated locations. */ | ||
54 | + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ | ||
55 | + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ | ||
56 | + | ||
57 | + /* Experimental Options */ | ||
58 | + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ | ||
59 | + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ | ||
60 | + }, | ||
61 | + "exclude": [ | ||
62 | + "node_modules", "babel.config.js", "metro.config.js", "jest.config.js" | ||
63 | + ] | ||
64 | +} |
DetectApp/yarn.lock
0 → 100644
This diff could not be displayed because it is too large.
-
Please register or login to post a comment