【问题标题】:Proguard setting in eclipseeclipse中的Proguard设置
【发布时间】:2015-03-12 11:19:33
【问题描述】:
有什么区别
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt
和
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
当我使用第一个时,它会因 facebook 登录而崩溃,但当我使用第二个时,它不会崩溃(在发布版本中)。
但大小会在第二秒内从 4 MB 增加到 5 MB。
我正在使用 API 21。
Facebook sdk 3.0
【问题讨论】:
标签:
android
eclipse
proguard
facebook-sdk-3.0
【解决方案1】:
没有看到 proguard 文件的内容,我只能猜测,但我认为可以公平地假设 proguard-project.txt 包含保留与 Facebook SDK 相关的类名/方法/成员/等的定义。
它在第一个设置中崩溃的原因是因为它不包含您项目的 proguard 设置,这意味着它比第二个设置(包括 Facebook SDK)缩小了更多。然后,在发布时,Facebook SDK 可能正在通过反射或类似的方式加载类/调用方法,并且由于找不到已缩小的方法/类名而崩溃。
这也是为什么第二个设置会导致更大的二进制文件 - 缩小意味着更小的二进制文件,因为每个类都从“SomeLongClassName”减少到“a”。缩小得越多,生成的二进制文件就越小(效率更高)。
缩小是一种优化,不应该 (IMO) 比代码一致性和架构具有更高的优先级。如果您需要从缩小中排除几个项目(您的 ProGuard 可能使用 Facebook SDK 执行此操作),那么您应该这样做,而且您不必担心生成的 APK 大小。