2015-09-28 32 views
32

我有一個奇怪的問題,INSTALL_FAILED_DEXOPT。 這發生在模擬器以及設備中的android 5.0設備中。 奇怪的是,它在調試模式下構建變體時效果很好。INSTALL_FAILED_DEXOPT發佈模式下Android 5.0的錯誤

如果我更改爲發行版,則僅在5.0設備上獲得此例外。我徹底瀏覽了谷歌提供的所有鏈接。

  1. 擦拭數據

  2. 買新的設備,我可以安裝的第一次,但我仍然面臨着同樣的問題。

  3. 項目有multidex支持: - 在gradle這個

  4. 也試過改變SDK工具版本真實和構建工具版本是24.4.0最新。

我使用這個設備 enter image description here

,當我在釋放模式建立我得到這個錯誤 enter image description here

在控制檯

enter image description here

這些都是構建類型我們使用。使用SDK工具

buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt' 
     signingConfig signingConfigs.release 
    } 


    debug { 
     applicationIdSuffix ".debug" 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt' 
     signingConfig signingConfigs.debug 
    } 


} 

圖片:

enter image description here 我可以向你保證,出現了從未構建安裝,如果它已經安裝了device.I已經清除一切。

人在這個世界上能幫助我解決這個issue.Because它驅使我們瘋了.....

+0

請問您的全部使用和外部預建庫(不依賴遊戲)?如果是這樣,他們是罐子還是罐子? –

+0

請在安裝失敗後發佈logcat – iagreen

+0

您可以發佈'build.gradle'代碼嗎?尤其是帶'debug'和'release'變體的'buildTypes'元素。 –

回答

0

此問題可能是由於不匹配的Android Studio和項目之間的SDK。該項目使用的是舊的sdk,一旦我完成了它們,我就清理並重建了該項目,一切都很順利。

+0

嗨,沒有不匹配,我們給所有的SDK相同。 – Rockin

0

請查看您的應用是否被錯誤地安裝在您的手機的來賓帳戶中。

如果是,則請從該處卸載或刪除它。

爲手機中的所有用戶帳戶執行此操作。

其他提示: -

建設 - >清潔工程建設 - >重建項目

+0

您將我的評論轉化爲答案:D well played – Marko

+0

對不起,我沒有看到您的評論,您的評論已被隱藏。我面臨同樣的問題,並回答這些類型的問題之前 – penta

+0

@Marko看到這個鏈接,我已經回答了這些問題之前http://stackoverflow.com/questions/32910041/android-when-i-try-to-install-my -signed-app-it-says-app-not-installed/32919015#32919015 – penta

0

這可能是由於不同版本的搖籃構建工具在你的模塊和項目建設的文件。確保他們在這兩個文件中使用相同的版本,清理並再次構建,並且應該沒問題。如果你正在安裝調試APK同時發佈的APK是存在,或者如果要安裝APK發佈而同時relese /調試APK已經安裝在你的設備/ emulator.means

+0

我們只在主項目中使用...不在模塊 – Rockin

-2

這個問題可能會在安裝調試/發佈APK ocuur debug apk is exist.so uninatall apk並重新安裝

-1

從Android SDK和AVD Manager重新啓動仿真器,然後選擇Wipe User Data選項爲我解決了這個問題。

0

聽起來像multidex可能是你的問題。 Android在棒棒糖設備上處理這些(可能會解決某些設備的行爲正常,但其他設備有問題),但在舊設備上使用multidex庫可以解釋爲什麼舊設備的行爲統一(請參閱http://developer.android.com/tools/building/multidex.html)。

你足夠接近65K限制,你可以使用ProGuard的或暫時消除這種依賴項之一,你就不需要multidex?儘管有一個圖書館來支持它,但減少你的方法數量通常是一個好主意,這樣你就不需要它了。我知道一些應用程序可能真的需要它,但值得首先檢查一下。

此外,調查使用顆粒狀谷歌播放服務模塊。如果您正在使用所有GMS,則切換到粒​​度包含可以顯着減少您的方法數量:http://android-developers.blogspot.com/2014/12/google-play-services-and-dex-method.html

0

嘗試卸載此應用以及您的設備上簽名的所有其他人。清理您的項目並重新安裝。另外,您應該考慮通過另一種方式安裝您的應用程序,例如使用Dropbox,即ADB。

-1

我得到了同樣的問題,而在我的手機測試代碼。我也跟着下面的步驟

  1. 清理並生成代碼
  2. 升級的Android Studio中最新版本

它解決了我的問題,請在您的情況進行檢查。

2

當APK安裝到Android,Android的優化執行dex2opt。 INSTALL_FAILED_DEXOPT錯誤消息意味着你的android設備無法優化dex。這可以通過dex尺寸來實現。您可以在Android監視器中找到「LinearAlloc限制」警告或錯誤消息。

如果它是dex大小的問題。將此添加到配置。

afterEvaluate{ 
tasks.matching { 
    it.name.startsWith('dex') 
}.each { dx -> 
    if(dx.additionalParameters == null){ 
     dx.additionalParameters = [] 
    } 
    //To avoid linearAlloc limit problem on Gingerbread and below 
    dx.additionalParameters += "--set-max-idx-number=50000" 
    dx.additionalParameters += "--minimal-main-dex" 
} 

}

和即時運行= ON到OFF

-1
afterEvaluate{ 
    tasks.matching { 
     it.name.startsWith('dex') 
    }.each { dx -> 
     if(dx.additionalParameters == null){ 
      dx.additionalParameters = [] 
     } 
     //To avoid linearAlloc limit problem on Gingerbread and below 
     dx.additionalParameters += "--set-max-idx-number=65535" 
     dx.additionalParameters += "--minimal-main-dex" 
    } 
} 
+0

爲什麼OP應該「試試這個」?一個**好的答案**將總是解釋做了什麼以及爲什麼這樣做,不僅對於OP,而且對於未來SO的訪問者可能會發現這個問題並且正在閱讀你的答案。 –

+0

這個答案真的很奇怪。我什至不記得我什麼時候回答它。請**忽略** – wsgh

相關問題