react-native-trustdevice 1.1.5 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +58 -2
  2. package/android/build.gradle +0 -1
  3. package/android/src/main/java/com/trustdevice/TrustdeviceModule.java +44 -2
  4. package/index.d.ts +25 -2
  5. package/index.js +9 -4
  6. package/ios/TrustDevice.m +66 -2
  7. package/package.json +4 -3
  8. package/react-native-trustdevice.podspec +0 -2
  9. package/src/TrustDevice.android.js +1 -1
  10. package/src/TrustDevice.ios.js +0 -1
  11. package/android/build/.transforms/34a3c3baa7ee620e604d2c62960577c0/results.bin +0 -1
  12. package/android/build/.transforms/34a3c3baa7ee620e604d2c62960577c0/transformed/classes/classes.dex +0 -0
  13. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +0 -7
  14. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output-metadata.json +0 -18
  15. package/android/build/intermediates/aar_metadata/debug/aar-metadata.properties +0 -5
  16. package/android/build/intermediates/annotation_processor_list/debug/annotationProcessors.json +0 -1
  17. package/android/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
  18. package/android/build/intermediates/compile_r_class_jar/debug/R.jar +0 -0
  19. package/android/build/intermediates/compile_symbol_list/debug/R.txt +0 -0
  20. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +0 -1
  21. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +0 -2
  22. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +0 -2
  23. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +0 -2
  24. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +0 -2
  25. package/android/build/intermediates/javac/debug/classes/com/trustdevice/TrustdeviceModule$1.class +0 -0
  26. package/android/build/intermediates/javac/debug/classes/com/trustdevice/TrustdeviceModule.class +0 -0
  27. package/android/build/intermediates/javac/debug/classes/com/trustdevice/TrustdevicePackage.class +0 -0
  28. package/android/build/intermediates/javac/debug/classes/com/trustdevice/TrustdeviceSeModule$1.class +0 -0
  29. package/android/build/intermediates/javac/debug/classes/com/trustdevice/TrustdeviceSeModule$2.class +0 -0
  30. package/android/build/intermediates/javac/debug/classes/com/trustdevice/TrustdeviceSeModule.class +0 -0
  31. package/android/build/intermediates/javac/debug/classes/com/trustdevice/utils/TDUniRiskUtils.class +0 -0
  32. package/android/build/intermediates/local_only_symbol_list/debug/R-def.txt +0 -2
  33. package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +0 -7
  34. package/android/build/intermediates/merged_manifest/debug/AndroidManifest.xml +0 -7
  35. package/android/build/intermediates/navigation_json/debug/navigation.json +0 -1
  36. package/android/build/intermediates/runtime_library_classes_jar/debug/classes.jar +0 -0
  37. package/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt +0 -1
  38. package/android/build/outputs/logs/manifest-merger-debug-report.txt +0 -16
  39. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
package/README.md CHANGED
@@ -32,9 +32,47 @@ Please note that when integrating SDK products provided by the TrustDecision in
32
32
  Please execute in your react native project root directory
33
33
 
34
34
  ```shell
35
- npm install --save @trustdecision/react-native-trustdevice@1.1.5
35
+ npm install --save react-native-trustdevice@1.1.6
36
36
  ```
37
37
 
