可以参考下面的混淆配置。
然后将应用资源也添加到混淆配置中。包名参考index.kt中package字段对应的包名。
如:-keep class uni.UNIxxxxxxx.** { *; }
# 1. 保护 SDK 核心代码不被混淆
-keep class io.dcloud.** { *; }
# 2. 保护用户扩展/实现的类不被混淆
# 如果用户自定义了组件或实现了 SDK 的接口,需要保留这些类
-keep class * extends io.dcloud.uniapp.AsyncApiResult { *; }
-keep class * extends io.dcloud.uniapp.runtime.UniEvent { *; }
-keep class * extends io.dcloud.uniapp.runtime.UniElement { *; }
-keep class * extends io.dcloud.uts.UTSError { *; }
-keep interface * extends io.dcloud.uniapp.runtime.UniNativePage { *; }
-keep interface * extends io.dcloud.uniapp.runtime.UniNativeApp { *; }
-keep class * implements io.dcloud.uniapp.ui.component.IComponent { *; }
-keep class * implements io.dcloud.uniapp.ui.component.IContainerComponent { *; }
-keep class * extends io.dcloud.uniapp.appframe.AppConfig {*;}
# 3. 保护 JNI 本地方法
-keepclasseswithmembernames class * {
native <methods>;
}
# 4. 第三方依赖库防警告
# 如果 SDK 内部引用了这些库但宿主没有引入,防止编译报错
-dontwarn bolts.**
-dontwarn com.facebook.fresco.**
-keep class com.taobao.gcanvas.** { *; }
-keep class com.custom.smart.refresh.**{*;}
-keep class com.sample.breakpad.**{*;}
-keep class uts.sdk.modules.** {*;}
# 5. 保留 BuildConfig
# 由于包名不确定,使用通配符保留任意包名下的 BuildConfig 类
-keep class **.BuildConfig { *; }
# 6. 解决 java.lang.ClassValue 兼容性问题
# 某些库(如 Retrofit, OkHttp, Kotlin)可能会尝试访问 ClassValue,导致旧版本 Android 运行时报错
-dontwarn java.lang.ClassValue
-dontwarn java.lang.ProcessHandle
# 7. Kotlin/Kotlinx 防警告
# 避免因 SDK 内部使用的 Kotlin 类库导致宿主编译警告或错误的优化
-dontwarn kotlin.**
-dontwarn kotlinx.**
# glide
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
**[] $VALUES;
public *;
}
# 腾讯地图
-keep public class com.tencent.lbssearch.** {*;}
-keep public class com.tencent.map.** {*;}
-keep public class com.tencent.mapsdk.** {*;}
-keep public class com.tencent.tencentmap.**{*;}
-keep public class com.tencent.tmsbeacon.**{*;}
-keep public class com.tencent.tmsbeacon.**{*;}
-dontwarn com.qq.**
-dontwarn com.tencent.**
# 腾讯定位
-keepattributes *Annotation*
-keepclassmembers class ** {
public void on*Event(...);
}
-keep public class com.tencent.location.**{
public protected *;
}
-keepclasseswithmembernames class * {
native <methods>;
}
-keep class c.t.**{*;}
-keep class com.tencent.map.geolocation.**{*;}
-keep class com.tencent.tencentmap.lbssdk.service.*{*;}
-keep class com.tencent.tencentmap.lbssdk.officialservice.*{*;}
-dontwarn org.eclipse.jdt.annotation.**
-dontwarn c.t.**
-dontwarn android.location.Location
-dontwarn android.net.wifi.WifiManager
-dontnote ct.**
# 华夏乐游
-keep class com.alliance.ssp.ad.** { *; }
-keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken
-keep,allowobfuscation,allowshrinking class * extends com.google.gson.reflect.TypeToken
# 章鱼混淆
-dontwarn com.octopus.**
-keep class com.octopus.** {*;}
# 倍孜混淆
-dontwarn com.beizi.fusion.**
-dontwarn com.beizi.ad.**
-keep class com.beizi.fusion.** {*; }
-keep class com.beizi.ad.** {*; }
# 华夏乐游
-keep class com.yd.** { *; }
#
-dontwarn com.squareup.haha.guava.**
-dontwarn com.squareup.haha.perflib.**
-dontwarn com.squareup.haha.trove.**
-dontwarn com.squareup.leakcanary.**
-keep class com.squareup.haha.** { *; }
-keep class com.squareup.leakcanary.** { *; }
# Marshmallow removed Notification.setLatestEventInfo()
-dontwarn android.app.Notification
7 个回复
Ask小助手
问题根源
uni-app x 的 Android SDK 在 release 构建时默认打开了 R8 混淆,而框架内部大量使用了「字符串类名 + 反射」去查找并注册 UTS 插件、Flutter Engine、业务组件(
io.dcloud.uniapp.*、uts.sdk.modules.*等)。一旦混淆把类名缩短或移除,运行时就会找不到对应类,直接 catch 住异常后表现为「白屏」。debug 包默认
minifyEnabled false,所以不会触发这个问题。快速验证
把 aar 集成到客户的 app 后,在
app/proguard-rules.pro里加上:重新打包 release,白屏即可消失。
为什么这么多反射
后续建议
consumer-proguard-rules.pro打进您的 aar,这样客户无需手动配置。io.flutter.plugins.*等类。一句话总结
release 白屏就是混淆把反射需要的类名干掉了,给 uni-app x 及 Flutter 相关包名加上 keep 即可解决。
DCloud_Android_zl
可以参考下面的混淆配置。
然后将应用资源也添加到混淆配置中。包名参考index.kt中package字段对应的包名。
1***@qq.com (作者)
好的,我试试,目前日志那是swiper那报错
1***@qq.com (作者)
你好,我想请问下。
目前不白屏了,但是v-if, v-show好像在release版本下,不起作用,宿主应用是flutter。
DCloud_Android_zl
提供一个能复现的工程
2026-01-29 19:35
1***@qq.com (作者)
flutter工程可以嘛。
1***@qq.com (作者)
我这边好像出了点问题,我取消了混淆后,发现v-show还是不起作用。debug下倒是一切正常
y***@163.com
2222
要回复问题请先登录或注册
公告
更多>相关问题