cordova-plugin-buildinfo仅Android .AAB构建返回异常数据求助
解决方案
1. 修复ProGuard/R8混淆规则
Cordova Android 11默认启用R8混淆优化,Release构建时可能会移除或混淆BuildInfo相关代码,导致JS无法获取有效数据。
- 在
platforms/android/app/proguard-rules.pro中添加保留规则,根据你使用的BuildInfo插件调整包名:# 保留cordova-plugin-buildinfo核心类 -keep class org.apache.cordova.buildinfo.BuildInfo { *; } -keep class org.apache.cordova.buildinfo.BuildInfoPlugin { *; } # 若使用自定义BuildInfo实现,保留对应类 -keep class com.your.app.package.BuildInfo { *; } - 如果不确定插件包名,可临时添加通用规则测试:
-keep class org.apache.cordova.** { *; }
2. 校验buildConfig.xml的Release配置
Cordova Android 11对buildConfig的解析逻辑有更新,需确保Release环境的变量配置完整:
- 打开
buildConfig.xml,检查是否存在Release节点且变量值正确:<platform name="android"> <release> <variant>release</variant> <config> <property name="versionCode" value="XXX" /> <property name="versionName" value="X.X.X" /> <!-- 其他BuildInfo依赖的字段需逐一配置 --> </config> </release> </platform> - 执行
cordova build --release android --buildConfig --verbose查看构建日志,确认变量是否成功注入到BuildConfig中。
3. 更新或适配BuildInfo插件
第三方BuildInfo插件可能未适配Cordova Android 11,需针对性处理:
- 卸载旧插件并安装最新兼容版本:
cordova plugin remove cordova-plugin-buildinfo cordova plugin add cordova-plugin-buildinfo@latest - 若最新版本仍异常,手动修改插件Android代码:
打开platforms/android/app/src/main/java/org/apache/cordova/buildinfo/BuildInfo.java,为核心方法和类添加@Keep注解,避免被混淆移除:import androidx.annotation.Keep; @Keep public class BuildInfo extends CordovaPlugin { @Override @Keep public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { // 保留原有业务逻辑 } }
4. 临时关闭混淆排查问题
若以上方案无效,可暂时关闭Release构建的混淆功能,确认是否为混淆导致:
- 打开
platforms/android/app/build.gradle,修改Release构建类型配置:buildTypes { release { minifyEnabled false shrinkResources false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } - 重新构建Release AAB并测试,若数据恢复正常,则聚焦于调整混淆规则。
内容的提问来源于stack exchange,提问作者Bryan Henrique Cruz
相关产品推荐
相关产品推荐

