react-native-idosdk 1.0.4 → 1.0.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/CHANGELOG.md +18 -0
  2. package/README.md +56 -68
  3. package/android/build.gradle +11 -14
  4. package/android/src/main/AndroidManifest.xml +11 -3
  5. package/android/src/main/java/com/getui/{reactnativegetui → reactnativeido}/GetuiIdoModule.java +7 -3
  6. package/android/src/main/java/com/getui/{reactnativegetui → reactnativeido}/GetuiIdoPackage.java +1 -1
  7. package/android/src/main/java/com/getui/{reactnativegetui → reactnativeido}/GetuiLogger.java +1 -1
  8. package/docs/superpowers/plans/2026-07-13-android-getui-maven-dependencies.md +323 -0
  9. package/docs/superpowers/specs/2026-07-13-android-getui-maven-dependencies-design.md +96 -0
  10. package/document/android.md +48 -112
  11. package/document/iOS.md +31 -283
  12. package/package.json +4 -1
  13. package/react-native-harmony-ido/README.md +266 -0
  14. package/react-native-harmony-ido/gt-ido-ohos-plugin-1.0.1.tgz +0 -0
  15. package/react-native-harmony-ido/harmony/BuildProfile.ets +17 -0
  16. package/react-native-harmony-ido/harmony/IdoOhosSdk.har +0 -0
  17. package/react-native-harmony-ido/harmony/Index.ets +1 -0
  18. package/react-native-harmony-ido/harmony/build-profile.json5 +36 -0
  19. package/react-native-harmony-ido/harmony/consumer-rules.txt +0 -0
  20. package/react-native-harmony-ido/harmony/hvigorfile.ts +6 -0
  21. package/react-native-harmony-ido/harmony/libs/getui_ido_1.0.1.har +0 -0
  22. package/react-native-harmony-ido/harmony/obfuscation-rules.txt +23 -0
  23. package/react-native-harmony-ido/harmony/oh-package-lock.json5 +38 -0
  24. package/react-native-harmony-ido/harmony/oh-package.json5 +12 -0
  25. package/react-native-harmony-ido/harmony/src/main/cpp/CMakeLists.txt +7 -0
  26. package/react-native-harmony-ido/harmony/src/main/cpp/IdoModule.cpp +38 -0
  27. package/react-native-harmony-ido/harmony/src/main/cpp/IdoModule.h +21 -0
  28. package/react-native-harmony-ido/harmony/src/main/cpp/IdoPackage.h +76 -0
  29. package/react-native-harmony-ido/harmony/src/main/ets/IdoModule.ets +150 -0
  30. package/react-native-harmony-ido/harmony/src/main/ets/IdoPackage.ets +24 -0
  31. package/react-native-harmony-ido/harmony/src/main/module.json5 +9 -0
  32. package/react-native-harmony-ido/harmony/src/main/resources/base/element/float.json +8 -0
  33. package/react-native-harmony-ido/harmony/src/main/resources/base/element/string.json +8 -0
  34. package/react-native-harmony-ido/harmony/ts.ets +2 -0
  35. package/react-native-harmony-ido/index.ts +4 -0
  36. package/react-native-harmony-ido/package.json +35 -0
  37. package/react-native-harmony-ido/src/specs/v1/NativeIdo.ts +44 -0
  38. package/android/libs/gs-1.4.12.0.jar +0 -0
  39. package/android/libs/gtc-3.2.18.0.jar +0 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,18 @@
1
+ # Changelog
2
+
3
+ 本文档记录 `react-native-idosdk` 的版本变更。从 `1.0.6` 开始维护。
4
+
5
+ ## [1.0.6] - 2026-07-13
6
+
7
+ ### 变更
8
+
9
+ - Android 原生模块包名调整为 `com.getui.reactnativeido`。
10
+ - Android 依赖由随包 JAR 迁移至个推 Maven 仓库,使用 `gsido 1.4.14.0` 与 `gtc 3.3.3.0`。
11
+ - 调整 Android Manifest 合并规则,保留应用侧配置的 `GETUI_APPID`、`GT_INSTALL_CHANNEL` 和 `GTSDK_VERSION`。
12
+ - AndroidDemo 改为直接引用当前插件工程,并补充 `GT_INSTALL_CHANNEL` 配置,便于联调 `1.0.6`。
13
+ - 更新 React Native、Android、iOS 和 HarmonyOS 集成文档,移除旧推送插件的配置和 API 说明。
14
+
15
+ ### 兼容性
16
+
17
+ - Android 最低 `minSdkVersion` 为 `23`。
18
+ - iOS 最低部署版本为 `12.0`。
package/README.md CHANGED
@@ -1,104 +1,92 @@
1
-
2
1
  # react-native-idosdk
