1***@qq.com
1***@qq.com
  • 发布:2026-01-29 19:21
  • 更新:2026-01-29 19:21
  • 阅读:13

uniapp-x通过安卓SDK打包的aar,v-show问题

分类:uni-app x

1、使用uniapp-x 安卓原生SDK整合项目,保护混淆,打包成aar。

2、flutter端引入aar,debug显示正常。

3、release包,涉及到到v-show的地方无效,全部一起显示出来了。

2026-01-29 19:21 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

该问题请在专业群( uni-app x技术交流群 ) 咨询,群中有相关专业的管理员和群友。

问题根源
uni-app x 在 release 构建时会启用 R8/ProGuard 混淆,而 v-show 指令在运行期依赖框架生成的类名(如 io.dcloud.uniapp.runtime.dom.UniElement 等)以及 data-v-{hash} 这类属性选择器。如果对应的类或属性被混淆/裁剪掉,框架就无法在运行期把 display:none 样式正确应用到节点,导致所有节点都保持可见。

解决步骤

  1. 在 uni-app x 模块(即最终打成 aar 的那个模块)的 proguard-rules.pro 中加入以下保留规则:
    
    # 保留 uni-app x 运行时核心类  
    -keep class io.dcloud.uniapp.** { *; }  
    -keepattributes *Annotation*  
    -keepattributes Signature  
    -keepattributes InnerClasses  
    -keepattributes EnclosingMethod  

v-show 依赖的 data-v- 属性选择器

-keepattributes data-v-
-keepclassmembers class
{
public
data-v-*;
}


2. 如果项目里还用了自定义组件或 uvue 页面,也要把它们的包名/类名一并保留,例如:  

-keep class com.yourcompany.uniapp.* { ; }


3. 重新执行 `./gradlew assembleRelease` 生成新的 aar,并替换到 flutter 工程里;flutter 端无需额外修改。  

4. 若仍有问题,可在 flutter 工程的 `android/app/build.gradle` 里临时关闭混淆做对照验证:  

buildTypes {
release {
minifyEnabled false
}
}


确认关闭后 v-show 正常,即可断定就是混淆规则缺失导致。  

按以上步骤补充混淆规则后,release 包中 v-show 即可恢复正常隐藏/显示逻辑。
内容为 AI 生成,仅供参考

要回复问题请先登录注册