2016-09-28 78 views
4

我正在使用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所依赖的其他大型图书馆是否也被排除?

回答

1

如果你不使用JSONStore功能,您可以安全地排除下列:

  • guava.jar
  • 公地codec.jar
  • jackson- *
+0

谢谢!这有助于一吨! org.bouncycastle。*的任何机会都可以被排除(因为它是下一个大的依赖)?我相信它是在MobileFirst拥有的“org.bouncycastle:bcprov-jdk15on:1.48”依赖下提取的? – Travis