我正在为android开发一个开源(ASL2.0)应用程序:https://github.com/Centril/sleepfighter/tree/librarize
因此,从安全角度来看,不需要对代码进行模糊处理。 但我想知道在缩小.apk档案的大小方面是否会有一些好处。
我自己进行了测试,并且在不使用和使用混淆时分别从~2650 KB减少到2335 KB ...您有什么经历?
为了减少.apk大小,即使这是一个开源应用程序,我是否应该对这些版本进行模糊处理?
答案 0 :(得分:3)
在这种情况下,参数 for proguard是优化代码。显然里程会有所不同,但Proguard会尝试内联并崩溃。从理论上讲,这可以提高应用程序的性能。
关于尺寸 - 您的大部分APK足迹可能会导致我的资源,如图片,而不是代码。所以Proguard将无法在那里提供太多帮助,因为它似乎已经找到了。
反对 Proguard的一些论点是:
答案 1 :(得分:3)
没有确定的答案,但在我的实验中:
classes.dex的大小通常会减少30-90%。这主要取决于项目库的数量和大小。如果未使用这些库的大部件,ProGuard可以删除它们。 Scala应用程序往往是最极端的例子,它们具有大型Scala运行时库。
最终.apk文件的大小通常会减少4-70%。这主要取决于ProGuard未受影响的资源和资产的大小。
启用优化后,对于计算密集型应用程序(Dalvik字节码),应用程序的性能提高了20%。
在ART环境中,较小的代码库可以在将应用程序下载到设备后加快预编译速度。此外,ProGuard仍然可以将ART的性能提高多达30%。显然,ProGuard和ART的优化仍然在很大程度上是互补的。
Sam对于潜在缺点的回答是正确的。您从完美的代码开始(希望如此),因此任何其他处理步骤都会带来一些努力和风险。如果大小和性能是您的主要目标,您可以禁用混淆(-dontobfuscate),因此堆栈跟踪仍然可读。
您可以在presentations的Droidcon和其他会议中找到有关ProGuard for Android的更多详细信息。
(我是ProGuard的开发者)