应聘的做网站推广的,广州开发区科技企业加速器,电脑手机网站首页,网络营销推广方案案例当你执行 build apk 后#xff0c;flutter会默认进行混淆#xff0c;若你的应用中引用了第三方的sdk#xff0c;在debug模式下没问题#xff0c;但在release下可能就会出现各种各样的问题#xff0c;找不到某个类#xff0c;或者某个功能无法使用#xff0c;甚至直接崩溃…当你执行 build apk 后flutter会默认进行混淆若你的应用中引用了第三方的sdk在debug模式下没问题但在release下可能就会出现各种各样的问题找不到某个类或者某个功能无法使用甚至直接崩溃等此时就需要你去处理混淆的相关问题。
1.禁用混淆
flutter build apk --no-shrink在使用flutter命令进行打包时后面可以加上支持的cup架构如
flutter build apk --no-shrink --target-platform android-arm,android-arm64就只会打’armeabi-v7a’, ‘arm64-v8a’若想支持x84_64可以添加上android-x64。
如果想把各种架构分开打包可以添加上--split-per-abi最终打包结果会是这样
[project]/build/app/outputs/apk/release/app-armeabi-v7a-release.apk[project]/build/app/outputs/apk/release/app-arm64-v8a-release.apk[project]/build/app/outputs/apk/release/app-x86_64-release.apk
2.配置混淆规则
1).在android主工程app下添加 proguard-rules.pro 文件并配置混淆规则
-keep class io.flutter.plugin.** { *; }
......2).在app的build.gradle中引用proguard-rules.pro signingConfigs {release {storeFile file(test.jks)storePassword 123456keyAlias testkeyPassword 123456}}buildTypes {release {signingConfig signingConfigs.releaseminifyEnabled trueshrinkResources truezipAlignEnabled trueproguardFiles getDefaultProguardFile(proguard-android-optimize.txt), proguard-rules.pro}debug {signingConfig signingConfigs.release}}以上两种方法基本上可以解决打release后出现的各种问题。
但还有一种情况可能以上两种方法都无法解决即第三方sdk引用了drawable中的一个图片资源进行安全验证例如阿里百川的安全图片yw_1222_baichuan.jpg。这种情况即便你禁用混淆在打完release包后可能仍然会报安全验证失败找不到安全图片资源。
本人在最初的测试中将release包解压后看到资源文件列表如下 资源文件是被混淆了的禁用混淆没用但使用反编译工具查看图片资源基本都正常 这里我就黑人问号了图片资源路径没有任何问题但安装后为什么仍然报找不到资源猜测可能是打包过程中对资源进行了压缩或其它操作导致图片属性发生变化以至于sdk无法识别
最后的终极解决办法通过以上两种方式打release包后解压apk找到混淆后的jpg格式文件nQ.jpg需要确认这个就是安全图片删除之创建drawable文件夹将正常的yw_1222_baichuan.jpg复制进去重新修改为apk格式。 若此时直接安装会提示无签名文件需要你手动再次签名一下然后再安装会发现已可以成功运行并验证通过