local extra_gen_snapshot_options_or_none=""
if [[ -n "$EXTRA_GEN_SNAPSHOT_OPTIONS" ]]; then
extra_gen_snapshot_options_or_none="--extra-gen-snapshot-options=$EXTRA_GEN_SNAPSHOT_OPTIONS"
fi
要应用您的更改,请在[FlutterRoot]中运行
git commit -am "Enable obfuscation on iOS"
flutter
8条答案
按热度按时间9avjhtql1#
要在Flutter中混淆Dart代码:
更新您的
pubspec.yaml
文件以包含flutter_dotenv
和flutter_obfuscate
软件包:在Flutter项目的根目录下创建一个.env文件,并定义以下环境变量:
在
main.dart
文件中,导入flutter_dotenv
包并修改main函数,如下所示:使用--release标志构建Flutter项目以生成发布构建:>
flutter build apk --release
构建过程完成后,运行以下命令以混淆Dart代码:>
flutter pub run flutter_obfuscate
混淆后的代码将被放置在
lib_obfuscated
目录中。blmhpbnm2#
需要混淆-flutter应用程序知道它的函数名称,可以使用Dart的StackTrace类显示。有under-tested支持混淆。要启用此功能,请执行以下操作:
Android版:
添加到文件
[ProjectRoot]/android/gradle.properties
:iOS版本:
首先,编辑
[FlutterRoot]/packages/flutter_tools/bin/xcode_backend.sh
:定位
build aot
调用,并向其添加标志,定义为:
要应用您的更改,请在[FlutterRoot]中运行
(在提交后运行“flutter”将重建flutter工具。
接下来,在项目中,将以下内容添加到
[ProjectRoot]/ios/Flutter/Release.xcconfig
文件中:同样,模糊处理没有很好测试,正如@mraleph所提到的。*
rmbxnbpk3#
AppBundle(推荐):
APK:
PS:关于拆分:
默认情况下,脂肪apk包含手臂v7,手臂v8和x64,这增加了apk大小,这是你不想的。所以,当你拆分它时,你有单独的二进制文件,你可以上传到商店,从而减少用户需要下载的apk的大小。
irtuqstp4#
以上所有答案都是正确的,但没有一个答案告诉您在生成构建时需要添加相对路径或目录路径。
使用相对路径示例:
使用文件夹路径示例:
上面的命令将在给定的项目目录中生成一个构建,它将在相应的命令上创建一个名为
ProjectFolderName
或'debug'的新文件夹,在那里您可以找到发布构建。qjp7pelc5#
https://flutter.dev/docs/deployment/obfuscate参考此链接了解更多信息
注意:Flutter的代码混淆,从Flutter 1.16.2开始支持。
p8ekf7hl6#
对于Android这个过程在https://flutter.dev/docs/deployment/obfuscate的文档中非常清楚。例如:
将创建几个文件,例如
misc/mapping/1.0.0/app.android-arm64.symbols
(您可能希望将其保留在VCS中)对于iOS,由于您经常使用Xcode菜单,因此不太明显:
Product > Archive
1.为iOS制作一个模糊的构建
它创建文件
misc/mapping/1.0.0/app.ios-arm64.symbols
1.这还将修改
ios/Flutter/Generated.xcconfig
以包括1.使用Xcode菜单:
Product > Archive
将使用Release.xcconfig
,其中包括更新的Generated.xcconfig
所以你上传的Archive现在将被混淆(你不需要对
Release.xcconfig
进行更改)另见-https://github.com/flutter/flutter/issues/64626#issuecomment-736081173
nxowjjhe7#
对于iOS编辑
ios/Flutter/Release.xcconfig
此文件应包含以下内容
如果选中
Generated.xcconfig
,则有一行DART_OBFUSCATION=false
因此,在
Release.xcconfig
文件的末尾添加相反的内容以覆盖:您也可以选择在此处将
TREE_SHAKE_ICONS=true
添加到树型摇动图标中ipakzgxi8#
目前,模糊处理并没有通过flutter CLI直接暴露。
您可以尝试像这样显式地将参数传递给
gen_snapshot
:注意:模糊处理支持没有经过很好的测试,目前可能无法工作。