D8 编译失败在uni-app中加入阿里云 APM 后

D8 编译失败在uni-app中加入阿里云 APM 后

操作步骤:

  • 项目集成了 com.aliyun.ams:alicloud-apm

预期结果:

  • 编译 混淆通过

实际结果:

  • 报错

bug描述:

  • Cannot constrain type: @Nullable android.content.Intent {android.os.Parcelable, java.lang.Cloneable} for value: v29 by constraint: INT
  • Compilation failed to complete, position: Lcom/dmcbig/mediapicker/PickerActivity;->onCreate(Landroid/os/Bundle;)V, origin: /Users/tt/.gradle/caches/8.13/transforms/17d9d65b07c1599baff04d5d7e359581/transformed/jetified-DCUniMPSDK-V2-release-runtime.jar:com/dmcbig/mediapicker/PickerActivity.class

| 信息类别   | 内容               |
|------------|-------------------|
| 产品分类   | uni小程序SDK      |
| 手机系统   | Android           |
| 系统版本   | Android 16        |
| 手机厂商   | 华为              |
| 手机型号   | Android studio    |
| 页面类型   | vue               |
| SDK版本号  | 4.75              |
| 问题描述   | Cannot constrain type: [@Nullable](/user/Nullable) android.content.Intent {android.os.Parcelable, java.lang.Cloneable} for value: v29 by constraint: INT <br> Compilation failed to complete, position: Lcom/dmcbig/mediapicker/PickerActivity;-&gt;onCreate(Landroid/os/Bundle;)V, origin: /Users/tt/.gradle/caches/8.13/transforms/17d9d65b07c1599baff04d5d7e359581/transformed/jetified-DCUniMPSDK-V2-release-runtime.jar:com/dmcbig/mediapicker/PickerActivity.class |

更多关于D8 编译失败在uni-app中加入阿里云 APM 后的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于D8 编译失败在uni-app中加入阿里云 APM 后的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这个编译错误是由于阿里云APM的依赖与uni-app现有的依赖(特别是DCUniMPSDK)在类型约束上产生了冲突。错误信息显示在PickerActivityonCreate方法中,系统无法将Intent类型约束为INT类型。

建议按以下步骤排查:

  1. 检查依赖版本兼容性:确认使用的阿里云APM版本与uni-app SDK版本兼容。可尝试降低APM版本或升级uni-app SDK至最新稳定版。

  2. 检查混淆配置:在proguard-rules.pro中添加以下规则排除冲突类:

-keep class com.dmcbig.mediapicker.** { *; }
-dontwarn com.dmcbig.mediapicker.**
  1. 排查依赖冲突:执行./gradlew :app:dependencies查看依赖树,检查是否存在多个不同版本的Android支持库或重复的Parcelable实现。

  2. 尝试禁用D8优化:在gradle.properties中添加:

android.enableD8.desugaring=false
回到顶部