我正在使用MobileFirst 7库作为原生Android应用程序,但已经发现它严重增加了我的Android应用程序(通过65,536 limit推送它)的dex方法计数。IBM MobileFirst 7依赖关系
每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库(和它的依赖),在高达39364种方法拉(可用DEX方法计数的60% )!
我想通Proguard的可能有助于降低使用MobileFirst的影响,但发现的例子proguard-project.txt具有以下指令:
-keep class com.google.** { *;}
据我了解,这有效地告诉Proguard的不删除任何Google Guava的方法。 MobileFirst还有其他一些库,但我从番石榴开始,因为它是最大的。
于是我决定看看多少MobileFirst如何利用番石榴库:
$ unzip ibmmobilefirstplatformfoundation-7.1.0.aar
$ jadx --output-dir temp/ classes.jar
$ grep -roh . -e 'com.google.common.*' | sort | uniq
其中发现零个引用任何番石榴库(授予的反编译器可能会丢失一些参考的),但它似乎排除了番石榴的依赖性?
compile(group: 'com.ibm.mobile.foundation',
name: 'ibmmobilefirstplatformfoundation',
version: '7.1.0.0',
ext: 'aar',
transitive: true) {
exclude group: 'com.google.guava', module: 'guava'
}
如果不是这种情况(但不包括番石榴将是一个问题),那么:
- 有没有可以用来仅保留,在MobileFirst是必要的方法更好Proguard的规则依赖呢?
- MobileFirst所依赖的其他大型图书馆是否也被排除?
谢谢!这有助于一吨! org.bouncycastle。*的任何机会都可以被排除(因为它是下一个大的依赖)?我相信它是在MobileFirst拥有的“org.bouncycastle:bcprov-jdk15on:1.48”依赖下提取的? – Travis