1. 程式人生 > >Android模擬器Genymotion安裝apk

Android模擬器Genymotion安裝apk

上篇部落格我們講了如何安裝一個安卓模擬器進行手機的除錯,現在我們要講解,如何在模擬器上安裝一個安卓的apk,這裡面遇到的麻煩,真是把我折磨的夠嗆,下面我們就來看看,在這過程中,我到底遇到了哪些奇葩的問題。

一、下載apk

選擇你需要安裝的apk進行下載,下載完以後放在與adb.exe同一目錄下;

看我的

這裡寫圖片描述

二、安裝apk遇到的問題

開啟Genymotion模擬器,然後cmd到你的platform-tools目錄下,
使用以下命令進行安裝。

adb install wxwork.apk

問題一:apk安裝不成功

錯誤提示Installation failed with message INSTALL_FAILED_CPU_ABI_INCOMPATIBLE

或者直接把.apk包拖進Genymotion模擬器中,也是出現同樣的錯誤

分析:這個問題我也糾結了很久,網上找了一下,原來是Android用Genymotion 除錯的時候,如果有.so的庫的話,出現Failure [INSTALL_FAILED_NO_MATCHING_ABIS] 錯誤,並且始終安裝不上。

這是因為系統裡缺少了 Google Play 市場等各種谷歌服務應用,其實是因為版權問題,從 2.0 版本開始 Genymotion 提供的虛擬裝置都已經移除了 Google Apps 以及 ARM library support ,所以如果通過軟體裡下載回來的虛擬機器,在執行一些必須依靠這些元件執行的 App 時就會出現錯誤或閃退現象。是因為模擬器是在x86的處理器上執行,而手機一般都是RAM架構的,所以得把模擬器刷成ARM的才行。

例如像地圖或者瀏覽器什麼的,裡面會包含一些so動態庫檔案,這些都是在arm環境下執行的。而genymotion現在的釋出版本沒有帶有Genymotion-ARM-Translation.zip,需要手動新增!

解決方法一:

1、下載 Genymotion-ARM-Translation_v1.1.zip;可以到官網下載 ,如果嫌速度太慢也得可以到百度雲
2、.執行Genymotion,並start你配置好的virtual device

這裡寫圖片描述

3、將下載好的Genymotion-ARM-Translation_v1.1.zip 拖拽到Genymotion模擬器裡面

這裡寫圖片描述

Genymotion-ARM-Translation_v1.1.zip 拖拽到Genymotion模擬器裡面沒有出現安裝的情況

4、如果把Genymotion-ARM-Translation這個拖進去,沒有出現安裝,而是出現下圖這種情況,檔案被複制到了 Sdcard/loadcard下面的話

這裡寫圖片描述

如果無法將zip包拖入Genymotion中,可下載[genymotion-no-java.zip],解壓該檔案,然後將Genymotion-Setting-ADB裡面的SDK目錄指向解壓檔案裡面的android-sdk-tools目錄,這樣zip包就可以拖入執行中的模擬器(即放入模擬器的sdcard/Download資料夾)。

這裡寫圖片描述

5、然後繼續上述拖拽步驟3,出現如下提示,然後點選ok。

這裡寫圖片描述

這裡寫圖片描述

6、安裝完後,重啟你的virtual device以及Genymotion。

解決方法二

1、開啟模擬器:
我們找到設定,然後開啟它,先設定一些屬性

這裡寫圖片描述

2、定位到安全:
我們找到安全選擇,然後點選它,設定安全屬性。

這裡寫圖片描述

3、定位到未知來源:
我們在這裡允許安裝來自未知來源的應用。我們在這裡打勾。

這裡寫圖片描述

4、最關鍵的來了:
我們下載一個Genymotion-ARM-Translation.zip的檔案,把它拉進模擬器裡。

這裡寫圖片描述

5、等待安裝:
這裡是一個安裝過程,等安裝完成就彈出一個對話方塊,我們點選OK。

這裡寫圖片描述

問題2:adb啟動失敗

當你重啟genymotion進行安裝apk時,提示埠號被佔用,mmp,怎麼盡是問題呢?內心真實一萬個xxx在奔騰。

Unable to create Debug Bridge: Unable to start adb server: error: could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037: 埠只能使用一次 (10048)
could not read ok from ADB Server
* failed to start daemon *
error: cannot connect to daemon

好吧,既然問題來了,我們就要迎難而上幹掉它。

方法一:檢視埠被佔用的程序,殺掉它

1、開啟cmd視窗,進入adb.exe所在的資料夾目錄

如  cd C:\android\android-sdk\platform-tools

2、 netstat -aon|findstr “5037”

這裡寫圖片描述

需要注意的是 有時候會查詢到很多的程序(我一般選第一個,不行的話全部試一次,暫時沒有準確的方法,後續更新!!)

根據上圖然後輸入 taskkill /pid 9892 /f (9892就是佔用此埠的程序id)

方法二:更改adb.exe的埠號

如果殺掉佔用埠的程序,還是不能正常啟動怎麼辦呢?
在環境變數裡面新增一個變數,ANDROID_ADB_SERVER_PORT,我這裡更改成5038,你隨意。

這裡寫圖片描述

方法三:

用方法一里面的方法查詢佔用5037埠號的程序執行(win+R)—>輸入”cmd” 開啟命令列視窗輸入:netstat -aon|findstr “5037”,我發現這個程序就是個adb.exe程序,但是這個程序不是我們sdk裡面的程序
1、我開啟這個程序的位置,如圖:

這裡寫圖片描述

2、發現這個adb.exe的程序是我安裝Genymotion裡面(D:\Program Files\Genymobile\Genymotion\tools
adb.exe)的adb,就是這個程序搶佔了5037的埠。問題找到了,於是乎我就把這個adb給刪除掉。刪除之後我發現模擬器都start不了了,那麼問題來了,如圖:

這裡寫圖片描述

3、然後我看到了提示!提示裡面說在我安裝的Genymotion裡面找不到adb工具,問我是不是指定路徑為SDK的路徑,我就順著它的提示,點選“YES”,就進入設定路徑的介面了,選擇ADB選項卡,第一個就是使用預設Genymotion裡面的adb(之前我刪除的那個adb),選第二個,第二個就是使用SDK裡面的adb.exe,這好辦,我把我SDK的路徑那個給他就好了,如圖:

這裡寫圖片描述

4、配置好之後重啟你的AndroidStudio和Genymotio就ok了

三、安裝apk

檢視模擬器是否與電腦成功連線

1、 cmd到你的platform-tools目錄下,使用以下命令

adb devices

這裡寫圖片描述

看到我畫出來的就是我的模擬器,證明已經成功連線了。

2、接下來執行命令

adb install wxwork.apk

顯示安裝成功;

這裡寫圖片描述