我们有一个Android应用程序,根据每个客户端使用自定义信息进行编译。 目前,我们的应用程序是使用Ionic构建的,因此当用户要求下载APK时,我们会相应地自动修改其源代码,编译应用程序并从客户端提供下载。 所有这些都是在Linux服务器上完成的。
我们现在想离开Ionic并使用Xamarin作为我们的新版本。但我们需要实现与之前相同的过程。
那么有可能从Linux编译Xamarin for Android就像我们ionic build android
一样吗?
答案 0 :(得分:2)
简短回答:是的,但是......
Linux不是Microsoft / Xamarin的分布式预打包版本的Xamarin.Android
当前支持的环境,但使用开源代码,您可以构建Xamarin.Android
在 Linux 上,然后在xabuild
项目中使用Xamarin.Android
。
注意:您在设置,环境,错误等方面都是独立的...(但是开源代码是在Ubuntu构建服务器上构建的,有关详细信息,请参阅Github存储库)
Github repo :https://github.com/xamarin/xamarin-android
参考:https://bugzilla.xamarin.com/show_bug.cgi?id=142
新参考:https://github.com/xamarin/xamarin-android/blob/master/Documentation/workflow/UsingYourBuild.md
旧参考:https://github.com/xamarin/xamarin-android#linux-build-notes
答案 1 :(得分:0)
是的,尽管一旦.net 5出现会容易得多。
(直接或出于启发目的)使用此docker映像:https://hub.docker.com/r/vonproteus/xamarin-android-docker
然后运行msbuild SolutionFile.sln /p:AndroidSdkDirectory=/android/sdk /restore
答案 2 :(得分:0)
我在Linux Mint机器上尝试过https://hub.docker.com/r/vonproteus/xamarin-android-docker。
docker pull vonproteus/xamarin-android-docker
然后
sudo docker run -v ~/Downloads/Helloworld/:/test vonproteus/xamarin-android-docker msbuild test/Helloworld.Android/Helloworld.Android.csproj /restore /p:AndroidSdkDirectory=/android/sdk /p:AndroidBuildApplicationPackage=true
只需将~/Downloads/Helloworld/
和Helloworld.Android/Helloworld.Android.csproj
更改为您的项目位置和Android项目名称。
-v ~/Downloads/Helloworld/:/test
意味着我们正在docker内部创建一个虚拟目录,以便msbuild可以工作。如果您未设置虚拟路径,则msbuild
会抛出MSBUILD : error MSB1009: Project file does not exist.
。