私はMobileFirst 7ライブラリをネイティブAndroidアプリケーション用に使用していますが、が深刻です。は私のAndroidアプリケーションのdexメソッドの数を増やします(65,536 limitを押す)。 Adding the IBM MobileFirst Platform Foundation SDK to a new or existing application with Android Studio記事毎のIBM MobileFirst 7依存関係
が、私は私の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.** { *;}
私はそれを理解するように、これは効果的Google Guavaのいずれかを削除しないようにProGuardのを伝えますメソッド。 MobileFirstが引き込む他のライブラリがありますが、最大であったため、私はGuavaで始まりました。
$ unzip ibmmobilefirstplatformfoundation-7.1.0.aar
$ jadx --output-dir temp/ classes.jar
$ grep -roh . -e 'com.google.common.*' | sort | uniq
(逆コンパイラは参照の一部が欠落することができる許可された)が、それをグアバライブラリのいずれかにゼロの参照が見つかりました:
は、その後、私はずっとMobileFirstはグアバライブラリを利用する方法を検討することにしました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'
}
が一致しない場合は(とグアバが問題になり除く)、その後:
- しかMobileFirstに必要な方法を維持するために使用することができ、より良いProGuardのルールがあります依存関係?
- MobileFirstが依存する他の大きなライブラリも除外できますか?
ありがとう!それはトンを助ける! org.bouncycastle。*のいずれかが(次の大きな依存関係のように)除外される可能性があります。 MobileFirstが持っている "org.bouncycastle:bcprov-jdk15on:1.48"の依存関係の下でそれが引き込まれていると思いますか? – Travis