1. 程式人生 > >MultiDex使用中導致的crash(VerifyError)問題解決方案

MultiDex使用中導致的crash(VerifyError)問題解決方案

關於問題描述

在專案中遇到一個奇葩的問題,多臺測試機測試,其中有一臺直接crash(點個名vivo的手機),並且報以前沒有見到過的Error型別java.lang.VerifyError,下面是log截圖:
這裡寫圖片描述
在網上百度了一番之後,眾說紛紜,現在馬上都已經是2017年了,所以排除了一些關於eclipse的解決方案,我用的是AS,其中有兩篇文章還是很有用的:
http://blog.csdn.net/zhuobattle/article/details/47153025
以及
http://blog.csdn.net/zhuobattle/article/details/52958364
好了,相面直接說說我的分析和解決方法了。

分析及解決方案

簡單分析
首先看到log之後,log中報錯的地方似乎和常見的錯誤不太一樣,其中重要的資訊有Could not find class,這是一個非常有效的資訊,意思都明白,沒有找打相關的類,why?我的這個專案可是一個已經上線的專案移植過來的,好吧,想了想,估計是專案第三方sdk比較多,導致程式又龐大了不少,原來程式就因為API數超過了64K,而分成了兩個dex, 用的是MultiDex,最終導致crash!!!

解決方案
用MultiDex來突破64K的method id數量的限制,具體實現步驟如下:

1. 在Module的build.gradle裡新增multiDexEnabled true


例如:

defaultConfig {
        applicationId "com.baidu.my"
        minSdkVersion 14
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        // dex突破65535的限制
        multiDexEnabled true
    }

2. 接著在Module的build.gradle裡新增

dependencies {
  compile 'com.android.support:multidex:1.0.1'
}

3. 第三步有兩種情況
1)如果你的apk沒有定義application,則在AndroidManifest.xml裡的application裡做如下修改:
新增MultiDexApplication(因為是具體專案,這個方式並沒有測試)

<application
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:name="android.support.multidex.MultiDexApplication"
        tools:replace="android:icon, android:name"
       >

2)第二種也就是大家最常用到的方式了,在自定義的application中複寫方法,具體如下

@Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }

結束

好了,至此,重新再在vivo上跑一遍,終於不crash了,如果你也遇到和我一樣的問題,希望你也順利解決哦。

相關推薦

MultiDex使用導致crashVerifyError問題解決方案

關於問題描述 在專案中遇到一個奇葩的問題,多臺測試機測試,其中有一臺直接crash(點個名vivo的手機),並且報以前沒有見到過的Error型別java.lang.VerifyError,下面是log截圖: 在網上百度了一番之後,眾說紛紜,現在馬上都已經

Leetcode 237:刪除連結串列的節點最詳細解決方案!!!

請編寫一個函式,使其可以刪除某個連結串列中給定的(非末尾)節點,你將只被給定要求被刪除的節點。 現有一個連結串列 – head = [4,5,1,9],它可以表示為: 4 -> 5

CC2540是一款高性價比,低功耗片上系統Soc解決方案,它適合藍牙低功耗應用領域

數字 醫療 保持 國內 定時 技術 定位 集成電路 性能 CC2540是一款高性價比,低功耗片上系統(Soc)解決方案,它適合藍牙低功耗應用領域,極少的外圍元器件以及強大網絡節點建立成為可能。CC2540是一款含有高速和低功耗8051內核的RF收發器。適用於低功耗系統,有超

跨站請求偽造CSRF解決方案

(1)驗證HTTP Referer欄位 根據HTTP協議,在HTTP頭中有一個欄位叫Referer,它記錄了該HTTP請求的來源地址。在通常情況下,訪問一個安全受限頁面的請求必須來自於同一個網站。 比如某銀行的轉賬是通過使用者訪問http://bank.com/XX?XX

keil 5相容keil 4C51解決方案

我們在電腦中程式設計51,需要安裝keil C51,即keil 4。程式設計ARM時,又需要安裝keil 5,但是電腦同時安裝這兩個軟體時,keil 4 開啟keil工程時又會有問題,本方案介紹如何讓Keil5可以相容keil4並開啟Keil4的專案。 第一步: 分別安裝

極極極極極簡的的增刪查改CRUD解決方案

去年這個時候寫過一篇全自動資料表格的文章http://www.cnblogs.com/liuyh/p/5747331.html。文章對自己寫的一個js元件做了個概述,很多人把它當作了一款功能相似的純前端表格元件,然而這並不是我的初衷,我的本意是讓後臺系統的開發從重複的增刪查改中脫離出來,我想即使不使用程式碼生

單點登入SSO解決方案介紹

