Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-如何检查Proguard模糊处理是否有效?_Android_Proguard_Obfuscation - Fatal编程技术网

Android-如何检查Proguard模糊处理是否有效?

Android-如何检查Proguard模糊处理是否有效?,android,proguard,obfuscation,Android,Proguard,Obfuscation,我已经混淆了我的apk,但是文件大小只是从12MB减少到了10.5MB 这只是一个相对较小的减少的原因可能是因为我的应用程序使用了几个大型库,但是有没有办法检查已经执行的混淆级别 以防万一,这是我的proguard-project.txt文件 # To enable ProGuard in your project, edit project.properties # to define the proguard.config property as described in that file

我已经混淆了我的apk,但是文件大小只是从12MB减少到了10.5MB

这只是一个相对较小的减少的原因可能是因为我的应用程序使用了几个大型库,但是有没有办法检查已经执行的混淆级别

以防万一,这是我的proguard-project.txt文件

# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

-dontwarn twitter4j.**

…我正在使用的库是
android-support-v4.jar
acra-4.5.0.jar
twitter4j-core-4.0.2.jar

,在您的项目目录中,您将找到一个
Proguard
文件夹,其中您将看到四个文本文件:

dump.txt

描述.apk文件中所有类文件的内部结构

mapping.txt

列出原始和模糊化的类、方法和字段名称之间的映射。当您收到来自的错误报告时,此文件非常重要 发布版本,因为它将模糊的堆栈跟踪转换回 原始类、方法和成员名称。请参见解码模糊堆栈跟踪 了解更多信息

seeds.txt

列出未混淆的类和成员

usage.txt

列出从.apk中删除的代码

希望这有帮助

我可以用什么方法检查已执行的混淆级别

您可能可以使用标志
-optimizationpasss N

指定要执行的优化过程数。默认情况下,执行单个过程。多次通过可能会导致进一步的改进。如果优化通过后未发现任何改进,则优化结束。仅在优化时适用


这里可能有一种更直观的检查方法。 在Android Studio的最新版本中,它附带了APK分析器,允许用户探索APK文件中的内容,并且可以方便地检查您的类是否已被混淆

下图显示包和方法名称都已模糊

工作流程:

  • seeds.txt
    -Proguard保存的内容列表。这些是入口点,它们是节点。例如,对于裸java,它是一个
    main
    函数和其他依赖项
  • usage.txt
    -Proguard不保留的内容列表
  • mapping.txt
    -以
    old\u name->new\u name
    格式提供有关新旧命名的信息。它可以通过
    retrace
    proguardui
  • dump.txt
    -描述Proguard放入结果存档的所有内容
你可以找到outpun

<module_name>/build/outputs/mapping/<buildType>/
/build/outputs/mapping//
您可以使用
分析APK
工具。您可以在其中查看Think
.class
文件,添加一个Proguard映射文件,显示已删除的节点,显示已删除的名称


ProGuard仅收缩/优化您未创建的零件-保留选项。当使用宽保留规则(以
**{*}
结尾)时,收缩/优化结果会迅速减少

我可以从代码片段中看出,您自己并没有创建这样广泛的保留选项,但它们可能是ProGuard消费者规则的一部分,而ProGuard消费者规则是某些依赖项的一部分。通过在ProGuard配置文件中添加以下内容,可以打印所有这些-保留选项:
-printconfiguration fullconfig.txt
。这将创建一个文件fullconfig.txt,其中列出了所有保留选项,包括依赖项

如果您的某个依赖项包含太多的保留选项,您可以通过创建使用者规则过滤器来选择忽略这些选项。这将需要您自己为依赖项创建-keep选项


最近发布了一个工具,用于检查jar/apk的哪些部分被保留,从而不会缩小/优化。您需要提供-keep选项并上传jar/apk,然后您可以直观地看到项目的哪些部分没有使用ProGuard处理。此工具称为。我建议您复制/粘贴fullconfig.txt文件的内容,这样您就可以很容易地看到ProGuard未触及的部分。

感谢您的支持。你可以在Android Studio->Buld->Analyze APK中找到这个工具……这些文件保存在/build/outputs/mapping/release/