啟用多DEX處理64K方法數問題

2021-10-23 05:08:13 字數 1127 閱讀 4097

谷歌dex處理64k方法數問題

引發原因

當您的應用及其引用的庫包含的方法數量超過 65536 時,您會遇到乙個構建錯誤,指明您的應用已達到 android 構建架構規定的引用限制

異常丟擲

trouble writing output:

too many field references: 131000; max is 65536.

you may try using --multi-dex option.

較低版本的構建系統會報告乙個不同的錯誤,但指示的是同一問題

​​​​​​​conversion to dalvik format failed:

unable to execute dex: method id not in [0, 0xffff]: 65536

關於 64k 引用限制

android 應用 (apk) 檔案包含 dalvik executable (dex) 檔案形式的可執行位元組碼檔案,這些檔案包含用來執行您的應用的已編譯**。dalvik executable 規範將可在單個 dex 檔案內引用的方法總數限制為 65536,其中包括 android 框架方法、庫方法以及您自己的**中的方法。在電腦科學領域內,術語千(簡稱 k)表示 1024(即 2^10)。由於 65536 等於 64 x 1024,因此這一限制稱為「64k 引用限制」。

解決辦法

1.minsdkversion >= 21時,則預設情況下啟用多 dex 檔案,並且您不需要多 dex 檔案支援庫

2.minsdkversion < 21時,則必須使用多 dex 檔案支援庫並對應用專案進行以下修改: 

2.1.配置module下build.gradle

android 

...}

dependencies

<?xml version="1.0" encoding="utf-8"?>

@override

protected void attachbasecontext(context base)}

實現malloc free用來管理64k記憶體

實現malloc free,用來管理64 的記憶體。這是一道面試題,也是一道很好的設計題 1.malloc size t size free void p 是使用者api,釋放的時候需要知道釋放空間的大小,並且需要放入到乙個空閒鍊錶裡面去,可以這樣設計 typedef struct itemmn a...

Android出現方法超過64k的問題

手機直接debug本身沒有問題,但是打包的時候會出現unable to execute dex method id not in 0,0xffff 65536 這種問題導致打包失敗,這是單個dex檔案方法數超過64k導致的,基本上引入過多的依賴都會出現這個問題,解決方法 1.匯入依賴 com.and...

字段資料大於64K的解決方案

方法一 在sql server management studio配置 max text repl size 選項 1 在物件資源管理器中,右鍵單擊伺服器並選擇 屬性 2 單擊 高階 節點。3 在 雜項 下,將 最大文字複製大小 選項更改為所需的值。方法二 利用sp configure修改max t...