Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以从Linux CLI为Android编译Xamarin?_Android_Xamarin_Xamarin.android - Fatal编程技术网

是否可以从Linux CLI为Android编译Xamarin?

是否可以从Linux CLI为Android编译Xamarin?,android,xamarin,xamarin.android,Android,Xamarin,Xamarin.android,我们有一个Android应用程序,根据每个客户端使用自定义信息进行编译。 目前,我们的应用程序是使用Ionic构建的,因此当用户要求下载APK时,我们会自动相应地修改其源代码,编译应用程序并从客户端提供下载。 所有这些都是在Linux服务器上完成的 我们现在想离开爱奥尼亚,在我们的新版本中使用Xamarin。但我们需要实现与以前相同的过程。 那么,是否有可能像我们构建安卓系统那样,从Linux编译针对安卓系统的Xamarin呢?简短的回答是:是的,但是 Linux目前不是Microsoft/Xa

我们有一个Android应用程序,根据每个客户端使用自定义信息进行编译。 目前,我们的应用程序是使用Ionic构建的,因此当用户要求下载APK时,我们会自动相应地修改其源代码,编译应用程序并从客户端提供下载。 所有这些都是在Linux服务器上完成的

我们现在想离开爱奥尼亚,在我们的新版本中使用Xamarin。但我们需要实现与以前相同的过程。
那么,是否有可能像我们构建安卓系统那样,从Linux编译针对安卓系统的Xamarin呢?

简短的回答是:是的,但是

Linux目前不是Microsoft/Xamarin发布的
Xamarin.Android
分布式预打包版本所支持的环境,但是使用开源代码,您可以在Linux上构建
Xamarin.Android
,然后在
Xamarin.Android
项目上使用
xabuild

注意:在设置、环境、bug等方面,您都是独立的。。。(但开源代码是在Ubuntu构建服务器上构建的,详情请参见Github repo)

Github回购协议

参考:

新参考号:


旧的参考文献:

是的,这是可能的,不过一旦.NET5出现,它会变得容易得多

使用此docker图像(直接或出于灵感):

然后运行msbuildsolutionfile.sln/p:androidsdkddirectory=/android/sdk/restore

我在Linux Mint机器上尝试过

docker pull vonproteus/xamarin-android-docker
然后

只需将
~/Downloads/Helloworld/
Helloworld.Android/Helloworld.Android.csproj
更改为您的项目位置和Android项目名称

-v~/Downloads/Helloworld/:/test
表示我们正在docker中创建一个虚拟目录,以便msbuild可以工作
msbuild
将抛出
msbuild:错误MSB1009:项目文件不存在。
如果未设置虚拟路径

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