android – IBM MobileFirst 7依赖项

我正在将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'
}

如果不是这种情况(并且不包括番石榴会成为问题)那么:

>是否有更好的Proguard规则可用于仅保留MobileFirst依赖项中必需的方法?
>还可以排除MobileFirst所依赖的其他大型图书馆吗?

最佳答案 如果您未使用JSONStore功能,则可以安全地排除以下内容:

> guava.jar
> commons-codec.jar
>杰克逊 – *

点赞