我已将MobileFirst 7库用于原生Android应用程序但发现严重会增加我的Android应用程序的dex方法计数(将其推送到65,536 limit)。
根据Adding the IBM MobileFirst Platform Foundation SDK to a new or existing application with Android Studio文章,我将以下内容添加到build.gradle
:
compile group: 'com.ibm.mobile.foundation',
name: 'ibmmobilefirstplatformfoundation',
version: '7.1.0.0',
ext: 'aar',
transitive: true
根据methodscount.com,MobileFirst库(以及它的依赖项)引入了惊人的39,364种方法(60%的可用dex方法计数)!
我认为Proguard可能有助于减少使用MobileFirst的影响,但发现示例proguard-project.txt具有以下指令:
-keep class com.google.** { *;}
据我了解,这有效地告诉Proguard不要删除任何Google Guava方法。 MobileFirst还有其他库,但我从Guava开始,因为它是最大的。
然后我决定调查一下MobileFirst使用Guava库的程度:
$ unzip ibmmobilefirstplatformfoundation-7.1.0.aar
$ jadx --output-dir temp/ classes.jar
$ grep -roh . -e 'com.google.common.*' | sort | uniq
哪个发现对任何Guava库的零引用(授予反编译器可能缺少一些引用)但看起来好像可以排除Guava依赖?
compile(group: 'com.ibm.mobile.foundation',
name: 'ibmmobilefirstplatformfoundation',
version: '7.1.0.0',
ext: 'aar',
transitive: true) {
exclude group: 'com.google.guava', module: 'guava'
}
如果情况并非如此(并且不包括番石榴会成为问题)那么:
答案 0 :(得分:1)
如果您没有使用JSONStore功能,则可以安全地排除以下内容: