日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > 綜合技術 > 4.3、Android Studio突破64K方法限制

4.3、Android Studio突破64K方法限制

來源:程序員人生   發(fā)布時間:2016-07-07 19:00:38 閱讀次數:2669次

當利用代碼和庫代碼代碼超過64K限制時,初期版本的構建系統(tǒng)會出現以下提示:

Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536

最近版本的構建系統(tǒng)會出現以下提示,指出一樣的毛病:

trouble writing output: Too many field references: 131000; max is 65536. You may try using --multi-dex option.

其實都是相同的問題,只是提示方式不1樣。

關于64K限制
APK文件包括由DEX文件組成的可履行的字節(jié)碼文件,包括運行app編譯后的代碼。DEX文件有1個65535個方法的限制,如果超過這個限制,會在構建的時候報錯。這些方法包括Android Framework方法,庫方法和你自己寫的方法。由于65535=64*1024,所以這個限制又被稱為64K限制。

Android5.0之前的版本的多dex支持
在Android5.0之前,使用Dalvik運行時來履行利用代碼。默許情況下,在每一個APK中,Dalvik限制1個classes.dex 字節(jié)碼文件。為了突破這個限制,你可使用multidex support library。
注意:如果你的項目配置多dex的最小SDK版本為20乃至更低,Android Stuido將禁用Instant Run。

Android5.0及以上的版本的多dex支持
Android5.0(API level 21)或更高的版本,使用ART運行時在履行利用代碼。原生的支持從APK文件中直接載入多個dex文件。

避免64K限制
下面的方法可以幫助你減少dex方法的限制:
1、 查看你的app的直接的或間接的依賴:
盡可能減少沒必要要的依賴的援用。
2、 通過ProGuard來減少未使用的代碼:
通過配置ProGuard來啟用ProGuard,確保你在發(fā)布版本的時候啟用了緊縮。

用Gradle來配置你的利用的多dex
在Android SDK Build Toos 21.1或更高的版本中,Android的Gradle插件在你的構建配置中提供了multidex的支持。在嘗試配置你的multidex之前,確保你的Android SDK Build Tools和Android Support Repository升級到最新版本。

設置你的開發(fā)的app使用multidex,你需要對你的開發(fā)項目作出1些改動,遵守以下幾步:
1、 更改你的Gradle構建配置來啟用multidex。
2、 更改你的manifest來添加MultiDexApplication類。

更改你的build.gradle文件配置來添加支持庫并且啟用multidex輸出,以下:

android { compileSdkVersion 21 buildToolsVersion "21.1.0" defaultConfig { ... minSdkVersion 14 targetSdkVersion 21 ... // Enabling multidex support. multiDexEnabled true } ... }
dependencies { compile 'com.android.support:multidex:1.0.0' } 在AndroidManifest.xml中,添加MultiDexApplication類: <?xml version="1.0" encoding="utf⑻"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.multidex.myapplication"> <application ... android:name="android.support.multidex.MultiDexApplication"> ... </application> </manifest>

當你添加如上配置到你的app中,Android 構建工具生成1個主要的dex文件(classes.dex)和支持多個(classes2.dex,classes3.dex)。構建系統(tǒng)將它們打包到1個APK中發(fā)布。

多Dex支持庫的局限
Multidex支持庫有1些你需要了解的局限:
1、 在某種情況下可能會致使ANR問題,如果第2個dex文件過大的話。為了避免這個問題產生,你需要使用ProGuard來進行緊縮。
2、 在Android4.0極為初期版本中會遇到1些問題。
3、 利用的multidex配置會需要更大的內存分配,這在Dalvik虛擬機中會致使崩潰。
4、 其他復雜的情形。

優(yōu)化Multidex開發(fā)構建
Multidex配置會顯著的增加構建時間,由于構建系統(tǒng)必須來衡量將那些類放到住Dex文件中,那些類放到第2個dex文件中。這就意味著會拖慢開發(fā)進程。

為了有效減緩構建multidex輸出的時間,你需要使用Android 插件創(chuàng)建兩個variantion:
1個開發(fā)flavor和1個生產flavor。

以下:

android { productFlavors { // Define separate dev and prod product flavors. dev { // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin // to pre-dex each module and produce an APK that can be tested on // Android Lollipop without time consuming dex merging processes. minSdkVersion 21 } prod { // The actual minSdkVersion for the application. minSdkVersion 14 } } ... buildTypes { release { runProguard true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile 'com.android.support:multidex:1.0.0' }

本文作者:宋志輝
個人微博:點擊進入

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 在线免费看毛片 | 亚洲一区二区久久 | 草视频在线 | 国产精品一区二区在线 | 欧美一区二区在线视频 | 色骚网 | 在线视频91 | 一级黄色国产片 | 在线日韩视频 | 婷婷激情综合 | 亚洲午夜在线观看 | 在线视频这里只有精品 | 久久国产精品久久久久久 | 亚洲国产中文在线 | 国产传媒在线视频 | 九九九九九九精品 | 日本三级一区 | 毛片一区二区三区 | 久久久久久国产精品免费免费狐狸 | 欧美激情亚洲 | 欧美视频亚洲视频 | 在线免费观看黄色 | 欧美视频网址 | 一区二区国产在线 | 亚洲视频三区 | 直接看的av网站 | 精品一区二区在线播放 | 国产高清无密码一区二区三区 | 精品一区二区久久 | 亚洲视频在线免费观看 | 日韩精品中文字幕在线 | 成人精品在线观看 | 久久国产区 | 亚洲成人精品在线观看 | 日韩在线欧美 | 在线看一区二区 | 欧美日韩精品免费 | 国产做爰全过程免费的视频 | 91精品国产91久久久久 | 91在线网站 | 久久中文字幕一区二区 |