1. 程式人生 > >Android的模擬器,在ADT中除錯執行AVD時,速度太慢,極其的慢

Android的模擬器,在ADT中除錯執行AVD時,速度太慢,極其的慢

http://www.crifan.com/android_emulator_run_too_slow_in_debug_mode/

【問題】

雖然當前主機配置很高:

Intel的i5的4核 + 8G記憶體 + SSD的硬碟

Eclipse的ADT,除錯程式碼時,所執行的AVD模擬器,速度極其的慢。

載入到主介面,也要個幾分鐘。

每次除錯一次,都得等半天,煩死了。

【解決過程】

1.一搜,網上果然N多人遇到同樣問題。

2.參考:

去修改對應的AVD:

debug configurations

manager avd

edit this avd

把記憶體改為2G,再把snapshot選上:

use snapshot and 2g mem size

然後去試試效果,結果點選除錯,無法啟動AVD了,詳細折騰過程參見:

其結果是:

即使可以手動修改,繞過bug,使得設定為1024MB,但是實際的執行速度,還是很慢。

啟動一次,要等個很多分鐘,還是不能接受的慢。

3.另外之前那個帖子中提到了有個:

據說速度極快。幾乎完美。有空可以試試。

4.另外,有空再參考其中的:

去試試,貌似會有效果的。

5.好像後面提到的這些:

更加有用。是android官網的解釋。

所以,看來還是,參考:

去從頭到尾,好好看看。

其中,有待後期注意的是:

(1)此處我裝了VirtualBox,據文件說,需要先解除安裝VirtualBox,否則會影響此處的虛擬化加速的;

(2)需要是x86的Image,不能是arm的Image;

去確認一下,果然之前的AVD都是for ARM的:

cpu abi is arm

所以,去新建一個x86的。

6. 但是結果卻發現,無論選擇哪個Device,結果Target基本都是Android 4.2,然後坑爹的是CPU/ABI都是ARM,而且無法更改:

cpu abi can not change

教程是說,選先選Target,然後再選CPU/ABI,但是此處Target只有 Android 4.2,沒有其他可選的啊;

而且無論如何,CPU/ABI都還是灰色的,無法改的。。。

然後也去試過了,新建Device:

new device x86

然後再去新建AVD,用這個新建的try_x86,結果還是無法更改CPU:

use try_x86 avd still can not change cpu

後來才想起來,好像是當前的“System Image”是ARM的,所以,需要重新安裝一個X86的“System Image”。

7.所以去使用Android SDK Manager去安裝X86的System Image,詳細過程參見:

8.等安裝完畢了對應的X86的Image後,然後才可以去建立x86的AVD的。

can create new x86 avd

created x86 avd

9.然後再去下載並安裝Haxm (Intel Hardware Accelerated Execution Manager),詳細過程參見:

10.驗證安裝haxm成功後,把之前建立的X86的AVD,設定為啟動裝置,然後啟動除錯,看看效果。

結果,此時發現,此處的之前建立的x86_480x800的AVD,竟然出錯了,說是啥Unknown Target,折騰過程參見:

11.繼續去,先設定好上述的X86的AVD為啟動裝置,然後去除錯:

select x86 as avd

看看是否速度有提升。

結果log中顯示出一行紅色字型:

hax is working and emulator runs in fast virt mode

hax is working and emulator runs in fast virt mode

最後自己數了數,從點選Debug到最後看到Android的AVD的主介面:

spend 12 sec to ui

大概花了12秒,算是比較快了。

至少和之前按分鐘算的那個速度,有天壤之別了。

【總結】

至此,貌似基本算是成功了,成功的,加速了Android模擬器的除錯的速度。

從大概多少分鐘,到12秒左右。

雖不完美,但已基本可以接受了。

提示:

1.此處我沒用那個snapshot;

2.後續除錯時,已明顯感覺到,模擬器執行程式,除錯程式碼等等的速度,的確是明顯快多了。爽就一個字。哈哈哈。

提示:

1.根據網友stophin的經驗:如果CPU不支援VT-x的話,HAXM是安裝不上的。請小夥伴自行注意。


相關推薦

Android模擬器ADT除錯執行AVD速度極其

http://www.crifan.com/android_emulator_run_too_slow_in_debug_mode/ 【問題】 雖然當前主機配置很高: Intel的i5的4核 + 8G記憶體 + SSD的硬碟 Eclipse的ADT,除錯程式碼時,所執行

android開發之android:process屬性_applicationonCreate執行多次

應用做的匆忙,很多地方只顧實現功能,沒有兼顧好效能,所以停下來重構程式碼優化效能,結果在打log看啟動時間的時候,發現Application的onCreate執行了多次,這樣導致重複初始化資源,初始化了

Android模擬器Genymotion新增ARM程式執行環境的方法

搞開發也很多年了,還是第一次寫blog,給自己留一些記錄吧 自從用了Genymotion這個號稱快到極致的Android模擬器以後,很多時候除錯程式都不想用真機了,SDK帶效率低下的官方模擬器因為效率太低也放棄了(據說可以通過配置來改進一直沒去嘗試過) 通過模擬器和hier

解決ofbiz在myeclipse除錯執行時報錯:Can't find bundle for base name cache

錯誤資訊:Can't find bundle for base name cache Set OFBIZ_HOME to - E:/develop/ofbiz/apache-ofbiz-09.04/apache-ofbiz-09.04 Admin socket not con

