ThinkPower University
回昕力大學瀏覽更多文章分享

主題

開發Xamarin.Forms如何避免第一次編譯Android 平台的App遇上缺少Xamarin.Android.Support.XXXX錯誤問題

文章簡介

由於最近越來越多人嘗試著使用 Xamarin.Forms 來開發 App,但常會在第一次編譯 Android 平台上的 App 時遇上"Xamarin.Android.Support.XXXX"之類的錯誤訊息,接著就卡關了,所以來讓本篇文章來引導如何避免此問題吧!

作者

James Tsai

版本/產出日期

V1.0/2016.12.30



1. 前言


這個問題在2016年五月時就曾經在昕力大學發表類似的解決文章: ”Xamarin.Androi d or Xamarin.Forms 的開發過程遭遇 Please install package Xamarin.Android.Support.XXXX 的編譯錯誤訊息,該如何解決呢 ? ”。在該篇文章當中有詳細討論此問題的成因與來由,所以想要詳細了解的人,可以再去閱讀此文章。

但由於該篇文章是解說遇到問題時該怎麼解決,而且當時也只有敘述Windows上面的解決方式,所以本篇文章是直接教導怎樣讓無論是在Windows或Mac上,要使用Xamarin.Forms的初心者,在編譯Android平台上的App能夠避免這樣的問題發生。


2. 環境準備


Windows

macOS Sierra

Xamarin 開發環境


3. 本文


前情提要


此問題的原因很大一部份都是因為在沒有可靠穩定的網路時(: 斷線、頻寬不夠、防火牆遮蔽),就常常會造成第一次使用 Xamarin.Forms 編譯Android 平台的App,或是更新新版Xamarin.Forms Nuget Package後就會發生此問題。

使用Xamarin.Forms在編譯Android平台上的App遇上缺少Xamarin.Android.Support.XXXX錯誤的問題,若想了解相關問題的成因與解決,請參考下列網址的文章:

Xamarin.Android or Xamarin.Forms的開發過程遭遇Please install package Xamarin.Android.Support.XXXX的編譯錯誤訊息,該如何解決呢?
https://tpu.thinkpower.com.tw/tpu/File/html/201605/20160531122859_f.html

目前Xamarin.Forms當中的Android 平台使用Nuget Package需要對應到Android SDK當中的”android_m2repository_r<版號>.zip”套件,以目前這個時間點Xamarin.FormsNuget Package對應到的是android_m2repository_r29.zip,所以請先透過下列網址下載:

android_m2repository_r29.zip:
https://dl-ssl.google.com/android/repository/android_m2repository_r29.zip

並將下載回來的zip檔,改檔名為2A3A8A6D6826EF6CC653030E7D695C41.zip


Windows第一次使用Xamarin.Forms時避免發生此問題的方式


透過檔案總管的網址列直接鍵入c:\Users\<Your Account>\AppData\Local,並在Local資料夾底下找尋Xamarin資料夾,如果沒有就自己手動建立一個Xamarin資料夾,如果有也建議直接刪除已存在的Xamarin資料夾再重新建一個,接著再進到這個Xamarin資料夾。

PS 由於AppDataWindows是個系統隱藏資料夾,無法直接在檔案總管當中瀏覽到,請直接用網址列鍵入位置。

在這個空的Xamarin資料夾繼續建立一個叫做zips的資料夾,並且將前述的前置作業中所下載變更命名好的2A3A8A6D6826EF6CC653030E7D695C41.zip,複製到這個zips資料夾當中,如下圖:



接著在Visual Studio建立一個Xamarin.Forms的專案,而當專案本身所使用的Xamarin.FormsNuget Package升級到2.2.0.31時,在Android平台編譯時會根據依賴的MonoAndroid Nuget Package版本而用到android_m2repository_r29.zip的部分。當然會更建議是直接將Xamarin.FormsNuget Package升級到2.3.3.xxx以後的版本(而在目前這個時間點的最新穩定版是2.3.3.175)

完成後就可以在Visual Studio當中將Xamarin.Forms的專案建置or重建,接著再將Android平台的專案建置or重建而在這個時候重建的時間會相當久,理由是編譯的過程會先去將剛剛的那個2A3A8A6D6826EF6CC653030E7D695C41.zip作解壓到zips這個資料夾的上層資料夾Xamarin當中,並且編排Nuget Package所需對應Android SDK套件,所以會看到在該Xamarin資料夾當中會形成如下圖的呈現結果:




PS 只有第一次使用時會需要這樣,之後的Xamarin.Forms專案在編譯Android的平台App時,就會直接用已經對應好的相關套件內容,所以編譯的速度就會加快了。

靜待一段時間後,就會看到Visual Studio告知編譯成功的訊息。




Mac中第一次使用Xamarin.Forms時避免發生此問題的方式


首先打開Mac的終端機,輸入mkdir -p .local/share/Xamarin/zips 的指令,會在/Users/<Your Account>” 底下建立一個叫做”.local的資料夾然後一直到叫做zips資料夾,如下圖結果:




可以透過Finder前往”->”前往資料夾,然後輸入/Users/<Your Account>/.local開啟該資料夾的瀏覽。

PS 注意local的前面要有一個.

來就將前述的前置作業中所下載變更好命名的2A3A8A6D6826EF6CC653030E7D695C41.zip檔案,複製到這個zips資料夾當中,如下圖:



接著開啟Xamarin Studio當中,建立一個Xamarin.Forms的專案,而當專案本身的Xamarin.FormsNuget Package升級到2.2.0.31時,在Android平台編譯時會根據依賴的MonoAndroid Nuget Package版本而用到android_m2repository_r29.zip的部分。當然會更建議是直接將Xamarin.FormsNuget Package升級到2.3.3.xxx以後的版本(而在目前這個時間點的最新穩定版是2.3.3.175)

完成後就可以在Xamarin Studio當中將Xamarin.Forms的專案建置or重建,接著再將Android平台的專案建置or重建。而在這個時候重建的時間會相當久,理由是編譯的過程會先去將剛剛的那個2A3A8A6D6826EF6CC653030E7D695C41.zip作解壓到zips這個資料夾的上層資料夾Xamarin當中,並且編排Nuget Package所需對應Android SDK套件,所以會看到在該Xamarin資料夾當中會形成如下圖的呈現結果:




PS 只有第一次使用時會需要這樣,之後的Xamarin.Forms專案在編譯Android的平App,就會直接用已經對應好的相關套件內容,所以編譯的速度就會加快了。

靜待一段時間後,就會看到Xamarin Studio告知編譯成功的訊息。




4. 參考來源


Xamarin.Android or Xamarin.Forms的開發過程遭遇Please install package Xamarin.Android.Support.XXXX的編譯錯誤訊息,該如何解決呢?:
https://tpu.thinkpower.com.tw/tpu/File/html/201605/20160531122859_f.html


Linux 檔案與目錄管理:
http://linux.vbird.org/linux_basic/0220filemanager.php