3
- * idosdk 是个推官方开发的 IDOSDK React Native 插件,使用该插件可以方便快速地集成推送功能。
4
-
5
-
6
- # 环境
7
-
8
- 1. React Native Version
9
- "react": "18.3.1"
10
- "react-native": "0.75.4"
11
- 2. 当前react-native-idosdk版本 1.0.4
12
2
 
3
+ 个推 IDOSDK 的 React Native 插件,用于接入运营统计、事件采集和用户画像能力。
13
4
 
14
- # 1.安装
5
+ 当前版本:`1.0.6`。
15
6
 
16
- ### 1.1 使用 npm 自动安装
7
+ ## 安装
17
8
 
18
- 在您的项目根目录下执行
9
+ 在 React Native 项目根目录执行:
19
10
 
20
- ````js
21
- step1:添加npm包依赖
22
- npm install react-native-idosdk@latest --save
11
+ ```sh
12
+ npm install react-native-idosdk@1.0.6 --save
13
+ ```
23
14
 
15
+ React Native 0.60 及以上项目会自动链接原生模块。iOS 项目还需要安装 Pods:
24
16
 
25
- step2:iOS, pod项目, 链接iOS原生代码
17
+ ```sh
26
18
  npx pod-install
19
+ ```
27
20
 
21
+ Android 示例工程使用 React `19.0.0` 和 React Native `0.79.1`。请按项目所用 React Native 版本完成原生环境配置。
28
22
 
29
- step2: 链接 (非Autolinking项目, 和iOS非pod项目)
30
- react-native link
31
- ````
23
+ ## 配置
32
24
 