一、單點登入的介紹 單點登入(Single Sign On),簡稱為 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。 例如:百度旗下有很多的產品,比如百度貼吧、百度知道、百度文庫等,只要登入百度賬號,在任何一個地方都是

解決VMware虛擬機centos7無法上網的一種方法

sta img 判斷 應該 模式 網關 mage 重啟 虛擬網絡 本文記錄使用VMware搭openstack環境中遇到的問題和解決方法。作為一個熟練拼寫openstack和只知道怎麽創建虛擬機的新手,原本搭openstack就是一個不斷爬坑的過程,結果VMware上又出問

殭屍物件導致crashThread 1:EXC_BAD_ACCESS(code=EXC_I386_GPFLT)

APP執行過種中閃退,沒有打印出任何提示資訊,全域性斷點All Exceptions也沒有起作用,而是直接進入main函式,並顯示資訊"Thread 1:EXC_BAD_ACCESS(code=EXC_I386_GPFLT)"。 如下圖所示: 出現這種情況的閃退,通常是由於呼叫了一個已

linux修改mysql的預設編碼character_set_server解決插入亂碼問題

1、登入mysql,檢視mysql預設的編碼格式  show variables like 'character%'; 如果現實-bash: show: command not found 說明沒有登入mysql資料庫,需要進行登入 2、修改my.cnf 檔案 目錄為

修改陣列的變數,無法立馬觸發檢視更新三種解決方案

第一:使用$set. 直接給student賦值操作,雖然可以新增屬性,但是不會觸發檢視更新 mounted () { this.student.age = 24}原因是:受 ES5 的限制,Vue.js 不能檢測到物件屬性的新增或刪除。因為 Vue.js 在初始化例項時將屬性轉為 getter/sette

Android Studio 多個module引用同一個jar或者衝突解決解決方案

在Android開發過程中我們多多少少會引入module,不僅會提高專案的開發進度,而且專案管理起來相當方便。 但是同一個專案中引入多個module引入同一個jar或有衝突的jar時候在編譯的時候會出現錯誤,這些錯誤往往讓人抓狂。 在解決這些錯誤之前,讓我們先了解下關

MyBatis 解決設定資料庫自增後,導致兩表關聯插入的資料不匹配問題

最近在做關聯資料插入的時候,遇到一個問題,先描述一下我遇到的問題:有三張表:商品表:goods(id,name,price)                訂單表:payment(id,payment_date,count)                關係表:relati

解決Vue/小程式 針對陣列列表 實現倒計時 倒數效果越來越快的問題

你可能會使用watch監聽list 由於watch監聽資料變化,對資料進行遍歷時,當只有一個item符合條件時倒計時正常,一旦多個item符合條件,if語句內執行了一次以上,由於多個item發生改變會多次觸發watch,導致倒計時越來越快, 錯誤效果

【格式、工具】寫作論文遇到的一些問題及其解決方案持續更新......

論文中一些常見的規則本文更新時間日誌:2018.04.29:以 office-word 為主,整理一些關於公式的問題;2018.05.24:參考文獻(會議論文)的格式及其搜尋方法;===========================================【offi

Leetcode 82:刪除排序連結串列的重複元素 II最詳細解決方案!!!

給定一個排序連結串列,刪除所有含有重複數字的節點,只保留原始連結串列中 沒有重複出現 的數字。 示例 1: 輸入: 1->2->3->3->4->4->5 輸

vs2010和VS2012,新建專案沒有看到解決方案解決

不知怎麼弄的,突然新建專案沒有了解決方案,想重灌太浪費時間了,網上查也沒有找到問這個問題的人,後來一想,是不是前幾天初始vs時把引數給初始了,於是,在【工具】-【選項】-【專案和解決方案】,把右邊的對勾都選上,懶得試哪

怎樣在程式利用C++支援多國語言一種解決方案

  emule是利用動態載入資源DLL來實現多語言切換的,每一個資源DLL中包含了一份對應某一語言的字串表。在原始碼的srchybrid/lang 路徑上可以發現一個lang解決方案,其中包含了差不多40個專案,每個專案編譯出來都是一個單獨的DLL。這些DLL在程式安裝時拷貝到指定的目錄中。每個DLL裡面都

安卓系統關於乙太網Ethernet無法上網的問題解決

設定完畢後發現系統已經能夠自動獲取ip了: eth0      Link encap:Ethernet  HWaddr 00:09:C0:FF:EC:48           inet addr:192.168.0.19  Bcast:192.168.0.255  Mask

Latex 雙欄跨欄插入跨雙欄圖片出現在下一頁問題的解決

問題: 在使用latex的過程中發現當在雙欄模式中插入跨欄圖片,會發生出現在下一頁的情況: 如: \begin{figure*}[htbp] \centering \includegraphics[