2017-02-02 34 views
-1

我正在閱讀Xamarin,並且偶然發現了一個令我困惑的話題。我的意圖是,開發一個iOS應用程序作爲我的項目的目標。但是,由於其他情況,我現在只能在Android手機上進行測試,並且只能在iPhone上進行最後一部分測試。因此,該應用程序必須先開發和測試Android,然後再通過Xamarin部署爲iOS應用程序。Xamarin跨平臺應用程序與原生應用程序開發的想法是什麼?

在安裝了Xamarin的Visual Studio中,可以選擇使用本機應用程序開發,如Xamarin.iOS,Xamarin.Droid和Xamarin Windows應用程序。據我所知,一些更有經驗的程序員告訴我,這三個應用程序/平臺中的哪一個可以選擇用於最初的開發並不重要,因爲它總是可能的 - 同樣通過Xamarin - 可以部署到最終需要的任何平臺。

現在在項目菜單中還有第四個應用程序解決方案,稱爲「跨平臺」,這使我感到困惑。據我所知,這是一個普通的應用程序選擇,幾乎實現了與前一段中提到的本地應用程序相同的目的 - 部署到項目結束時所需的任何平臺。

除非我在這裏誤解了一些東西,如果它可以與原生應用程序基本相同,那麼將所謂的「跨平臺應用程序」作爲第四選擇的區別或想法到底是什麼?

+1

我感到非常驚訝,4人覺得需要投票決定一個完全合法的問題,意在產生知識,以造福所有人。正如另一個線程中有人曾經指出的那樣,當一個人提前道歉(!)提出問題時,似乎覺得需要這個問題感到非常難過。有些人的態度是令人難以置信的敵對態度,有時甚至是有毒的。我最近問了幾個問題,並通過很好的答案獲得了很好的結果,現在呢?感謝球員們刪除我可以用來投票表達某人的問題作爲感謝的代表。你還想問我這個問題嗎? – themightyhulk

+0

我在規則中編輯我的帖子以符合規則。現在它關閉了......?!關閉此線程的人要麼立即重新打開它,要麼給我解釋一下。謝謝。 – themightyhulk

+0

在對我的請求沒有任何迴應,而沒有任何解釋的情況下永久關閉線程(雖然編輯了有問題的部分,涉及「主要基於觀點的投訴」),但這種類型只有一個答案不尊重的行爲,這就是...,https://hackernoon.com/the-decline-of-stack-overflow-7cb69faa575d – themightyhulk

回答

3

在Xamarin有兩種方法:

  1. 傳統方法,您共享應用程序的業務邏輯和你寫的UI專爲使用Xamarin.Android或Xamarion.iOS API的每個平臺爲目標〜代碼的佔有率達到70% 。
  2. Xamarin.Forms是一個在特定API(Xamarin.Android和Xamarin.iOS)之上的庫,用於幫助共享UI以及大約90%的代碼共享。

隨着Xamarin您生成一個本機應用程序,並保持在提出報價:

一切你可以在本地使用Java,Objective-C的或SWIFT你 應該能夠與Xamarin做。

+0

這不是一個事實。使用「傳統」方法時,您可以獲得更多的共享代碼。這完全取決於您與業務邏輯相比有多少UI代碼。 – Cheesebaron

+0

謝謝你的迴應,阿納斯。我認爲,這是最有用的答案,直到我的帖子「主要以意見爲基礎」被擱置,我坦白地不明白,因爲沒有徵求意見,而不是要求解釋一些Xamarin項目類型以及它們的功能,事實上,這些功能只能用事實來解釋。因此,我將您的答案標記爲正確答案,但在「跨平臺」菜單下仍然存在「空白應用程序(本機和便攜式)」的問題。如果您對該部分有任何意見,請在下面發表評論。謝謝! – themightyhulk

1

Xamarin不會神奇地製作一個應用程序,你爲Android編寫應用程序,在iOS上運行。至少不是沒有創建一個iOS應用程序和所有的UI等等。

藉助Xamarin,您可以創建原生應用程序,只需用C#代替Java或Objective-C或Swift編寫。

那麼爲什麼選擇Xamarin?它使您能夠共享批號的代碼。根據您構建代碼的方式,有些應用程序可以實現90%以上的共享代碼或更多。不過,這個應用程序與應用程序有很大的不同,不同的是你是否使用Xamarin.Forms。

您可能指的是您的問題中的Xamarin.Forms以及隨附的項目類型。 Xamarin.Forms是在Xamarin.Android,Xamarin.iOS和UWP之上運行的UI框架。但是,請注意,這只是一個UI框架,它可能會滿足您的所有需求。

但是,Xamarin.Forms不會在iOS上運行Android應用程序。您使用Xamarin.Forms編寫的用戶界面具有巨大的運行潛力,並且在iOS上看起來也不錯。但是,它仍然運行在iOS項目中,而不是Android項目中。對於您要定位的任何其他平臺,情況就是如此。

Xamarin.Forms是這些獨立平臺之上的一個抽象,可以幫助您編寫一次UI,並可能在任何地方運行,以及導航和服務定位器等其他功能。

您在Visual Studio的跨平臺部分中提到的項目類型,只是創建Xamarin.Forms應用程序的不同方法。這可以在可移植類庫(PCL)中,該庫創建一個針對所選目標的.NET功能的常見子集的程序集。沿着PCL,每個受支持的平臺都會有一個應用程序項目。

另一種類型是使用與PCL不同的Shared Project類型創建Xamarin.Forms應用程序。怎麼樣?共享項目應該作爲一個美化文件鏈接項目。呃什麼?在構建項目時,將共享項目中的文件複製並編譯到應用程序項目本身中來查看它。因此,您可以在該共享項目中編寫特定於平臺的代碼。但是,它確實不會生成一個可以像PCL一樣與朋友分享的程序集。

這是很多Xamarin.Forms的談話。但是,Xamarin.Forms是而不是您可以創建Xamarin應用程序的唯一方法。 Xamarin提供了1:1的本地API暴露。這意味着,就像在iOS上創建故事板,ViewControllers,利用UIKit進行視圖等。您可以在Xamarin.iOS項目中執行完全相同的操作。 Xamarin.Android也是如此,您只需在Xamarin.Android項目中創建Widgets,Activities等。這兩個產生一個本地應用程序。但是,在這種情況下,UI不會被抽象化,並且可以爲您定製應用程序提供更多的功能,而無需針對Xamarin.Forms進行工作。

你應該選擇哪一個?這取決於你自己的想法。兩種方法完全產生原生具有原生UI的應用。這取決於你是否想要更多或更少的抽象。

+0

感謝您的回覆和詳細信息。我想盡管你誤解了我的問題。我完全意識到你解釋的大部分內容(我花了好幾個小時來看Xamarin大學關於Xamarin的設置和功能,本地方法和形式方法等的講座)。我只是想了解「cross -平臺」。你在第七段提到它基本上是一個表單工具。但是,兩個第一種類型的項目是空白應用程序(本地和便攜式),沒有提到窗體。所以這些和其他的沒有什麼不同,但也是形式? – themightyhulk

+0

長答案,正確答案,詳細答案...爲什麼沒有upvotes? – Bartosz

相關問題