33
- ### 1.2 完整代码示例
34
-
35
- *[AndroidDemo](example/AndroidDemo)
36
- *[iOSDemo](example/iOSDemo)
25
+ 应用 AppID 请在[个推开发者中心](https://dev.getui.com)创建应用后获取。
37
26
 
38
- # 2. 配置
27
+ ### Android
39
28
 
40
- * appId 需要去 [个推官网](https://dev.getui.com) 注册后,在后台配置获取。
29
+ `android/app/src/main/AndroidManifest.xml` `<application>` 节点内配置 AppID 和安装渠道:
41
30
 
31
+ ```xml
32
+ <meta-data android:name="GETUI_APPID" android:value="你的 AppID" />
33
+ <meta-data android:name="GT_INSTALL_CHANNEL" android:value="" />
34
+ ```
42
35
 
43
- ## 2.1 Android
44
- * AndroidManifest.xml中添加配置
45
- ````xml
46
- <manifest>
47
- <application>
48
- <meta-data android:name="GETUI_APPID" android:value="你的appid"/>
49
- <meta-data android:name="GT_INSTALL_CHANNEL" android:value=""/>
50
- </application>
51
- </manifest>
52
- ````
53
- * 如果开启混淆
54
- ````proguard
55
- -keep class com.getui.gs.** { *; }
56
- -keep class com.getui.gtc.** {*;}
57
- ````
58
-
59
- ## 2.2 IOS
60
-
36
+ 插件已声明 IDOSDK 所需的原生依赖、权限和组件。无需添加 `react-native-getui`、`PUSH_APPKEY` 或 `PUSH_APPSECRET` 等旧推送插件配置。详细说明见[Android 集成文档](document/android.md)。
61
37
 
62
- ### 2.2.2 使用CocoaPods安装
38
+ ### iOS
63
39
 
64
- 如果是原生应用集成react-native
40
+ 使用 Autolinking 时只需执行 `npx pod-install`。旧项目如未启用 Autolinking,可在目标 target 的 `Podfile` 中加入:
65
41
 
66
- 如果你的 React Native 是通过 Cocoapods 来集成的则使用下面两个步骤来集成
67
-
68
- 1. 在Podfile中添加如下代码(需要写在对应的 target 里):
69
-
70
- ````
42
+ ```ruby
71
43
  pod 'IdoSdkRN', :path => '../node_modules/react-native-idosdk'
44
+ ```
72
45
 
73
- ````
74
-
75
- 2. 终端执行如下命令:
76
-
77
- ````
78
- pod install
46
+ 然后执行 `pod install`。IDOSDK 不需要在 `AppDelegate` 中注册推送、DeviceToken 或 VoIP;初始化请在 JavaScript 中调用 `startSdk`。详细说明见[iOS 集成文档](document/iOS.md)。
79
47
 
80
- ````
48
+ ### HarmonyOS
81
49
 
82
- **注意:**
50
+ HarmonyOS 当前需要手动 Link,完整流程见[鸿蒙文档](react-native-harmony-ido/README.md)。
83
51
 
84
- * 使用 pod 就不要使用 react-native link 了,不然会有冲突。
52
+ ## JavaScript 使用
85
53
 
86
- * iOS 工程中如果找不到头文件可能要在 TARGETS-> BUILD SETTINGS -> Search Paths -> Header Search Paths 添加如下如路径
54
+ 在调用其他接口前先配置可选项并初始化 SDK。`gtcid` 在初始化完成前可能为空,可在业务侧稍后再次读取。
87
55
 
88
- ```
89
- $(SRCROOT)/../node_modules/react-native-getui/ios/RCTGetuiModule
90
- ```
56
+ ```ts
57
+ import GetuiIdo from 'react-native-idosdk';
91
58
 
59
+ const appId = '你的 AppID';
60
+ const channel = 'rn';
92
61
 
93
- ### 2.4 API调用与订阅消息
62
+ GetuiIdo.setDebugEnable(__DEV__);
63
+ GetuiIdo.setSessionTime(30_000);
64
+ GetuiIdo.setMinAppActiveDuration(60_000);
65
+ GetuiIdo.setMaxAppActiveDuration(3_600_000);
94
66
 
95
- 查看示例
67
+ GetuiIdo.startSdk(appId, channel);
96
68
 
97
- android 与 ios 有部分API不同, 查看插件的index.js index.d.ts中API的注释
69
+ GetuiIdo.version((version) => {
70
+ console.log('IDOSDK version:', version);
71
+ });
98
72
 
73
+ GetuiIdo.gtcid((id) => {
74
+ console.log('gtcid:', id);
75
+ });
99
76
 
77
+ GetuiIdo.trackCountEvent('purchase', { sku: 'example', amount: 1 }, '');
78
+ GetuiIdo.setProfile({ memberLevel: 'gold' }, '');
79
+ ```
100
80
 
81
+ 时间类配置的单位均为毫秒。支持的接口包括:
101
82
 
102
- ## 3.iOS注意事项
83
+ - 初始化与查询:`startSdk`、`gtcid`、`version`、`setDebugEnable`
84
+ - 会话与上传:`setSessionTime`、`setMinAppActiveDuration`、`setMaxAppActiveDuration`、`setEventUploadInterval`、`setEventForceUploadSize`、`setProfileUploadInterval`、`setProfileForceUploadSize`
85
+ - 用户与事件:`setUserId`、`registerEventProperties`、`trackCustomKeyValueEventBegin`、`trackCustomKeyValueEventEnd`、`trackCountEvent`、`setProfile`
86
+ - 平台差异:`setApplicationGroupIdentifier` 仅 iOS 生效;`setSyncGenerateGtcid` 和 `registerEventProperties` 暂未在 HarmonyOS 插件中提供。
103
87
 
88
+ ## 示例工程
104
89
 
90
+ - [AndroidDemo](example/AndroidDemo)
91
+ - [iOSDemo](example/iOSDemo)
92
+ - [OhosDemo](example/OhosDemo)
@@ -7,7 +7,7 @@ def safeExtGet(prop, fallback) {
7
7
  android {
8
8
  compileSdkVersion safeExtGet('compileSdkVersion', 34)
9
9
 
10
- namespace 'com.getui.reactnativegetui'
10
+ namespace 'com.getui.reactnativeido'
11
11
 
12
12
  defaultConfig {
13
13
  minSdkVersion safeExtGet('minSdkVersion', 23)
@@ -17,10 +17,15 @@ android {
17
17
  }
18
18
  }
19
19
 
20
- repositories {
21
- maven {
22
- url "https://mvn.getui.com/nexus/content/repositories/releases/"
20
+ rootProject.allprojects {
21
+ repositories {
22
+ maven {
23
+ url "https://mvn.getui.com/nexus/content/repositories/releases/"
24
+ }
23
25
  }
26
+ }
27
+
28
+ repositories {
24
29
  maven { url 'https://maven.aliyun.com/repository/google' }
25
30
  maven { url 'https://maven.aliyun.com/repository/public' }
26
31
  mavenLocal()
@@ -42,16 +47,8 @@ repositories {
42
47
  }
43
48
 
44
49
  dependencies {
45
- implementation fileTree(dir: "libs", include: ["*.jar"])
46
50
  implementation "com.facebook.react:react-native:+" // From node_modules
47
-
48
-
49
- // implementation 'com.getui.opt:hwp:3.1.2' // 华为
50
- // implementation 'com.getui.opt:xmp:3.3.3' // 小米
51
- // implementation 'com.assist-v3:oppo:3.5.0' // oppo
52
- // implementation 'com.assist-v3:vivo:3.2.0' // vivo
53
- // implementation 'com.getui.opt:mzp:3.2.4' // 魅族
54
- // implementation 'com.getui.opt:ups:3.0.3' // ups,ups目前支持坚果,索尼,海信手机
55
- // implementation 'com.getui.opt:honor:3.6.0' // 荣耀
51
+ implementation 'com.getui:gsido:1.4.14.0'
52
+ implementation 'com.getui:gtc:3.3.3.0'
56
53
 
57
54
  }
@@ -1,14 +1,22 @@
1
1
  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
+ xmlns:tools="http://schemas.android.com/tools"
2
3
  >
3
4
 
4
- <uses-sdk
5
- android:minSdkVersion="14"
6
- android:targetSdkVersion="30" />
7
5
  <uses-permission android:name="android.permission.INTERNET" />
8
6
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
9
7
  <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
10
8
 
11
9
  <application>
10
+ <meta-data
11
+ android:name="GETUI_APPID"
12
+ tools:node="remove" />
13
+ <meta-data
14
+ android:name="GT_INSTALL_CHANNEL"
15
+ tools:node="remove" />
16
+ <meta-data
17
+ android:name="GTSDK_VERSION"
18
+ tools:node="remove" />
19
+
12
20
  <service
13
21
  android:name="com.getui.gtc.GtcService"
14
22
  android:exported="false" >
@@ -1,4 +1,4 @@
1
- package com.getui.reactnativegetui;
1
+ package com.getui.reactnativeido;
2
2
 
3
3
  import android.content.Context;
4
4
  import com.facebook.react.bridge.Arguments;
@@ -43,9 +43,13 @@ public class GetuiIdoModule extends ReactContextBaseJavaModule {
43
43
  @ReactMethod
44
44
  public void startSdk(String appid, String channel) {
45
45
  // 设置AppId
46
- if (!TextUtils.isEmpty(appid)){
46
+ if (!TextUtils.isEmpty(appid)) {
47
47
  GsConfig.setAppId(appid);
48
48
  }
49
+ // 设置安装渠道
50
+ if (!TextUtils.isEmpty(channel)) {
51
+ GsConfig.setInstallChannel(channel);
52
+ }
49
53
  // 预初始化
50
54
  GsManager.getInstance().preInit(mContext);
51
55
  // 初始化并注册gtcid
@@ -234,4 +238,4 @@ public class GetuiIdoModule extends ReactContextBaseJavaModule {
234
238
  .emit(eventName, params);
235
239
  }
236
240
 
237
- }
241
+ }
@@ -1,4 +1,4 @@
1
- package com.getui.reactnativegetui;
1
+ package com.getui.reactnativeido;
2
2
 
3
3
  import com.facebook.react.ReactPackage;
4
4
  import com.facebook.react.bridge.JavaScriptModule;
@@ -1,4 +1,4 @@
1
- package com.getui.reactnativegetui;
1
+ package com.getui.reactnativeido;
2
2
 
3
3
  import android.util.Log;
4
4
 
@@ -0,0 +1,323 @@
1
+ # Android 个推 Maven 依赖迁移实施计划
2
+
3
+ > **面向执行代理:** 必须使用 `superpowers:subagent-driven-development`(推荐)或 `superpowers:executing-plans`,逐项执行本计划。所有步骤使用复选框跟踪状态。
4
+
5
+ **目标:** 将 RN Android 插件的个推本地 JAR 替换为 `gsido:1.4.14.0` 和 `gtc:3.3.3.0` Maven 依赖,并保留通过 `startSdk(appid, channel)` 运行时配置 SDK 的能力。
6
+
7
+ **架构:** Maven AAR 负责提供用户运营 SDK、GTC 核心类和默认 Manifest 权限及组件;RN Bridge 继续负责在初始化前写入 App ID 与渠道。插件将个推仓库加入根项目的所有项目,并在 Manifest 合并时移除 AAR 的静态 App ID 与渠道元数据,使宿主应用无需为了运行时初始化而额外声明占位符。
8
+
9
+ **技术栈:** Gradle 8.13、Android Gradle Plugin、React Native 0.79.1、Java、个推 `gsido:1.4.14.0`、个推 `gtc:3.3.3.0`
10
+
11
+ ## 全局约束
12
+
13
+ - 只修改 Android RN 插件,不改 iOS 和 HarmonyOS 依赖。
14
+ - 必须删除 `android/libs/gs-1.4.12.0.jar` 和 `android/libs/gtc-3.2.18.0.jar`,避免重复类。
15
+ - 必须保留 `gsido` AAR 默认声明的全部权限和 `android:usesCleartextTraffic="true"`。
16
+ - JavaScript API 和 `startSdk(String appid, String channel)` 签名保持不变。
17
+ - 不覆盖或提交仓库中现有的包名迁移、示例应用及其他无关改动。
18
+ - `android/build.gradle` 和新的 `GetuiIdoModule.java` 已包含用户改动,实施阶段
19
+ 不自动提交生产文件,避免把不同工作混入同一提交。
20
+
21
+ ## 文件结构
22
+
23
+ - 修改 `android/build.gradle`:向根项目注入个推仓库、声明 Maven 依赖并移除本地 JAR `fileTree`。
24
+ - 删除 `android/libs/gs-1.4.12.0.jar`:移除旧用户运营 SDK。
25
+ - 删除 `android/libs/gtc-3.2.18.0.jar`:移除旧 GTC 核心 SDK。
26
+ - 修改 `android/src/main/AndroidManifest.xml`:移除 AAR 的静态 App ID 和渠道元数据。
27
+ - 修改 `android/src/main/java/com/getui/reactnativeido/GetuiIdoModule.java`:在 SDK 预初始化前应用非空渠道参数。
28
+ - 不新增业务源文件或测试框架。
29
+
30
+ ---
31
+
32
+ ### 任务 1:迁移 Gradle 依赖并配置宿主仓库
33
+
34
+ **文件:**
35
+
36
+ - 修改:`android/build.gradle:12-17`
37
+ - 修改:`android/build.gradle:44-47`
38
+ - 修改:`android/src/main/AndroidManifest.xml`
39
+ - 删除:`android/libs/gs-1.4.12.0.jar`
40
+ - 删除:`android/libs/gtc-3.2.18.0.jar`
41
+
42
+ **接口:**
43
+
44
+ - 输入:个推 Releases Maven 仓库 `https://mvn.getui.com/nexus/content/repositories/releases/`
45
+ - 输出:插件 `debugCompileClasspath` 和 `debugRuntimeClasspath` 中的 `com.getui:gsido:1.4.14.0`、`com.getui:gtc:3.3.3.0`
46
+
47
+ - [ ] **步骤 1:运行迁移前依赖断言,确认测试失败**
48
+
49
+ 运行:
50
+
51
+ ```bash
52
+ cd /Users/yangsihao/Downloads/AndroidStudioProjects/plugins/rn/ido/react-native-idosdk
53
+ test ! -f android/libs/gs-1.4.12.0.jar \
54
+ && test ! -f android/libs/gtc-3.2.18.0.jar \
55
+ && ! rg -n 'implementation fileTree' android/build.gradle \
56
+ && rg -n "implementation 'com.getui:gsido:1.4.14.0'" android/build.gradle \
57
+ && rg -n "implementation 'com.getui:gtc:3.3.3.0'" android/build.gradle
58
+ ```
59
+
60
+ 预期:命令返回非零状态,因为旧 JAR 和 `fileTree` 仍存在,两个 Maven 依赖尚未声明。
61
+
62
+ - [ ] **步骤 2:将个推仓库添加到根项目**
63
+
64
+ 在 `android/build.gradle` 中添加:
65
+
66
+ ```gradle
67
+ rootProject.allprojects {
68
+ repositories {
69
+ maven {
70
+ url "https://mvn.getui.com/nexus/content/repositories/releases/"
71
+ }
72
+ }
73
+ }
74
+ ```
75
+
76
+ - [ ] **步骤 3:移除 AAR 的静态配置元数据**
77
+
78
+ 在插件 Manifest 中声明 `tools` 命名空间,并在 `<application>` 内添加:
79
+
80
+ ```xml
81
+ <meta-data
82
+ android:name="GETUI_APPID"
83
+ tools:node="remove" />
84
+ <meta-data
85
+ android:name="GT_INSTALL_CHANNEL"
86
+ tools:node="remove" />
87
+ ```
88
+
89
+ - [ ] **步骤 4:替换本地 JAR 依赖**
90
+
91
+ 将 `android/build.gradle` 的依赖块开头修改为:
92
+
93
+ ```gradle
94
+ dependencies {
95
+ implementation "com.facebook.react:react-native:+" // From node_modules
96
+ implementation 'com.getui:gsido:1.4.14.0'
97
+ implementation 'com.getui:gtc:3.3.3.0'
98
+ ```
99
+
100
+ 删除以下声明:
101
+
102
+ ```gradle
103
+ implementation fileTree(dir: "libs", include: ["*.jar"])
104
+ ```
105
+
106
+ - [ ] **步骤 5:删除旧 JAR 文件**
107
+
108
+ 运行:
109
+
110
+ ```bash
111
+ rm android/libs/gs-1.4.12.0.jar android/libs/gtc-3.2.18.0.jar
112
+ ```
113
+
114
+ 预期:`android/libs` 中不再存在 `.jar` 文件。
115
+
116
+ - [ ] **步骤 6:重新运行依赖断言,确认测试通过**
117
+
118
+ 运行:
119
+
120
+ ```bash
121
+ test ! -f android/libs/gs-1.4.12.0.jar \
122
+ && test ! -f android/libs/gtc-3.2.18.0.jar \
123
+ && ! rg -n 'implementation fileTree' android/build.gradle \
124
+ && rg -n "implementation 'com.getui:gsido:1.4.14.0'" android/build.gradle \
125
+ && rg -n "implementation 'com.getui:gtc:3.3.3.0'" android/build.gradle \
126
+ && rg -n 'rootProject\.allprojects' android/build.gradle \
127
+ && rg -n 'tools:node="remove"' android/src/main/AndroidManifest.xml
128
+ ```
129
+
130
+ 预期:命令返回零状态,并打印两个 Maven 坐标、根项目仓库声明和元数据移除规则。
131
+
132
+ - [ ] **步骤 7:验证插件依赖解析**
133
+
134
+ 运行:
135
+
136
+ ```bash
137
+ cd example/AndroidDemo/android
138
+ ./gradlew :react-native-idosdk:dependencies --configuration debugRuntimeClasspath
139
+ ```
140
+
141
+ 预期:`BUILD SUCCESSFUL`,依赖树包含:
142
+
143
+ ```text
144
+ com.getui:gsido:1.4.14.0
145
+ com.getui:gtc:3.3.3.0
146
+ ```
147
+
148
+ - [ ] **步骤 8:检查任务 1 的限定差异**
149
+
150
+ 运行:
151
+
152
+ ```bash
153
+ git diff --check -- android/build.gradle \
154
+ android/libs/gs-1.4.12.0.jar \
155
+ android/libs/gtc-3.2.18.0.jar
156
+ git diff -- android/build.gradle
157
+ git diff --stat -- android/libs/gs-1.4.12.0.jar \
158
+ android/libs/gtc-3.2.18.0.jar
159
+ ```
160
+
161
+ 预期:差异检查无空白错误;Gradle 差异包含已有 namespace 调整以及本任务的
162
+ 占位符和依赖修改;两个 JAR 显示为删除。本步骤不创建提交。
163
+
164
+ ### 任务 2:在运行时初始化中应用安装渠道
165
+
166
+ **文件:**
167
+
168
+ - 修改:`android/src/main/java/com/getui/reactnativeido/GetuiIdoModule.java:44-54`
169
+
170
+ **接口:**
171
+
172
+ - 输入:`startSdk(String appid, String channel)` 的 `channel` 参数
173
+ - 输出:在 `GsManager.preInit(Context)` 之前调用 `GsConfig.setInstallChannel(String)`
174
+
175
+ - [ ] **步骤 1:运行渠道配置断言,确认测试失败**
176
+
177
+ 运行:
178
+
179
+ ```bash
180
+ cd /Users/yangsihao/Downloads/AndroidStudioProjects/plugins/rn/ido/react-native-idosdk
181
+ rg -n 'GsConfig\.setInstallChannel\(channel\)' \
182
+ android/src/main/java/com/getui/reactnativeido/GetuiIdoModule.java
183
+ ```
184
+
185
+ 预期:命令返回非零状态,因为当前实现没有应用 `channel`。
186
+
187
+ - [ ] **步骤 2:实现非空渠道配置**
188
+
189
+ 将 `startSdk` 修改为:
190
+
191
+ ```java
192
+ @ReactMethod
193
+ public void startSdk(String appid, String channel) {
194
+ // 设置AppId
195
+ if (!TextUtils.isEmpty(appid)) {
196
+ GsConfig.setAppId(appid);
197
+ }
198
+ // 设置安装渠道
199
+ if (!TextUtils.isEmpty(channel)) {
200
+ GsConfig.setInstallChannel(channel);
201
+ }
202
+ // 预初始化
203
+ GsManager.getInstance().preInit(mContext);
204
+ // 初始化并注册gtcid
205
+ GsManager.getInstance().init(mContext);
206
+ Toast.makeText(mContext, "GsManager init ", Toast.LENGTH_SHORT).show();
207
+ }
208
+ ```
209
+
210
+ - [ ] **步骤 3:重新运行渠道配置断言,确认测试通过**
211
+
212
+ 运行:
213
+
214
+ ```bash
215
+ rg -n 'GsConfig\.setInstallChannel\(channel\)' \
216
+ android/src/main/java/com/getui/reactnativeido/GetuiIdoModule.java
217
+ ```
218
+
219
+ 预期:命令返回零状态,只匹配 `startSdk` 中的渠道设置调用。
220
+
221
+ - [ ] **步骤 4:编译 RN Android 插件**
222
+
223
+ 运行:
224
+
225
+ ```bash
226
+ cd example/AndroidDemo/android
227
+ ./gradlew :react-native-idosdk:compileDebugJavaWithJavac
228
+ ```
229
+
230
+ 预期:`BUILD SUCCESSFUL`,不存在 `GsManager`、`GsConfig` 或
231
+ `IGtcIdCallback` 的缺失类或缺失方法错误。
232
+
233
+ - [ ] **步骤 5:检查任务 2 的限定差异**
234
+
235
+ 运行:
236
+
237
+ ```bash
238
+ git diff --check -- \
239
+ android/src/main/java/com/getui/reactnativeido/GetuiIdoModule.java
240
+ git diff -- \
241
+ android/src/main/java/com/getui/reactnativeido/GetuiIdoModule.java
242
+ ```
243
+
244
+ 预期:未暂存差异只包含 `startSdk` 的渠道配置修改。本步骤不创建提交,也不改变
245
+ 该新文件原有的暂存状态。
246
+
247
+ ### 任务 3:验证 Manifest、依赖图和示例应用构建
248
+
249
+ **文件:**
250
+
251
+ - 验证:`example/AndroidDemo/android/app/build/intermediates/merged_manifests/debug/processDebugManifest/AndroidManifest.xml`
252
+ - 不修改生产文件;如果构建发现与本次迁移直接相关的问题,回到任务 1 或任务 2 修正并重新执行验证。
253
+
254
+ **接口:**
255
+
256
+ - 输入:任务 1 的 Maven 依赖与占位符、任务 2 的运行时配置
257
+ - 输出:可编译的 RN Android 插件和可构建的 Android Demo Debug APK
258
+
259
+ - [ ] **步骤 1:验证 Manifest 合并**
260
+
261
+ 运行:
262
+
263
+ ```bash
264
+ cd /Users/yangsihao/Downloads/AndroidStudioProjects/plugins/rn/ido/react-native-idosdk/example/AndroidDemo/android
265
+ ./gradlew :app:processDebugMainManifest
266
+ ```
267
+
268
+ 预期:`BUILD SUCCESSFUL`,宿主 App 能从个推仓库解析两个 AAR,且不存在
269
+ `GETUI_APPID` 或 `GT_INSTALL_CHANNEL` 的元数据值冲突。
270
+
271
+ - [ ] **步骤 2:检查合并后的 SDK 权限与组件**
272
+
273
+ 运行:
274
+
275
+ ```bash
276
+ MERGED_MANIFEST=$(find app/build/intermediates -path '*debug*' \
277
+ -name AndroidManifest.xml -print | head -n 1)
278
+ rg -n 'READ_PHONE_STATE|ACCESS_FINE_LOCATION|BLUETOOTH|GtcService|GtcProvider|usesCleartextTraffic' \
279
+ "$MERGED_MANIFEST"
280
+ ```
281
+
282
+ 预期:输出包含 `gsido` 默认敏感权限、`GtcService`、`GtcProvider` 和
283
+ `android:usesCleartextTraffic="true"`。
284
+
285
+ - [ ] **步骤 3:确认最终运行时依赖版本**
286
+
287
+ 运行:
288
+
289
+ ```bash
290
+ ./gradlew :app:dependencyInsight \
291
+ --configuration debugRuntimeClasspath \
292
+ --dependency com.getui:gsido
293
+ ./gradlew :app:dependencyInsight \
294
+ --configuration debugRuntimeClasspath \
295
+ --dependency com.getui:gtc
296
+ ```
297
+
298
+ 预期:两个命令均为 `BUILD SUCCESSFUL`,最终选择版本分别为
299
+ `1.4.14.0` 和 `3.3.3.0`,没有其他版本替换记录。
300
+
301
+ - [ ] **步骤 4:构建 Android Demo Debug APK**
302
+
303
+ 运行:
304
+
305
+ ```bash
306
+ ./gradlew :app:assembleDebug
307
+ ```
308
+
309
+ 预期:`BUILD SUCCESSFUL`,生成
310
+ `example/AndroidDemo/android/app/build/outputs/apk/debug/app-debug.apk`。
311
+
312
+ - [ ] **步骤 5:检查最终差异**
313
+
314
+ 运行:
315
+
316
+ ```bash
317
+ cd /Users/yangsihao/Downloads/AndroidStudioProjects/plugins/rn/ido/react-native-idosdk
318
+ git diff --check
319
+ git status --short
320
+ ```
321
+
322
+ 预期:`git diff --check` 无输出;`git status --short` 同时显示任务开始前已有的
323
+ 用户改动和本次 Maven 迁移改动。生产文件保持未提交,供用户与现有工作一起复核。