android - 如何查看flutter app的混淆结果?

标签 android flutter obfuscation minify

在原生 android 开发中,我可以检查我的 minifyEnabled 是否生效。

我使用了这个脚本(在 linux 中),它允许我提取 apk 并查看 java 文件以查看我的代码是否可读,或者是否已被混淆:

#! /bin/bash
d2j=/work/installs/dex2jar-2.0
jdgui=/work/installs/jd-gui-1.4.0.jar
apk_loc=/work/projects/my_app/build/app/outputs/app-release.apk

mkdir -p /work/tmp/dex
rm -rf /work/tmp/dex/*
cd /work/tmp
cp $apk_loc ./app-release.zip
unzip app-release.zip -d dex
cd dex

chmod +x $d2j/*.sh
$d2j/d2j-dex2jar.sh classes.dex

java -jar $jdgui classes-dex2jar.jar

如果我在 flutter apk 上使用这个脚本,我看不到任何包含与我的原始代码相关的任何文件。

最佳答案

Flutter的dart代码编译成native后嵌入到flutter.so运行时,所以反编译flutter不像java/kotlin的字节码那么容易 但是反编译 .so 文件是可能的。您可以使用 android ndk 中的工具链来执行您想要的反汇编类型

./android-ndk-r15b/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-objdump -T "flutter.so | less

但这只是给你一个 objdump。

关于android - 如何查看flutter app的混淆结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51342391/

相关文章:

flutter - 如何在 Flutter 中创建一个没有间距的半圆

Java混淆

java - 在 Java 中混淆 SSL 客户端 Hello v2 消息

android - 如何让 Cordova InAppBrowser 为用户提供一种在使用 Android 设备时关闭浏览器的方法?

android - IntelliJ 没有为 Android 显示 'Test Module' 选项

java - 更新 MediaStore 上的条目不适用于 Android Q/API29

html - 如何使用 Flutter Mailer Package 发送复杂的邮件

android - Firebase 谷歌身份验证不工作。 ApiException : 12500: , 空

javascript - 对属性名称使用字符串连接的javascript进行混淆处理的方法

android - 如何在android中创建透明 Activity ?