建立并登录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应用的一个前提。
然后,点击在“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的图标。点击运行,正常。
暂时还没有开发安卓客户端的需求,那就暂时告一段落吧。
原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/2145.html