Android分包的最簡單方式
前言
- 世上本來沒有分包,寫的代碼多了,便有了分包。
- 相信你肯定在項目中遇到過下面的問題:point_down:
Conversion to Dalvik format failed:Unable to execute dex: method ID not in [0, 0xffff]: 65536
- 或者這樣:point_down:
trouble writing output:Too many field references: 131000; max is 65536.You may try using --multi-dex option.
- 這兩種問題出現的原因都是因為你的項目中的方法數超過65536。前者出現在低版本的手機中,后者出現在較高的版本之中。這里的版本以5.0來區分。
如何解決
- 開源的Android引發了一股技術狂潮,各種開源項目層出不窮,在分包的實現上也是擁有多個框架,其中不乏一些大公司提供的。但是,我們還是使用google官方提供的方式比較方便。
- 如果你的minSdkVersion設置成21及更高,你只需要在build.gradle設置multiDexEnabled為true就可以了:
android { defaultConfig { ... minSdkVersion 21 targetSdkVersion 25 **multiDexEnabled true** } ... }
- 如果你的minSdkVersion設置成20及以下,除了上述步驟外你還需要添加依賴庫并進行相關配置:
- 引入依賴庫
android { defaultConfig { ... minSdkVersion 15 targetSdkVersion 25 **multiDexEnabled true** } ... } dependencies { **compile 'com.android.support:multidex:1.0.1'** }
- 配置方式一
- 先在manifest中設置MultiDexApplication為啟動的MultiDexApplication
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp"> <application **android:name="android.support.multidex.MultiDexApplication"** > ... </application> </manifest>
- 然后將自以的application繼承自MultiDexApplication
public class MyApplication extends MultiDexApplication { ... }
- 先在manifest中設置MultiDexApplication為啟動的MultiDexApplication
- 配置方式二
public class MyApplication extends SomeOtherApplication { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(context); Multidex.install(this); }}
</ul> </li>
- 上述配置方式一和配置方式二任選其一就可以了,這里還有個小細節,區分分包方式的是minSdkVersion而不是targetSdkVersion,博主剛開始的時候以為是targetSdkVersion,等到出現問題的時候,一直覺得google實在欺騙我的感情,后來查看官方文檔才發現原來是自己沒搞清。 </ul>
- 做完上述配置后,就可以愉快的分包了,是不是很簡單吖!!
- 最后貼出google官方關于分包的介紹,當然了,你需要KX上網。
- Configure Apps with Over 64K Methods
結尾
來自:http://www.jianshu.com/p/74445c9d52d1
- 引入依賴庫
本文由用戶 誠信合作 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!