【问题标题】:Excluding manifest file from obfuscation从混淆中排除清单文件
【发布时间】:2015-12-02 15:34:48
【问题描述】:

有没有办法防止 AndroidManifest.xml 被 DexGuard 混淆?似乎 MobileIron 在混淆我们的 Android 应用程序清单方面存在一些问题。它可以很好地处理“普通”应用程序,但会在混淆应用程序的清单中引发错误。

编辑:

我刚刚注意到混淆应用的xmlstrings 表缺少一堆字符串:

aapt d xmlstrings c:\dev\app_obf.apk AndroidManifest.xml

String pool of 119 unique UTF-16 non-sorted strings, 119 entries and 0 styles using 5112 bytes:
String #0: 
String #1: 
String #2: 
String #3: 
String #4: name
String #5: 
.
.
String #18: versionCode
.
.
(up to String #25, then it is the same as in plain app)

而普通应用的列表如下:

aapt d xmlstrings c:\dev\app.apk AndroidManifest.xml

String pool of 119 unique UTF-16 non-sorted strings, 119 entries and 0 styles using 6744 bytes:
String #0: versionCode
String #1: versionName
String #2: minSdkVersion
String #3: targetSdkVersion
String #4: name
String #5: required
String #6: hardwareAccelerated
String #7: icon
String #8: label
String #9: debuggable
String #10: value
...

这会起作用还是正常行为?

应用程序的普通版本和混淆版本都可以在设备上正常运行。

【问题讨论】:

    标签: android android-manifest dexguard mobileiron


    【解决方案1】:

    如果有人还在为此苦苦挣扎,这条线解决了我的问题:

    -keepresourcexmlattributenames manifest/**
    

    【讨论】:

    • 谢谢!我遇到了一个问题,pro-guard 搞砸了我的意图过滤器自动验证配置(应用程序链接没有直接由应用程序处理),这解决了它。不知道 proguard 把脏手伸进了 Manifest!
    【解决方案2】:

    将以下内容添加到您的 DexGuard 配置 --keepresourcefiles AndroidManifest.xml 但是据我所知,这是在默认的 DexGuard 配置中。

    也许是 MobileIron 不喜欢的其他东西?可能值得发布您的 DexGuard 配置或使用 MobileIron 提出支持问题。

    【讨论】:

    • 不幸的是,DexGuard 6.1 抛出一个错误说Unknown option '-keepresourcefiles'
    • 抱歉,我使用的是 DexGuard 7 - 当然,资源混淆是新功能。
    • 今天试用了 DexGuard Enterprise 7.0.32 和 -keepresourcefiles AndroidManifest.xml-keepresourcexmlattributenames manifest/* 选项,结果与 6 相同。另一方面,Proguard 保持 xmlstrings 表不变。诡异的。可能我们将不得不与 DexGuard 支持人员取得联系。
    猜你喜欢
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多