38
+ ### iOS behavior collection dependency (Swift Package Manager)
39
+
40
+ The React Native bridge is still auto-linked through CocoaPods, but the iOS
41
+ behavior collection SDK is distributed through Swift Package Manager. After
42
+ running `pod install`, the host app must add the following package in Xcode:
43
+
44
+ 1. Open `ios/<YourApp>.xcworkspace`.
45
+ 2. Select **File > Add Package Dependencies...**.
46
+ 3. Enter `https://github.com/trustdecision/TDBehavior_spm`.
47
+ 4. Select **Exact Version** and enter `1.5.2`.
48
+ 5. Add the `TDBehavior` product to the host application target. Do not add it
49
+ to the Pods project or a Pods target.
50
+
51
+ This app-target dependency cannot be declared by the plugin podspec. It is a
52
+ one-time host project setting and remains in the Xcode project after subsequent
53
+ `npm install` and `pod install` commands. CI can resolve it with:
54
+
55
+ ```shell
56
+ xcodebuild -resolvePackageDependencies \
57
+ -workspace ios/<YourApp>.xcworkspace \
58
+ -scheme <YourApp>
59
+ ```
60
+
61
+ ### Android behavior collection dependency
62
+
63
+ The plugin does not bundle the Android behavior collection SDK. If behavior
64
+ collection is required, add the following dependency to the host application's
65
+ `android/app/build.gradle`:
66
+
67
+ ```gradle
68
+ dependencies {
69
+ implementation 'com.trustdecision.android:behavior:1.5.1'
70
+ }
71
+ ```
72
+
73
+ Then rebuild the native application. Adding or removing this dependency cannot
74
+ be applied through Metro hot reload.
75
+
38
76
  ### AndroidManifest.xml
39
77
 
40
78
  Declare the following permissions in the AndroidManifest.xml file under the application module
@@ -99,6 +137,24 @@ Declare the following permissions in the AndroidManifest.xml file under the appl
99
137
  async function getBlackBoxAsync();
