1. 苏葳的备忘录首页
  2. 移动平台

Visual Studio 2015里用Xamarin开发Android应用

android vs2015 xamarin最近Windows10升级的新闻炒成一片,但对我而言,最感兴趣的则是传说中的Win10可以运行Android和IOS应用。听闻VS2015中可以也用C#开发安卓或IOS程序了,兴奋的下载下来装上,却发现仍是使用Xamarin平台框架。以前倒是关注过这个框架,但其收费政策让人望而却步。今天仔细看了一下,似乎可以注册免费的Starter帐号用于开发测试,并且布署到设备上去,尽管对Starter帐号的功能限制不甚了了,也还是试试吧。

建立并登录Xamarin帐号之后,创建了blank android应用或webview应用,都是报错,生成没有成功。报出“java.exe exited with code 1. (msb6006)”之类的错误。网上找方法,比如修改项目设置中java的最大堆尺寸,也没有作用。

后来想是不是N年前系统上安装的Android SDK没有升级的问题?

找到硬盘上Android SDK的安装目录,双击SDK Manager.exe启动SDK管理器时,窗口一闪而过,看不到什么报错,却没有启动起来。AVD管理器也是一样。

打开CMD窗口,查看系统JAVA版本是 1.7.0。但是执行javac的时候,却提示无此命令。难道机子上没有安装过JDK?去安装卸载里查看,却有JDK。看来大约是长期使用过程中,某些程序改变了JDK的路径变量。于是把JDK的bin路径放在PATH变量的最前面,再双击SDK Manager.exe,好了SDK管理器启动了。

重新尝试在VS2015里编译Xamarin应用,仍是报一样错误,那就先升级下Android的SDK再说吧。

但是升级时也遇到麻烦,比如有两个需要升级的包,下载完后提示null,然后是nothing was installed。有人说将SDK管理器的tools菜单里的选项设为从https下载,试了还是不行,决定上代理再试试。上了某vpn代理,仍是一样的结果。后来看到此代理界面上显示有同时启动的http代理服务端口信息。于是将IP和端口信息填进SDK管理器选项中,再点击更新。这次看到下载的进度条了。看来有可能成功啊。

经过漫长的反复多次的下载更新过程,最后甚至把该分区上几十G的硬盘空间给用完了,终于更新到了一个比较新的版本,下面是SDK管理器日志中正确的更新信息:

Download interrupted: Read timed out
Downloading Android SDK Build-tools, revision 18.1
Installing Android SDK Build-tools, revision 18.1
Installed Android SDK Build-tools, revision 18.1
Downloading Android SDK Build-tools, revision 18.0.1
Installing Android SDK Build-tools, revision 18.0.1
Installed Android SDK Build-tools, revision 18.0.1
Downloading Android SDK Build-tools, revision 17
Installing Android SDK Build-tools, revision 17
Installed Android SDK Build-tools, revision 17

然后,在VS2015里打开之前编译失败的Xamarin项目,重新生成项目,成功了!看来Android SDK的版本升级也是正确运行Xamarin应用的一个前提。

Visual Studio 2015里用Xamarin开发Android应用

然后,点击在“avd2.3”里运行。注意“avd2.3”是很久以前创建的一个Android 2.3版本的模拟器。可以看到avd2.3正确启动了,出现了Android模拟器的窗口。但是,在里面却找不到调试的应用,比如本次调试的Xamarin应用App3的图标。用模拟器里安装的文件管理器搜索,也找不到App3的apk安装文件。

后来在某处看到提示,打包的应用需要某级别的API Level,而模拟器5554是某级别的API Level,需要在Android的应用属性里将API Level相应调整之类的。于是把App3应用的API Level调成Level 10,也就是Android 2.3版本。再启动调试:

1>Packaging application..
1>已启动生成。
1>C:\Program Files (x86)\MSBuild\14.0\bin\csc.exe /noconfig /nowarn:1701,1702,2008 /nostdlib+ /errorreport:prompt /warn:4 /define:DEBUG;TRACE;__XAMARIN_ANDROID_v1_0__;__MOBILE__;__ANDROID__;__ANDROID_1__;__ANDROID_2__;__ANDROID_3__;__ANDROID_4__;__ANDROID_5__;__ANDROID_6__;__ANDROID_7__;__ANDROID_8__;__ANDROID_9__;__ANDROID_10__ /errorendlocation /preferreduilang:zh-CN /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v2.3\Mono.Android.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\mscorlib.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Xml.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Xml.Linq.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\Debug\App3.dll /ruleset:"D:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Static Analysis Tools\\Rule Sets\MinimumRecommendedRules.ruleset" /target:library /utf8output MainActivity.cs Resources\Resource.Designer.cs Properties\AssemblyInfo.cs "C:\Users\SuWei\AppData\Local\Temp\MonoAndroid,Version=v2.3.AssemblyAttributes.cs" obj\Debug\\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs obj\Debug\\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs obj\Debug\\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
1>App3 -> g:\documents\suwei\documents\visual studio 2015\Projects\App3\App3\bin\Debug\App3.dll
1> Processing: obj\Debug\res\layout\main.xml
1> Processing: obj\Debug\res\values\strings.xml
1>C:\Program Files\Java\jdk1.7.0\\bin\keytool.exe -list -alias androiddebugkey -storepass android -keypass android -keystore "C:\Users\SuWei\AppData\Local\Xamarin\Mono for Android\debug.keystore"
1>C:\Program Files\Java\jdk1.7.0\\bin\jarsigner.exe -keystore "C:\Users\SuWei\AppData\Local\Xamarin\Mono for Android\debug.keystore" -storepass android -keypass android -digestalg SHA1 -sigalg md5withRSA -signedjar bin\Debug\\App3.App3-Signed-Unaligned.apk "g:\documents\suwei\documents\visual studio 2015\Projects\App3\App3\obj\Debug\android\bin\App3.App3.apk" androiddebugkey
1>D:\Program Files (x86)\Android\android-sdk\build-tools\22.0.1\zipalign.exe 4 "g:\documents\suwei\documents\visual studio 2015\Projects\App3\App3\bin\Debug\App3.App3-Signed-Unaligned.apk" "bin\Debug\\App3.App3-Signed.apk"
1>已成功生成。
1>Waiting for device..
1>Detecting installed packages
1>Detecting installed packages...
1>
1>Installing shared runtime
1>Target device is armeabi.
1>Installing the Mono shared runtime (armeabi - 1436892197)...
1>
1>Installing platform framework
1>Installing the API 10 platform framework..
1>
1>Installing application on device
1>Copying application to device...
1>
1>Getting installation path...
1>Using fast dev path: /mnt/sdcard/Android/data/App3.App3/files/.__override__
1>Synchronizing assemblies...
1>Synchronizing assemblies
1>
========== 部署: 成功 1 个,失败 0 个,跳过 0 个 ==========

OK,提示部署成功了。在avd2.3模拟器里查看,桌面上也出现了App3的图标。点击运行,正常。

Visual Studio 2015里用Xamarin开发Android应用

暂时还没有开发安卓客户端的需求,那就暂时告一段落吧。

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/2145.html

发表评论

邮箱地址不会被公开。 必填项已用*标注