向資料庫插入日期時間datetime型別資料資料庫只有日期沒有分秒

  java.util.Date是不能直接插入資料庫中的,雖然它包含了日期和時分秒。   java.sql.Date可以直接插入資料庫,但是它只有日期而沒有時間;   java.sql.Time可以直接插入資料庫,但是它只有時間,沒有日期 Java

Oracle關於處理小數點位數的幾個函式取小數位數Oracle查詢函式

關於處理小數點位數的幾個oracle函式() 1. 取四捨五入的幾位小數 select round(1.2345, 3) from dual; 結果:1.235 2. 保留兩位小數,只舍 select trunc(1.2345, 2) from dual; 結果:1.23 select trun

eclipse專案當使用註解找不到類

今天遇到一個奇怪的問題,在pom.xml 中匯入下面的jar包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>s

執行緒——設計4個執行其中兩個執行緒每次對j增加1另外兩個執行緒對j每次減少1。寫出程式。

package com.com.aaa.addreduceThread; public class ThreadDemo { private int j=1; //每次新增1

二叉樹先序後序遞迴建立後序層次非遞迴遍歷以及統計葉子結點個數以及樹的深度

下面的程式碼實現了二叉樹的先序或者後序遞迴建立,然後實現了二叉樹的非遞迴的先序中序後序遍歷,還有層次遍歷,以及統計樹的葉子結點個數和樹的深度。其中非遞迴的先中後序遍歷用到了鏈棧,層次遍歷用到了佇列。 程式設計平臺為Visual Studio 2012,語言為C,但不是純C,

iOS開發之swift與OC混編出現的坑oc不能對swift的代理進行呼叫不能訪問swift的代理swift的回撥方法

1. swift與oc混編譯具體怎麼實現,這兒我就不重複講出了,網上有大把的人講解。 2. 在swift與OC混編的編譯環境下, oc類不能訪問swift建立類中的代理? 解決方法如下: 在代理的頭部加上 @objc(代理名字),這樣就在外部就可以訪問了,如下圖。 然

Qt使用執行的注意事項(執行緒沒起作用的原因)

今天偶然發現,執行程式時程式輸出視窗中有如下提示:  QObject::startTimer: Timers can only be used with threads started with QThread 也就是當物件有父物件時,是不可以移到其他執行緒當中去的。 程式

C++初始化列表問題有一個物件型別的陣列成員變數在初始化列表初始化時報錯“[]”操作符語法錯誤

陣列作為成員變數時只有預設初始化,也就是無法傳遞引數。有兩種變通方案:你可以把物件陣列改成指標陣列,或者把ClassB類的構造和初始化分開。 方案一: class ClassA{ private: ClassB* arrayOfObjectClassB[2];

面試題之:設計4個執行其中兩個執行緒每次對j增加1另外兩個執行緒對j每次減少1。寫出程式。

設計4個執行緒,其中兩個執行緒每次對j增加1,另外兩個執行緒對j每次減少1。寫出程式。  * 注:因為這4個執行緒共享J,所以執行緒類要寫到內部類中。加執行緒:每次對j加一。減執行緒:每次對j減一。 public class TestThreads { private i

一個整形陣列有正數也有負數陣列連續一個或多個組成子陣列每個子陣列都有一個和求所有子陣列中和的最大值

本文只作為學習筆記,如若侵權請告知,一定及時刪除 題目 輸入一個整型陣列,數組裡有正數也有負數。陣列中一個或者連續的多個整陣列成一個字陣列。求所有字陣列的和的最大值。要求時間複雜度為O(n)。例

JAVA多執行緒設計4個執行其中兩個執行緒每次對j增加1另外兩個執行緒對j每次減少1。

最新在看一些執行緒方面的問題,也找一些題目來練手,看到一套題,JAVA設計4個執行緒,其中兩個執行緒每次對j增加1,另外兩個執行緒

C#屏蔽Alt+F4解決Alt+F4關閉窗體對話框NO後線程不退出問題

按鍵 是否 tar span hand handle 系統 code view //1.將窗體的屬性KeyPrieview設置為true //keypreview屬性為true的時候,就可以響應鍵盤事件v //2.在窗體KeyDown事件中加如下代碼 private v

7.1 多媒體音量往遞減調節聲音變小的速度調節不均勻。

1.R . K平臺上一般硬體音量最大與最小已設為最大增益與靜音。 2.Android 的音量調節主要依靠軟體實現,具體可以看: /hardware/rk29/audio/AudioPolicyManagerBase.cpp 的 computeVolume 函式,該函式基本原理 3.就是每種音

Android Studio使用過程Java類突然報紅但專案可執行解決方法

Studio也有不穩定的時候,比如電腦自動的關機,或者停電導致的電腦直接關機等,再開啟電腦後,接著開啟Studio也許專案中就是不片紅,重啟和Build、clean、make project都不行,最後才知道是build快取的問題,網上說清空build快取之後就可以了,試了後

Android的訊息機制Android執行緒間通訊的Message機制AndroidHandler的使用方法

轉自:http://www.cnblogs.com/-OYK/archive/2011/08/03/2126657.html Android的訊息機制(一)   android 有一種叫訊息佇列的說法,這裡我們可以這樣理解:假如一個隧道就是一個訊息佇列,那麼裡

Android模擬器加速BIOSVT-x選項不可改Intel硬體加速軟體的安裝

對於解決Android模擬器在Intel平臺的電腦上啟動慢的問題,Intel提供了硬體加速軟體HAXM。 安裝此軟體首先要電腦的硬體支援VT-x技術,安裝中爆出錯誤: 但我的電腦上並沒有網上說的在