為什麼我們要注意method counts?
因為android 有65536的method count的限制
如果app的method數超過了65536就會無法build成功,
所以為了提早發現提早治療,所以我們必須常常觀察method數是否超出預期
從前並沒有方便的工具去觀察method數,不過最近觀察到github上有人提供了簡單的檢驗方式 https://github.com/mihaip/dex-method-counts
小弟依照了上面的方式稍微檢驗了我們家的app
其實已經快爆了XD
不過如果你檢驗了app後發現遇到跟我類似的情形的話,其實不太需要擔心
因為google 已經想到了這個,所以他提出了 https://developer.android.com/tools/building/multidex.html
multidex,只要利用multidex就可以解決掉這個問題
根據google 的文件我們首先必須import multidex的lib
接著必須在build.gradle裡加上multidexEnableddependencies { compile 'com.android.support:multidex:1.0.0' }
defaultConfig {
multiDexEnabled true
}
我們必須將原本的application改成繼承MultiDexApplicationpublic class MyApp extends MultiDexApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
不過注意一下,multidex還是有一些限制的,
例如必須要在版本14以上,還有可能會造成build的速度變慢之類的問題
最後,如果有寫test case 的人,而且有用AndroidJUnitRunner的話
可能會想問要怎麼在multidex版本上面正常測試
方法很簡單,首先必須在test的folder裡自建一個runner
這個runner必須必得要使用multidex.install
public class MyRunner extends AndroidJUnitRunner {
@Override
public void onCreate(Bundle arguments) {
MultiDex.install(getTargetContext());
super.onCreate(arguments);
}
}
接著必須在build.gradle裡加上testInstrumentationRunner
defaultConfig {
minSdkVersion 14
targetSdkVersion 22
testInstrumentationRunner "com.MyRunner"
multiDexEnabled true
}
沒有留言:
張貼留言