ProGuard - 如何正确使用 Android ?要保留哪些 类 和图书馆?
ProGuard - How to use correctly for Android ? Which classes and libraries to keep?
我正在努力提高我对 ProGuard 在 Android 构建中的使用的理解。我不太确定要准确保留(不混淆)什么以及要混淆什么。
我的应用程序中使用了几个库,下面列出了其中的一些
com.android.support:appcompat
com.android.support:design
io.reactivex:rxandroid
io.reactivex:rxjava
com.jakewharton.rxbinding
com.trello:rxlifecycle
问题一:
我应该混淆上面的库吗?它们已经是开源的.. 保留所有支持库使用 proguard 规则不是明智的吗:
keep class android.support.** { *; }
我可以用类似的方式使用 io.reactivex 和 jakewharton 库
问题二
除了支持和外部库,我还有特定于应用程序的 classes,为此应用程序编码。是否可以保留 AndroidManifest.xml 中提到的 class 名称,特别是它们的 public 成员,并混淆其余代码。
如果我遗漏了什么或者我的理解不正确,请告诉我。只是重复一遍,这不是关于如何在技术上做到这一点的问题,而是更多关于 obfuscation/optimization/ shrink 包含什么和排除什么的问题。更具体地说,它背后的原因....肯定是浓缩咖啡构建后测试。
Question 1: Should I obfuscate above libraries?
是的。如果您添加 -keep <library>
规则,那么整个库将包含在您的 APK 中,这会使它膨胀并可能导致问题,例如使您的应用程序超过 64k 方法限制并需要 Multidex。应用库提供的 ProGuard 规则总是一个好主意。您通常可以在库源代码或 https://github.com/krschultz/android-proguard-snippets 等网站中找到 .pro
文件。
Question 2: Is it ok to keep the class names which are mentioned in AndroidManifest.xml and specifically their public members, and let obfuscate rest of the code.
Android 插件已经为您做到了。该插件扫描所有 类 需要保留其名称(例如 Activities、Services、BroadcastReceivers、Views 等)并且不会混淆它们。这包括您在 AndroidManifest.xml
.
中声明的所有内容
我正在努力提高我对 ProGuard 在 Android 构建中的使用的理解。我不太确定要准确保留(不混淆)什么以及要混淆什么。
我的应用程序中使用了几个库,下面列出了其中的一些
com.android.support:appcompat
com.android.support:design
io.reactivex:rxandroid
io.reactivex:rxjava
com.jakewharton.rxbinding
com.trello:rxlifecycle
问题一:
我应该混淆上面的库吗?它们已经是开源的.. 保留所有支持库使用 proguard 规则不是明智的吗:
keep class android.support.** { *; }
我可以用类似的方式使用 io.reactivex 和 jakewharton 库
问题二
除了支持和外部库,我还有特定于应用程序的 classes,为此应用程序编码。是否可以保留 AndroidManifest.xml 中提到的 class 名称,特别是它们的 public 成员,并混淆其余代码。
如果我遗漏了什么或者我的理解不正确,请告诉我。只是重复一遍,这不是关于如何在技术上做到这一点的问题,而是更多关于 obfuscation/optimization/ shrink 包含什么和排除什么的问题。更具体地说,它背后的原因....肯定是浓缩咖啡构建后测试。
Question 1: Should I obfuscate above libraries?
是的。如果您添加 -keep <library>
规则,那么整个库将包含在您的 APK 中,这会使它膨胀并可能导致问题,例如使您的应用程序超过 64k 方法限制并需要 Multidex。应用库提供的 ProGuard 规则总是一个好主意。您通常可以在库源代码或 https://github.com/krschultz/android-proguard-snippets 等网站中找到 .pro
文件。
Question 2: Is it ok to keep the class names which are mentioned in AndroidManifest.xml and specifically their public members, and let obfuscate rest of the code.
Android 插件已经为您做到了。该插件扫描所有 类 需要保留其名称(例如 Activities、Services、BroadcastReceivers、Views 等)并且不会混淆它们。这包括您在 AndroidManifest.xml
.