日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

方法数超了65535 无法安装的解决方案

發布時間:2024/4/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 方法数超了65535 无法安装的解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

作為一名Android開發者,相信你對Android方法數不能超過65K的限制應該有所耳聞,隨著應用程序功能不斷的豐富,總有一天你會遇到一個異常


解決這個問題很簡單,我們只需要在Project.proterty中配置一句話就Ok啦,dex.force.jumbo=true 。

是的,加入了這句話,確實可以讓你的應用通過編譯,但是在一些2.3系統的機器上很容易出現?INSTALL_FAILED_DEXOPT異常


至于適配2.3的系統誰還去做這種事。。。。

錯誤原因:(有些傻逼面試官會問的)

1、Android系統中,一個Dex文件中存儲方法id用的是short類型數據,所以導致你的dex中方法不能超過65k
2、在2.3系統之前,虛擬機內存只分配了5M

這還涉及兩種編程方式的學習:

一種 是以微信為代表的,將一些功能做成插件,動態加載,

另一種 方案是以facebook為代表的分包方案,將一個apk中的dex文件分割成多個dex文件,然后動態的去加載dex文件。

其實這兩種方案的核心思想是一樣的,插件是把未來要開發的新功能做成apk和dex動態加載,而分包方案是將已經完成的功能分成多個dex文件動態加載,其實我個人覺得插件方案比分包方案更好的解決了65k的問題,因為插件方案不僅能夠解決65k問題,還能讓我們的應用體積減小,而分包只能解決65k的問題。

插件發有個人寫的可以學習一下:http://blog.csdn.net/yuanzeyao/article/details/38565345?.?

分包發極其復雜Android分包MultiDex原理詳解

2.3版本之前dalvik虛擬機的內存只有5M,所以無論是插件方案還是分包方案在某些手機上還是會遇到該問題。

畢竟我們僅僅是減少了每個dex中包的數量,但是方法總數是沒有減少的,所以解決此問題的根本方法就是修改虛擬機內存至8M,這個需求在Java層是無法實現,但是可以在c層實現,具體實現流程可以參考開源項目:
https://github.com/viilaismonster/LinearAllocFix.git

開源項目的使用方法:??Hack Dalvik VM解決Android 2.3 DEX/LinearAllocHdr超限



總結

以上是生活随笔為你收集整理的方法数超了65535 无法安装的解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。