You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Salesforce Mobile SDK至11.0.1后遇编译及符号解析问题求助

解决Salesforce Mobile SDK 11.0.1升级后PackageList无法解析的问题

问题背景

升级Salesforce Mobile SDK从10.2到11.0.1版本,新建对应SDK版本的项目并引入原有依赖时,先遇到以下JSON解析错误:

java.lang.Exception: Calling [myProject/node_modules/@react-native-community/cli/build/bin.js, config] finished with an exception. Error message: groovy.json.JsonException: Unable to determine the current character, it is not a string, number, array, or object

删除build.gradle(app)和settings.gradle中的以下配置后,上述错误解决,但MainApplication.java出现新错误:Cannot resolve the symbol 'PackageList',删除重装node_modules无效。

apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)

解决方案

方案1:恢复自动链接配置,修复JSON解析错误

删除上述gradle配置会导致React Native自动链接脚本无法生成PackageList类,核心是修复最初的JSON解析问题:

  • 检查项目根目录package.json的语法:排查是否存在逗号遗漏、引号不匹配等JSON格式错误,这是触发groovy解析失败的常见原因。
  • 直接运行CLI命令定位错误:在项目根目录终端执行node node_modules/@react-native-community/cli/build/bin.js config,查看具体的JSON报错位置,定位到有问题的依赖配置。
  • 清理缓存并重建依赖:
    npx react-native clean
    npm install
    

方案2:手动创建PackageList类

若暂时无法修复自动链接的JSON问题,可手动生成PackageList:

  1. 在android/app/src/main/java/[你的项目包名]/目录下新建PackageList.java文件
  2. 写入以下模板代码(替换包名和所需依赖包):
package com.yourprojectname;

import android.app.Application;
import java.util.List;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
// 导入Salesforce及其他你用到的React Native依赖包
import com.salesforce.androidsdk.reactnative.ui.RNSalesforceReactPackage;

public class PackageList {
  public List<ReactPackage> getPackages(Application application) {
    return List.of(
      new MainReactPackage(),
      new RNSalesforceReactPackage()
      // 按需添加其他ReactPackage实现类
    );
  }
}
  1. 确保MainApplication.java中引用的PackageList路径正确,例如:
import com.yourprojectname.PackageList;

public class MainApplication extends Application implements ReactApplication {
  private final ReactNativeHost mReactNativeHost =
      new ReactNativeHost(this) {
        @Override
        public boolean getUseDeveloperSupport() {
          return BuildConfig.DEBUG;
        }

        @Override
        protected List<ReactPackage> getPackages() {
          List<ReactPackage> packages = new PackageList(this).getPackages();
          // 可在此添加自定义包
          return packages;
        }

        @Override
        protected String getJSMainModuleName() {
          return "index";
        }
      };

  // 其余代码保持不变
}

方案3:检查Salesforce SDK集成配置

确认项目符合Salesforce Mobile SDK 11.0.1的集成要求:

  • 根目录build.gradle中配置正确的仓库:
allprojects {
    repositories {
        // 其他已有仓库
        maven { url 'https://salesforcemobiletools.jfrog.io/artifactory/repo' }
    }
}
  • app模块build.gradle中依赖版本正确:
dependencies {
    // 其他依赖
    implementation 'com.salesforce.mobilesdk:react-native:11.0.1'
}

内容的提问来源于stack exchange,提问作者Shivam Jaiswal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 21:38:37