在上一篇文章里我们已经成功的在模拟器中运行了我们的Hello World程序,在这里我先纠正之前的一个错误。之前我以为MonoDroid只能创建2.2以上版本的程序,所以当时我让大家只下载Android SDK 2.2版本,但事实上MonoDroid可以支持的最低版本是1.6,可以在项目的属性中进行设置。首先在解决方案资源管理器中你的项目名上右键,然后点击属性,VS就会打开项目属性窗口,然后在Minimum Android to Target下拉框中选择相应的版本即可。如下图:
接下来的问题很自然就是,既然我们的程序可以在模拟器中运行,那到底能不能在我们实际的手机中运行呢?这才是最关键的。首先我们先看看项目部署完以后生成了什么东西。打开你的项目所在的文件夹,bin/Debug/目录,可以看到,生成了一个dll,mdb,pdb和两个apk,既然有apk,那就有戏,我把手机通过usb连到我的pc以后,把这两个apk都拷到了我的手机sd 卡中,先运行文件名不带-Signed的apk,结果报错,再试试带-Signed的,安装成功,心情兴奋加激动,马上打开程序,结果报错,无法运行。看了一下apk文件的大小,大概是100多K,估计是没有把Mono的运行时一并打包安装造成的,遂马上寻找解决方案。通过与官网的技术人员沟通得知,解决此问题有两种方案:
一,将C:/Program Files/MSBuild/Novell/Mono.Android.DebugRuntime-debug.apk和C:/Program Files/MSBuild/Novell/platforms/下对应你手机Android版本的文件夹下的Mono.Android.Platform.apk这两个文件一起拷到你的手机并安装。
二,使用Release版本来生成你的程序。
显然,如果用第一种方法的话,我们做一个Hello World程序需要三个安装文件是极为不妥的,再加上运行时和平台这两个apk都在14M大小左右,所以可以否定第一种方法了。那我们就采用第二种方法,生成Release版本,注意在项目属性中,Linking需要选择 “Sdk Assemblies only”,Use Shared Runtime必须不勾选,如下图:
生成后在Release文件中也会有两个apk,只拷贝文件名带-Signed的apk到你的手机进行安装,然后运行,OK,你的Hello World终于可以在你的手机运行了。
由Release生成的apk大小为4M+,不得不说也是一个巨无霸了,毕竟这只是一个简单的Hello World程序而已,MonoDroid程序继承了.net程序需要运行平台的这个缺点,只是从.net framework变成了mono runtime而已。如果认为使用MonoDroid开发的程序大得无法接受,那么现在放弃还来得及~~