100
138
  ```
101
139
 
140
+ ## Behavior collection
141
+
142
+ Initialize the SDK before starting collection. There must be a real user
143
+ interaction such as typing, tapping, or scrolling between `start` and
144
+ `collect`; otherwise `collect` may return code `104`.
145
+
146
+ ```tsx
147
+ await TrustDevice.start();
148
+
149
+ const result = await TrustDevice.collect();
150
+ // result: {code: number, payload: string, msg: string}
151
+
152
+ await TrustDevice.stop();
153
+ ```
154
+
155
+ `collect` returns and clears the currently buffered behavior data. `stop`
156
+ stops collection and clears any uncollected data.
157
+
102
158
  ## Best Practices
103
159
 
104
160
  1. Get TrustDevice Module
@@ -176,4 +232,4 @@ Declare the following permissions in the AndroidManifest.xml file under the appl
176
232
  | runningTasks | Whether collecting running tasks, default allowed | Android | options["runningTasks"] = true |
177
233
  | sensor | Whether collecting sensor information, default allowed | Android | options["sensor"] = true |
178
234
  | readPhone | Whether collecting READ _PHONE_ STATE permission-related information, default allowed | Android | options["readPhone"] = true |
179
- | installPackageList | Whether collecting application list information, default allowed | Android | options["installPackageList"] = true |
235
+ | installPackageList | Whether collecting application list information, default allowed | Android | options["installPackageList"] = true |
@@ -25,4 +25,3 @@ dependencies {
25
25
  implementation 'com.facebook.react:react-native:+'
26
26
  implementation 'com.trustdecision.android:mobrisk:+'
27
27
  }
28
-
@@ -17,6 +17,7 @@ import java.util.HashMap;
17
17
  import com.trustdecision.mobrisk.TDRisk;
18
18
  import com.trustdecision.mobrisk.TDRiskCallback;
19
19
  import com.trustdecision.mobrisk.TDAPISignResult;
20
+ import com.trustdecision.mobrisk.TDBehaviorResult;
20
21
 
21
22
  public class TrustdeviceModule extends ReactContextBaseJavaModule {
22
23
  private final ReactApplicationContext reactContext;
@@ -34,11 +35,18 @@ public class TrustdeviceModule extends ReactContextBaseJavaModule {
34
35
 
35
36
  @ReactMethod
36
37
  public void initWithOptions(ReadableMap readableMap, Promise promise) {
37
- if (readableMap != null) {
38
+ if (readableMap == null) {
39
+ promise.reject("initWithOptions Error", "options must not be null");
40
+ return;
41
+ }
42
+
43
+ try {
38
44
  HashMap<String, Object> options = readableMap.toHashMap();
39
45
  TDRisk.Builder builder = TDUniRiskUtils.mapToBuilder(options);
40
46
  TDRisk.initWithOptions(this.reactContext.getApplicationContext(), builder);
41
47
  promise.resolve(null);
48
+ } catch (Exception e) {
49
+ promise.reject("initWithOptions Error", e);
42
50
  }
43
51
  }
44
52
 
@@ -83,9 +91,43 @@ public class TrustdeviceModule extends ReactContextBaseJavaModule {
83
91
  }
84
92
  }
85
93
 
94
+ @ReactMethod
95
+ public void start(Promise promise) {
96
+ try {
97
+ TDRisk.start();
98
+ promise.resolve(null);
99
+ } catch (Exception e) {
100
+ promise.reject("behaviorStart Error", e);
101
+ }
102
+ }
103
+
104
+ @ReactMethod
105
+ public void stop(Promise promise) {
106
+ try {
107
+ TDRisk.stop();
108
+ promise.resolve(null);
109
+ } catch (Exception e) {
110
+ promise.reject("behaviorStop Error", e);
111
+ }
112
+ }
113
+
114
+ @ReactMethod
115
+ public void collect(Promise promise) {
116
+ try {
117
+ TDBehaviorResult behaviorResult = TDRisk.collect();
118
+ WritableMap resultMap = Arguments.createMap();
119
+ resultMap.putInt("code", behaviorResult.code());
120
+ resultMap.putString("payload", behaviorResult.payload());
121
+ resultMap.putString("msg", behaviorResult.msg());
122
+ promise.resolve(resultMap);
123
+ } catch (Exception e) {
124
+ promise.reject("behaviorCollect Error", e);
125
+ }
126
+ }
127
+
86
128
  @ReactMethod
87
129
  public void getSDKVersion(Promise promise) {
88
130
  String sdkVersion = TDRisk.getSDKVersion();
89
131
  promise.resolve(sdkVersion);
90
132
  }
91
- }
133
+ }
package/index.d.ts CHANGED
@@ -1,4 +1,27 @@
1
+ export interface TDSignResult {
2
+ code: number;
3
+ sign: string;
4
+ msg: string;
5
+ }
1
6
 
2
- /// <reference types="react-scripts">
7
+ export interface TDBehaviorResult {
8
+ code: number;
9
+ payload: string;
10
+ msg: string;
11
+ }
3
12
 
4
- declare module 'react-native-trustdevice';
13
+ export interface TrustDeviceModule {
14
+ initWithOptions(options: Record<string, unknown>): Promise<void> | void;
15
+ getSDKVersion(): Promise<string>;
16
+ getBlackBox(): Promise<string>;
17
+ getBlackBoxAsync(): Promise<string>;
18
+ sign(path: string): Promise<TDSignResult>;
19
+ start(): Promise<void>;
20
+ stop(): Promise<void>;
21
+ collect(): Promise<TDBehaviorResult>;
22
+ }
23
+
24
+ declare const TrustDevice: TrustDeviceModule;
25
+
26
+ export {TrustDevice};
27
+ export default TrustDevice;
package/index.js CHANGED
@@ -1,4 +1,9 @@
1
- const TrustDevice = require('./src/TrustDevice');
2
- export { TrustDevice };
3
- export default TrustDevice;
4
- module.exports = TrustDevice;
1
+ // Platform files are transpiled as ES modules by Metro, while older published
2
+ // versions of this package were consumed as CommonJS. Normalize the platform
3
+ // export once and preserve all existing public import styles.
4
+ const platformModule = require('./src/TrustDevice');
5
+ const TrustDevice = platformModule.default || platformModule;
6
+
7
+ module.exports = TrustDevice;
8
+ module.exports.default = TrustDevice;
9
+ module.exports.TrustDevice = TrustDevice;
package/ios/TrustDevice.m CHANGED
@@ -93,6 +93,72 @@ RCT_EXPORT_METHOD(sign:(NSString*)path
93
93
  resolve(resultDict);
94
94
  }
95
95
 
96
+ RCT_REMAP_METHOD(start,
97
+ startResolver:(RCTPromiseResolveBlock)resolve
98
+ rejecter:(RCTPromiseRejectBlock)reject)
99
+ {
100
+ TDMobRiskManager_t *manager = [TDMobRiskManager sharedManager];
101
+ if (manager == NULL || manager->start == NULL) {
102
+ reject(@"behavior_unavailable",
103
+ @"TDBehavior is unavailable. Add TDBehavior_spm 1.5.2 to the host App Target.",
104
+ nil);
105
+ return;
106
+ }
107
+
108
+ // TDBehavior starts UIKit-backed providers (for example device orientation),
109
+ // which must be created and stopped on the main thread. React Native invokes
110
+ // native module methods on a background method queue by default.
111
+ dispatch_async(dispatch_get_main_queue(), ^{
112
+ manager->start();
113
+ resolve(nil);
114
+ });
115
+ }
116
+
117
+ RCT_REMAP_METHOD(stop,
118
+ stopResolver:(RCTPromiseResolveBlock)resolve
119
+ rejecter:(RCTPromiseRejectBlock)reject)
120
+ {
121
+ TDMobRiskManager_t *manager = [TDMobRiskManager sharedManager];
122
+ if (manager == NULL || manager->stop == NULL) {
123
+ reject(@"behavior_unavailable",
124
+ @"TDBehavior is unavailable. Add TDBehavior_spm 1.5.2 to the host App Target.",
125
+ nil);
126
+ return;
127
+ }
128
+
129
+ dispatch_async(dispatch_get_main_queue(), ^{
130
+ manager->stop();
131
+ resolve(nil);
132
+ });
133
+ }
134
+
135
+ RCT_REMAP_METHOD(collect,
136
+ collectResolver:(RCTPromiseResolveBlock)resolve
137
+ rejecter:(RCTPromiseRejectBlock)reject)
138
+ {
139
+ TDMobRiskManager_t *manager = [TDMobRiskManager sharedManager];
140
+ if (manager == NULL || manager->collect == NULL) {
141
+ reject(@"behavior_unavailable",
142
+ @"TDBehavior is unavailable. Add TDBehavior_spm 1.5.2 to the host App Target.",
143
+ nil);
144
+ return;
145
+ }
146
+ TDBehaviorResultStruct behaviorResult = manager->collect();
147
+
148
+ NSString *payload = behaviorResult.payload
149
+ ? [NSString stringWithUTF8String:behaviorResult.payload]
150
+ : @"";
151
+ NSString *message = behaviorResult.msg
152
+ ? [NSString stringWithUTF8String:behaviorResult.msg]
153
+ : @"";
154
+
155
+ resolve(@{
156
+ @"code": @(behaviorResult.code),
157
+ @"payload": payload,
158
+ @"msg": message
159
+ });
160
+ }
161
+
96
162
  - (UIWindow *)getKeyWindow
97
163
  {
98
164
  if (@available(iOS 13.0, *))
@@ -154,5 +220,3 @@ RCT_REMAP_METHOD(showCaptcha,
154
220
 
155
221
 
156
222
  @end
157
-
158
-
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.1.5",
6
+ "version": "1.1.6",
7
7
  "description": "React Native TrustDevice component",
8
8
  "main": "index.js",
9
9
  "react-native": "index.js",
@@ -21,7 +21,8 @@
21
21
  "react-native-trustdevice"
22
22
  ],
23
23
  "files": [
24
- "android",
24
+ "android/build.gradle",
25
+ "android/src",
25
26
  "ios",
26
27
  "src",
27
28
  "index.js",
@@ -34,4 +35,4 @@
34
35
  "react": "*",
35
36
  "react-native": "*"
36
37
  }
37
- }
38
+ }
@@ -25,5 +25,3 @@ Pod::Spec.new do |s|
25
25
  s.dependency "TrustDecisionPro"
26
26
 
27
27
  end
28
-
29
-
@@ -1,4 +1,4 @@
1
1
 
2
2
  import {NativeModules} from 'react-native';
3
3
  const TrustDevice = NativeModules.TrustDevice;
4
- var _default=exports.default=TrustDevice;
4
+ var _default=exports.default=TrustDevice;
@@ -6,4 +6,3 @@ import { requireNativeComponent,NativeModules } from 'react-native';
6
6
  const TrustDevice = NativeModules.TrustDevice;
7
7
 
8
8
  var _default=exports.default=TrustDevice;
9
-
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3
- package="com.trustdevice" >
4
-
5
- <uses-sdk android:minSdkVersion="21" />
6
-
7
- </manifest>
@@ -1,18 +0,0 @@
1
- {
2
- "version": 3,
3
- "artifactType": {
4
- "type": "AAPT_FRIENDLY_MERGED_MANIFESTS",
5
- "kind": "Directory"
6
- },
7
- "applicationId": "com.trustdevice",
8
- "variantName": "debug",
9
- "elements": [
10
- {
11
- "type": "SINGLE",
12
- "filters": [],
13
- "attributes": [],
14
- "outputFile": "AndroidManifest.xml"
15
- }
16
- ],
17
- "elementType": "File"
18
- }
@@ -1,5 +0,0 @@
1
- aarFormatVersion=1.0
2
- aarMetadataVersion=1.0
3
- minCompileSdk=1
4
- minCompileSdkExtension=0
5
- minAndroidGradlePluginVersion=1.0.0
@@ -1,2 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <merger version="3"><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/src/main/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main" generated-set="main$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/src/main/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug" generated-set="debug$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/build/generated/res/resValues/debug"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated" generated-set="generated$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/build/generated/res/resValues/debug"/></dataSet><mergedItems/></merger>
@@ -1,2 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/src/main/jniLibs"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/src/debug/jniLibs"/></dataSet></merger>
@@ -1,2 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/src/main/shaders"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/src/debug/shaders"/></dataSet></merger>
@@ -1,2 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/src/main/assets"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/src/debug/assets"/></dataSet><dataSet config="generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/build/intermediates/shader_assets/debug/out"/></dataSet></merger>
@@ -1,2 +0,0 @@
1
- R_DEF: Internal format may change without notice
2
- local
@@ -1,7 +0,0 @@
1
- 1<?xml version="1.0" encoding="utf-8"?>
2
- 2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3
- 3 package="com.trustdevice" >
4
- 4
5
- 5 <uses-sdk android:minSdkVersion="21" />
6
- 6
7
- 7</manifest>
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3
- package="com.trustdevice" >
4
-
5
- <uses-sdk android:minSdkVersion="21" />
6
-
7
- </manifest>
@@ -1,16 +0,0 @@
1
- -- Merging decision tree log ---
2
- manifest
3
- ADDED from /Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/src/main/AndroidManifest.xml:2:1-4:12
4
- INJECTED from /Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/src/main/AndroidManifest.xml:2:1-4:12
5
- package
6
- INJECTED from /Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/src/main/AndroidManifest.xml
7
- xmlns:android
8
- ADDED from /Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/src/main/AndroidManifest.xml:2:11-69
9
- uses-sdk
10
- INJECTED from /Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/src/main/AndroidManifest.xml reason: use-sdk injection requested
11
- INJECTED from /Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/src/main/AndroidManifest.xml
12
- INJECTED from /Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/src/main/AndroidManifest.xml
13
- android:targetSdkVersion
14
- INJECTED from /Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/src/main/AndroidManifest.xml
15
- android:minSdkVersion
16
- INJECTED from /Users/rhett/Code/dun/reactnew/TrustDeviceReactNative/node_modules/react-native-trustdevice/android/src/main/AndroidManifest.xml