Posts Tagged With: Emulator

[Android] 無法正確封存 App – Xamarin for VS2017


老闆要求修改軟體圖示 (icon) ,去年年底到今年一直無法正確封存 App ,主要是因為一開始一直用 Android Emulator 測不過。

[Android] Android SDK Tools 25.2.5 無法移除 – Xamarin for VS2017

原先在 2017 開發 Android App 時,還用 Visual Studio Emulator For Android 開發,由於主要是使用 HTML5 網頁,只需要一個 WebView 框架,所以完成後,App 就擺一邊了。

去年年底要更新 App 時,才發現 Visual Studio 2017 自動更新後, Visual Studio Emulator For Android 已經不能用了,新的開發要直接使用
Android Emulator ,今天受不了了,找出很舊的實體機 Android 4.4 測後,錯誤訊息不同了:

剖析套件時發生問題

有了錯誤訊息是個好的開始,上網查了,有篇文章說到,有時 VS2017 會不正常,從方案總管那邊,滑鼠右鍵,封存後試試。

封存編譯好的專案

居然這樣後,再下載就能在實體手機跑了,先前到底是死在哪阿?

網頁上說正常後,選單也可以正常跑了,我先前都是從選單跑,先跑重建方案,再跑封存。

選單封存功能

卡了三個月,到底在卡啥?VS2017 修復不知道多少次,我還搞到把 VS2017 全部乾淨移除後重灌,結果居然是莫名其妙的怪狀況。

不過即使實體手機能跑,Android Emulator 還是不能跑,要你何用啊…

Android 4.4 最慘,連執行安裝都不行
Android 7.1 顯示不相容
Android 8.0 顯示未安裝

我真是搞不懂這模擬器是要幹嘛用的,實機能裝,虛擬機都不能裝。

[2019/03/15 新增]

同事發現我把在螢幕上的軟體名稱打錯了,所以我今天重新打開 VS2017,編譯、封存,拿實體機來測試,居然又不能正常封存:

無 Icon

檢查專案屬性,居然 Icon 的設定跑掉了,我就今天打開 VS2017 改個名字而已啊~

改完 Icon 設定,還是不正常:

未安裝應用程式

回想昨天是先在 Android 4.4 上測試成功,先把專案目標 API 設定為 v19 ,再改回 v26,開啟 Android SDK Manager,重新以系統管理員開啟 VS2017 ,到方案總管,重新建置方案後,再重新建置專案、封存專案,又正確可以安裝到行動裝置了。趕快上傳 Google Play 。

Xamarin for VS2017 該不會是佛性編譯器吧?一切看緣分阿~

Categories: 封裝部署, 工作點滴, 技術分享 | 標籤: | 1 則迴響

[Hyper-V] 在 Visual Studio Emulator For Android 我的虛擬網路設定


我在 Win81 時的 Hyper-V 中,透過 Loopback 網卡來分享 WiFi 給虛擬機用:

[Hyper-V] 我 NB 用的虛擬網卡
https://tlcheng.wordpress.com/2016/02/22/hyper-v-%e6%88%91-nb-%e7%94%a8%e7%9a%84%e8%99%9b%e6%93%ac%e7%b6%b2%e5%8d%a1/

當時的 NB 是效能不是很好,所以一直沒考慮使用 Hyper-V 跑 Android 模擬機,一直用 VirtualBox 來跑 Android 模擬機。

Visual Studio 2015 (VS) 以後,微軟推出了整合 VS IDE 開發環境與模擬機的架構,提高 Android 行動軟體開發速度,沒有安裝 VS 的電腦也可以安裝來跑 Android 模擬機:

Visual Studio Emulator For Android (以下簡稱模擬器)
https://www.visualstudio.com/zh-hant/vs/msft-android-emulator/

當然有安裝 VS 2017 的有內建,VS 2017 內建的版本比上述網站下載的還新。

我開始在 Hyper-V 測試模擬器,一開始就卡在開機中的畫面,不知道啥原因:

卡在開機中的畫面

卡在開機中的畫面

 

