react-native-beidou 1.0.3 → 1.0.5
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.
- package/BeiDouAIDLTestPage.tsx +7 -7
- package/Compass.android.tsx +20 -0
- package/Compass.ios.tsx +15 -0
- package/Compass.tsx +6 -0
- package/README.md +48 -124
- package/android/.gradle/8.9/checksums/checksums.lock +0 -0
- package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +1 -1
- package/android/.idea/AndroidProjectSystem.xml +6 -0
- package/android/.idea/gradle.xml +13 -0
- package/android/.idea/migrations.xml +10 -0
- package/android/.idea/misc.xml +9 -0
- package/android/.idea/runConfigurations.xml +17 -0
- package/android/.idea/vcs.xml +6 -0
- package/android/build.gradle +3 -0
- package/android/src/main/AndroidManifest.xml +7 -0
- package/android/src/main/java/com/cmcc_rn_module/BeiDouBluetoothModule.java +343 -101
- package/android/src/main/java/com/cmcc_rn_module/BeiDouBluetoothPackage.java +4 -1
- package/android/src/main/java/com/cmcc_rn_module/ChatDBManager.java +306 -0
- package/android/src/main/java/com/cmcc_rn_module/JsonUtil.java +113 -7
- package/android/src/main/java/com/cmcc_rn_module/view/CompassManager.java +41 -0
- package/android/src/main/java/com/cmcc_rn_module/view/CompassView.java +277 -0
- package/android/src/main/libs/bluetooth-sdk.aar +0 -0
- package/index.ts +188 -10
- package/ios/BDTCompassViewManager.h +15 -0
- package/ios/BDTCompassViewManager.m +24 -0
- package/ios/BeiDouBluetoothModule.h +20 -0
- package/ios/BeiDouBluetoothModule.m +424 -0
- package/ios/BeidouBluetooth.framework/BeidouBluetooth +0 -0
- package/ios/BeidouBluetooth.framework/Headers/BDTBluetoothManager.h +76 -0
- package/ios/BeidouBluetooth.framework/Headers/BDTChatDBManager.h +41 -0
- package/ios/BeidouBluetooth.framework/Headers/BDTDataPacketBuilder.h +62 -0
- package/ios/BeidouBluetooth.framework/Headers/BeidouBluetooth.h +21 -0
- package/ios/BeidouBluetooth.framework/Info.plist +0 -0
- package/ios/BeidouBluetooth.framework/Modules/module.modulemap +6 -0
- package/ios/BeidouBluetooth.framework/_CodeSignature/CodeDirectory +0 -0
- package/ios/BeidouBluetooth.framework/_CodeSignature/CodeRequirements +0 -0
- package/ios/BeidouBluetooth.framework/_CodeSignature/CodeRequirements-1 +0 -0
- package/ios/BeidouBluetooth.framework/_CodeSignature/CodeResources +177 -0
- package/ios/BeidouBluetooth.framework/_CodeSignature/CodeSignature +0 -0
- package/ios/CompassView.h +20 -0
- package/ios/CompassView.m +201 -0
- package/package.json +4 -1
- package/android/.gradle/8.8/checksums/checksums.lock +0 -0
- package/android/.gradle/8.8/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/8.8/fileChanges/last-build.bin +0 -0
- package/android/.gradle/8.8/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/8.8/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/8.8/gc.properties +0 -0
- package/ios/Podfile +0 -79
- package/ios/build_sdk.sh +0 -30
- package/ios/cmcc_rn_module/AppDelegate.h +0 -8
- package/ios/cmcc_rn_module/AppDelegate.mm +0 -108
- package/ios/cmcc_rn_module/CMCCAssetsLoaderModule.h +0 -17
- package/ios/cmcc_rn_module/CMCCAssetsLoaderModule.m +0 -38
- package/ios/cmcc_rn_module/Images.xcassets/AppIcon.appiconset/Contents.json +0 -53
- package/ios/cmcc_rn_module/Images.xcassets/Contents.json +0 -6
- package/ios/cmcc_rn_module/Info.plist +0 -62
- package/ios/cmcc_rn_module/LaunchScreen.storyboard +0 -47
- package/ios/cmcc_rn_module/main.m +0 -10
- package/ios/cmcc_rn_module.xcodeproj/project.pbxproj +0 -708
- package/ios/cmcc_rn_module.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- package/ios/cmcc_rn_module.xcodeproj/xcshareddata/xcschemes/cmcc_rn_module.xcscheme +0 -88
- package/ios/cmcc_rn_module.xcworkspace/contents.xcworkspacedata +0 -10
- package/ios/cmcc_rn_module.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- package/ios/cmcc_rn_moduleTests/Info.plist +0 -24
- package/ios/cmcc_rn_moduleTests/cmcc_rn_moduleTests.m +0 -66
- package/ios/reset_env.sh +0 -24
- package/ios/scripts/RNReanimated.podspec +0 -90
- package/ios/scripts/generate_dynamic_pod.rb +0 -166
- package/ios/scripts/native_modules_dy.rb +0 -317
- package/ios/scripts/react_native_pods_dy.rb +0 -773
package/BeiDouAIDLTestPage.tsx
CHANGED
|
@@ -39,10 +39,10 @@ const BeiDouAIDLTestPage: React.FC = () => {
|
|
|
39
39
|
const [ephemerisType, setEphemerisType] = useState('GPS');
|
|
40
40
|
const [ephemerisVersion, setEphemerisVersion] = useState('1.0.0');
|
|
41
41
|
const [decryptMsg, setDecryptMsg] = useState('1,2,3,4,5');
|
|
42
|
-
|
|
42
|
+
|
|
43
43
|
// 服务配置参数
|
|
44
|
-
const [packageName, setPackageName] = useState('com.
|
|
45
|
-
const [actionName, setActionName] = useState('com.
|
|
44
|
+
const [packageName, setPackageName] = useState('com.test.aidlsetvicetest');
|
|
45
|
+
const [actionName, setActionName] = useState('com.samsung.beidoupackage.BeidouMsgAidlService');
|
|
46
46
|
|
|
47
47
|
const addTestResult = (method: string, success: boolean, result?: any, error?: string) => {
|
|
48
48
|
const newResult: TestResult = {
|
|
@@ -67,7 +67,7 @@ const BeiDouAIDLTestPage: React.FC = () => {
|
|
|
67
67
|
Alert.alert('错误', '请输入有效的包名和Action名');
|
|
68
68
|
return;
|
|
69
69
|
}
|
|
70
|
-
|
|
70
|
+
|
|
71
71
|
const result = await BeiDouModule.beidou.bindService(packageName.trim(), actionName.trim());
|
|
72
72
|
setIsServiceBound(result);
|
|
73
73
|
addTestResult('bindService', result, { packageName: packageName.trim(), actionName: actionName.trim(), result });
|
|
@@ -306,14 +306,14 @@ const BeiDouAIDLTestPage: React.FC = () => {
|
|
|
306
306
|
{/* 服务配置区域 */}
|
|
307
307
|
<View style={styles.inputSection}>
|
|
308
308
|
<Text style={styles.sectionTitle}>服务配置</Text>
|
|
309
|
-
|
|
309
|
+
|
|
310
310
|
<View style={styles.inputGroup}>
|
|
311
311
|
<Text style={styles.inputLabel}>包名 (Package Name):</Text>
|
|
312
312
|
<TextInput
|
|
313
313
|
style={styles.textInput}
|
|
314
314
|
value={packageName}
|
|
315
315
|
onChangeText={setPackageName}
|
|
316
|
-
placeholder="com.
|
|
316
|
+
placeholder="com.test.aidlsetvicetest"
|
|
317
317
|
/>
|
|
318
318
|
</View>
|
|
319
319
|
|
|
@@ -323,7 +323,7 @@ const BeiDouAIDLTestPage: React.FC = () => {
|
|
|
323
323
|
style={styles.textInput}
|
|
324
324
|
value={actionName}
|
|
325
325
|
onChangeText={setActionName}
|
|
326
|
-
placeholder="com.
|
|
326
|
+
placeholder="com.samsung.beidoupackage.BeidouMsgAidlService"
|
|
327
327
|
/>
|
|
328
328
|
</View>
|
|
329
329
|
</View>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {requireNativeComponent, NativeEventEmitter, NativeModules, ViewStyle} from 'react-native';
|
|
3
|
+
const CompassManager = NativeModules.CompassManager;
|
|
4
|
+
const CompassView = requireNativeComponent('CompassView');
|
|
5
|
+
|
|
6
|
+
const CompassAndroid = ({ style, onHeadingChange }:{
|
|
7
|
+
style: ViewStyle;
|
|
8
|
+
onHeadingChange: (r:string)=>void
|
|
9
|
+
}) => {
|
|
10
|
+
const eventEmitter = new NativeEventEmitter(CompassManager);
|
|
11
|
+
|
|
12
|
+
React.useEffect(() => {
|
|
13
|
+
const subscription = eventEmitter.addListener('onCompassUpdate', onHeadingChange);
|
|
14
|
+
return () => subscription.remove();
|
|
15
|
+
}, [onHeadingChange]);
|
|
16
|
+
|
|
17
|
+
return <CompassView style={style} />;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export default CompassAndroid;
|
package/Compass.ios.tsx
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { requireNativeComponent, ViewStyle } from 'react-native';
|
|
3
|
+
|
|
4
|
+
type CompassProps = {
|
|
5
|
+
style?: ViewStyle;
|
|
6
|
+
onHeadingChange?: (event: { nativeEvent: { radians: number; degrees: number } }) => void;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
const CompassNativeView = requireNativeComponent<CompassProps>('CompassView');
|
|
10
|
+
|
|
11
|
+
const Compass: React.FC<CompassProps> = (props) => {
|
|
12
|
+
return <CompassNativeView {...props} />;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export default Compass;
|
package/Compass.tsx
ADDED
package/README.md
CHANGED
|
@@ -1,154 +1,78 @@
|
|
|
1
|
-
#
|
|
1
|
+
# React Native 北斗蓝牙 SDK(react-native-beidou)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## 安装
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
es6 教程:https://www.runoob.com/w3cnote
|
|
10
|
-
|
|
11
|
-
useMock:https://www.usemock.com/login >>>>>>>>>在【useMock 协作项目】
|
|
12
|
-
|
|
13
|
-
UI 库: https://rn.mobile.ant.design/docs/react/introduce-cn 版本:`5.2.3`
|
|
14
|
-
|
|
15
|
-
开发工具: vscode, 插件:eslint(自动格式化)、react-native-snippets(代码提示)
|
|
16
|
-
|
|
17
|
-
.vscode 可以扩展自定义模板,现有创建组件模板 rnc 指令
|
|
18
|
-
|
|
19
|
-
`node: v18.17.1`
|
|
20
|
-
`yarn: 1.22.22`
|
|
21
|
-
|
|
22
|
-
新建页面、组件规范: pages、components、assets 以页面维度划分
|
|
23
|
-
|
|
24
|
-
# 安卓 gif 与 webp 支持
|
|
5
|
+
```bash
|
|
6
|
+
yarn add react-native-beidou
|
|
7
|
+
```
|
|
25
8
|
|
|
26
|
-
|
|
27
|
-
cd android
|
|
28
|
-
.\gradlew app:dependencies --configuration releaseRuntimeClasspath
|
|
9
|
+
### iOS
|
|
29
10
|
|
|
30
|
-
|
|
11
|
+
在 `ios/Podfile` 中确保加入:
|
|
31
12
|
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
"android": "gulp dev-android",
|
|
35
|
-
"ios": "gulp dev-ios",
|
|
36
|
-
"start": "gulp dev-start",
|
|
37
|
-
"test": "jest",
|
|
38
|
-
"build": "gulp default",
|
|
39
|
-
"upload": "gulp upload",
|
|
40
|
-
"build:dll-custom": "gulp build-custom",
|
|
41
|
-
"lint": "eslint . --ext .js,.jsx,.ts,.tsx",
|
|
42
|
-
"bundle:analysis": "react-native-bundle-visualizer"
|
|
13
|
+
```ruby
|
|
14
|
+
pod 'react-native-beidou', :path => '../node_modules/react-native-beidou'
|
|
43
15
|
```
|
|
44
16
|
|
|
45
|
-
|
|
17
|
+
执行:
|
|
46
18
|
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
yarn android --pageName=页面名称
|
|
50
|
-
页面名称:src/pages下的页面入口文件名(不带后缀)
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
使用metro配置自定义拆包:
|
|
54
|
-
业务包(页面级别)可以直接使用页面名字,如Demo。打包配置走metro.main.config.js;
|
|
55
|
-
非业务包(包括node_modules里的第三方插件、utils自定义公共方法)需要在custom.config.js里配置。打包配置走metro.common.config.js
|
|
56
|
-
输出:bundle/(ios|android)-${pageName}
|
|
57
|
-
splitCache: 打包信息缓存,目前之缓存非业务包信息,带_origin为路径信息缓存,不带的是打包id缓存
|
|
58
|
-
yarn build:dll-custom --pageName=dll
|
|
59
|
-
yarn build:dll-custom --pageName=utils
|
|
60
|
-
yarn build:dll-custom --pageName=Demo
|
|
61
|
-
|
|
62
|
-
添加参数:
|
|
63
|
-
--pageName=<页面名称> 指定要打包的页面名称(必填)
|
|
64
|
-
--ios 只打iOS包,不打Android包
|
|
65
|
-
--android 只打Android包,不打iOS包
|
|
66
|
-
--sourceMap 生成sourcemap文件,用于错误堆栈符号化
|
|
67
|
-
|
|
68
|
-
示例:
|
|
69
|
-
yarn build:dll-custom --pageName=Demo1 --ios --sourceMap
|
|
19
|
+
```bash
|
|
20
|
+
cd ios && pod install
|
|
70
21
|
```
|
|
71
22
|
|
|
72
|
-
|
|
23
|
+
注意:
|
|
24
|
+
- 本库通过 `vendored_frameworks` 引入 `BeidouBluetooth.framework`,无需额外拷贝。
|
|
25
|
+
- 最低平台版本需满足 iOS 15.6(来自 `react-native-beidou.podspec`)。
|
|
73
26
|
|
|
74
|
-
|
|
27
|
+
### Android
|
|
75
28
|
|
|
76
|
-
|
|
29
|
+
采用 RN Autolinking,无需手动修改。若出现无法自动链接,可检查本库提供的 `react-native.config.js`:
|
|
77
30
|
|
|
31
|
+
```js
|
|
32
|
+
packageImportPath: "import com.cmcc_rn_module.BeiDouBluetoothPackage;",
|
|
33
|
+
packageInstance: "new com.cmcc_rn_module.BeiDouBluetoothPackage()"
|
|
78
34
|
```
|
|
79
|
-
// js能力调用方法
|
|
80
|
-
try {
|
|
81
|
-
const data = await callNativeMethod({
|
|
82
|
-
businessName: 'userStatus',
|
|
83
|
-
debug: false,
|
|
84
|
-
...剩余参数(不要传success和error),
|
|
85
|
-
});
|
|
86
|
-
// succes回调
|
|
87
|
-
console.log('%c Line:141 🍰 data', 'color:#7f2b82', data);
|
|
88
|
-
} catch (error) {
|
|
89
|
-
// error回调
|
|
90
|
-
console.log('%c Line:148 🍰 error', 'color:#b03734', error);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// 参考商城写法
|
|
94
|
-
// useInfo 更新调用接口
|
|
95
|
-
useEffect(() => {
|
|
96
|
-
!!userInfo && getData();
|
|
97
|
-
}, [userInfo]);
|
|
98
|
-
|
|
99
|
-
useEffect(() => {
|
|
100
|
-
// 强登isForceLogin
|
|
101
|
-
loginInfo({isForceLogin: false}).then((res: any) => {
|
|
102
|
-
setUserInfo(res);
|
|
103
|
-
});
|
|
104
|
-
}, []);
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
# 开发在线调试
|
|
108
|
-
|
|
109
|
-
1.yarn build
|
|
110
|
-
|
|
111
|
-
2.yarn upload 上传 jsbundle 到服务器
|
|
112
35
|
|
|
113
|
-
|
|
36
|
+
库内已包含 `android/libs/bluetooth-sdk.aar`,通常无需额外配置。
|
|
114
37
|
|
|
115
|
-
|
|
38
|
+
---
|
|
116
39
|
|
|
117
|
-
|
|
40
|
+
## 权限与配置
|
|
118
41
|
|
|
119
|
-
|
|
42
|
+
### Android 权限(必配)
|
|
120
43
|
|
|
121
|
-
|
|
44
|
+
在宿主应用 `android/app/src/main/AndroidManifest.xml` 中添加(按系统版本动态申请):
|
|
122
45
|
|
|
123
|
-
|
|
46
|
+
```xml
|
|
47
|
+
<!-- Android 12+ -->
|
|
48
|
+
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
|
|
49
|
+
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
|
124
50
|
|
|
125
|
-
|
|
51
|
+
<!-- Android 6.0+ 扫描需要位置权限 -->
|
|
52
|
+
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
|
53
|
+
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
|
126
54
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
3. `react-native-swiper`组件废弃,新页面采用`react-native-reanimated-carousel`
|
|
55
|
+
<!-- WiFi 名称读取(可选) -->
|
|
56
|
+
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
|
130
57
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
58
|
+
<!-- 建议配置,声明低功耗蓝牙能力 -->
|
|
59
|
+
<uses-feature android:name="android.hardware.bluetooth_le" android:required="false" />
|
|
60
|
+
```
|
|
134
61
|
|
|
135
|
-
|
|
62
|
+
混淆(如启用 ProGuard/R8)建议保留:
|
|
136
63
|
|
|
137
|
-
```
|
|
138
|
-
|
|
64
|
+
```proguard
|
|
65
|
+
-keep class com.beidou.bluetooth.** { *; }
|
|
66
|
+
-keep class com.cmcc_rn_module.** { *; }
|
|
139
67
|
```
|
|
140
68
|
|
|
141
|
-
|
|
142
|
-
- `--sourcemap`:指定sourcemap文件的路径,例如:`CT00010.jsbundle.map`。该文件是在打包时生成的,包含源代码和打包后代码的映射关系。
|
|
143
|
-
- `--stack`:指定包含错误堆栈信息的文本文件路径,例如:`error.txt`。该文件包含应用崩溃时的错误堆栈信息。
|
|
69
|
+
### iOS 权限(Info.plist)
|
|
144
70
|
|
|
145
|
-
|
|
146
|
-
- 打包时需要添加`--sourceMap`参数才会生成sourcemap文件,例如:`yarn build --sourceMap`或`yarn build:dll-custom --pageName=Demo --sourceMap`
|
|
147
|
-
- 符号化过程使用`metro-symbolicate`工具,会自动将混淆后的代码位置映射回源代码位置
|
|
71
|
+
根据实际需要添加:
|
|
148
72
|
|
|
149
|
-
|
|
73
|
+
```xml
|
|
74
|
+
<key>NSBluetoothAlwaysUsageDescription</key>
|
|
75
|
+
<string>需要使用蓝牙与北斗终端通信</string>
|
|
76
|
+
<key>NSLocationWhenInUseUsageDescription</key>
|
|
77
|
+
<string>用于蓝牙扫描或获取WiFi信息</string>
|
|
150
78
|
```
|
|
151
|
-
yarn symbolicate --sourcemap=CT00010.jsbundle.map --stack=error.txt
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
执行后,将输出符号化后的错误堆栈信息,帮助开发者快速定位问题所在位置。
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
#
|
|
1
|
+
#Tue Sep 16 15:41:38 CST 2025
|
|
2
2
|
gradle.version=8.9
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="GradleMigrationSettings" migrationVersion="1" />
|
|
4
|
+
<component name="GradleSettings">
|
|
5
|
+
<option name="linkedExternalProjectsSettings">
|
|
6
|
+
<GradleProjectSettings>
|
|
7
|
+
<option name="testRunner" value="CHOOSE_PER_TEST" />
|
|
8
|
+
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
|
9
|
+
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
|
|
10
|
+
</GradleProjectSettings>
|
|
11
|
+
</option>
|
|
12
|
+
</component>
|
|
13
|
+
</project>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<project version="4">
|
|
2
|
+
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
|
3
|
+
<component name="ProjectRootManager">
|
|
4
|
+
<output url="file://$PROJECT_DIR$/build/classes" />
|
|
5
|
+
</component>
|
|
6
|
+
<component name="ProjectType">
|
|
7
|
+
<option name="id" value="Android" />
|
|
8
|
+
</component>
|
|
9
|
+
</project>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="RunConfigurationProducerService">
|
|
4
|
+
<option name="ignoredProducers">
|
|
5
|
+
<set>
|
|
6
|
+
<option value="com.intellij.execution.junit.AbstractAllInDirectoryConfigurationProducer" />
|
|
7
|
+
<option value="com.intellij.execution.junit.AllInPackageConfigurationProducer" />
|
|
8
|
+
<option value="com.intellij.execution.junit.PatternConfigurationProducer" />
|
|
9
|
+
<option value="com.intellij.execution.junit.TestInClassConfigurationProducer" />
|
|
10
|
+
<option value="com.intellij.execution.junit.UniqueIdConfigurationProducer" />
|
|
11
|
+
<option value="com.intellij.execution.junit.testDiscovery.JUnitTestDiscoveryConfigurationProducer" />
|
|
12
|
+
<option value="org.jetbrains.kotlin.idea.junit.KotlinJUnitRunConfigurationProducer" />
|
|
13
|
+
<option value="org.jetbrains.kotlin.idea.junit.KotlinPatternConfigurationProducer" />
|
|
14
|
+
</set>
|
|
15
|
+
</option>
|
|
16
|
+
</component>
|
|
17
|
+
</project>
|
package/android/build.gradle
CHANGED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
2
|
+
package="com.cmcc_rn_module">
|
|
3
|
+
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
|
4
|
+
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
|
5
|
+
<!-- Android 10+ 建議聲明後台定位,如不需要可去除 -->
|
|
6
|
+
<!-- <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> -->
|
|
7
|
+
</manifest>
|