Terry Lin 建議我依照下面這篇除錯:

Visual Studio Emulator for Android 疑難排解
https://msdn.microsoft.com/zh-tw/library/mt228282.aspx#NoStart

無法解決問題,之後 Ian Chen 建議我把所有 Virtual Switch 全部砍掉一預設值重建,砍掉前我有看了一下設定後,砍掉重建,重建後我的模擬機就能完成開機,但卻出現不能上網。

Windows Phone Emulator Internal Switch

Windows Phone Emulator Internal Switch

註:後來是因為我的 Windows Phone Emulator Internal Switch 內不知道為啥預設是 169.* 開頭的 IP ,這裡必須是動態取得 IP

一開始無法上網,我依據先前跑 Windows VM 的慣例,把 Microsoft Loopback 網卡設定給 Android 模擬器,但是還是無法上網,Aska Su 建議我用 Hyper-V 建一個 Hyper-V Loopback 內部虛擬網路:

Hyper-V Loopback

Hyper-V Loopback

再把 WiFi 分享給 Hyper-V Loopback 虛擬網卡:

共用 WiFi 給 Hyper-V Loopback

共用 WiFi 給 Hyper-V Loopback

 

我用 Windows VM 測試,也可正常成功。

Hyper-V Loopback 速率 10 Gbps

Hyper-V Loopback 速度

Hyper-V Loopback 速度

比 Microsoft Loopback 網卡 1.2 Gbps 快。

Microsoft Loopback 速度

Microsoft Loopback 速度

 

但是 Android 模擬器仍無法上網。測試各種方案,Android 模擬機都會自動把 Windows Phone Emulator Internal Switch 虛擬網卡自動加入,若是參數不正確,還會自動把前次設定錯誤的網卡刪除。

苦無對策,拜了 google 大神,一般解決方案都是將無線網卡加入第二張 Android 模擬機網卡,這表示我得放棄不將 WiFi 加入虛擬交換器,必須將 WiFi 加入到 Hyper-V 內。

虛擬交換器管理員

虛擬交換器管理員

WiFi 一加入虛擬交換器就會組成網路橋接器,這讓網路管理複雜很多:

網路橋接器

網路橋接器

加入到 Android 模擬機第二張網卡:

WiFi 加到第二張網卡

WiFi 加到第二張網卡

就可正常上網了:

從無線基地台取得實體 IP

從無線基地台取得實體 IP

註:若網路設定錯誤,Android 模擬機仍會自動將無線網卡刪除

成功上網後,摸清楚特性,就測試改用 Hyper-V Loopback 網卡,由於 Hyper-V Loopback 網卡為內部網卡,只要一設定 IP ,例如共用網路變成 192.168.137.1 ,就會造成模擬機無法開機,只有外部網卡能設 IP。因此又回頭使用 Microsoft Loopback 網卡加入虛擬交換器:

Microsoft Loopback 加入第二張網卡

Microsoft Loopback 加入第二張網卡

再將 WiFi 分享給 Microsoft Loopback 虛擬網卡

WiFi 分享給 Microsoft Loopback

WiFi 分享給 Microsoft Loopback

一樣自動被設定為 192.168.137.1

虛擬網段 IP

虛擬網段 IP

讓網路設定變得比較乾淨:

實體網卡好管理

實體網卡好管理

終於,可以把先前的 Microsoft Loopback 網卡分享給 Android 模擬機。

透過 Microsoft Loopback 取得虛擬 IP

透過 Microsoft Loopback 取得虛擬 IP

平常沒有使用 Hyper-V 的時候,我就會停用不相關的網卡,另外重新把 Windows VM 網卡設給 Microsoft Loopback ,反正 1.2 Gbps 也夠我用了,平常就懶得動,直接用同一張須擬網卡就可以,這樣在外沒有無線基地台的情況下,模擬器也可以透過 192.168.137.* 網段與 NB 溝通,恢復到我的習慣工作環境了。

Categories: 工作點滴, 技術分享 | 標籤: | 7 則迴響

在WordPress.com寫網誌.

%d 位部落客按了讚: