【Xamarin开发 Android 系列 13】 应用打包部署
原文:【Xamarin开发 Android 系列 13】 应用打包部署
开始倒叙咯................
先更新大宝部署吧,这个章节比较的Easy,童鞋们不用费脑筋。点解?从界面上填写几个参数,其他都是傻瓜式的【下一步】,童鞋们是否喜欢。卤煮 反正很是受用。
我们开发好的程序,需要打包成 .apk,成为安卓的安装包。然后就可以通过下载的形式安装到 用户终端手机/平板/TV/Watch。。。。。。。
发布程序 主要的还是将应用发布到 谷歌的官方商店 Google Play。。再然后就是其他的应用市场,国内的 百度应用 安智市场 360应用等等
我们分3步讲解:
1、打包
2、生成的程序包结构
3、发布到应用平台市场
【打包】
打包的时候,相当与我们发布程序。此时的编译模式应该选择 【Release】 ,而不是【Debug】。采用Debug 模式的时候,Xamarin 会使用 Java的 Java Debug Wire Protocol (Java 调试线协议(JDWP))-------延伸:
JPDA(Java Platform Debugger Architecture) 是 Java 平台调试体系结构的缩写,通过 JPDA 提供的 API,开发人员可以方便灵活的搭建 Java 调试应用程序。JPDA 主要由三个部分组成:Java 虚拟机工具接口(JVMTI),Java 调试线协议(JDWP),以及 Java 调试接口(JDI) 其中常用的开发平台Eclipse中自带了JDWP兼容的调试器,命令行中常见的有jdb等。
采用【Debug】模式的时候,Xamarin 会在 AndroidManifest.xml、AssemblyInfo.cs 两个文件中进行信息配置。
其中 AndroidManifest.xml 中的
<application
. . .
android:debuggable="true"
. . .
</application>
AssemblyInfo.cs 文件中的
#if RELEASE
[assembly: Application(Debuggable=false)]
#else
[assembly: Application(Debuggable=true)]
#endif
--------------------所以,我们只需要将发布模式改为 Release 即可。
【连接器】
连接器,用来进行带代码分析。将你程序中需要的程序类型 Type进行分析。将需要的类型和不需要的类型进行区分开来,然后编译的时候,减少不必要的程序集的体积开销。
项目属性的配置选项中,有连接器这个选项。

在vs 中的连接选择,默认是 【None】,这个None其实就是,关闭链接信息。
仅仅SDK X需要的程序集。也就是第二个选择项。
第三个是所有程序集。开发中用到的SDK 程序集,第三方程序集都会被打包进程序包。
其实如果不是 部署到测试机,我们选择第二种模式就好。出来的程序包 体积较小。
如果你想自己定义,也可以。Xamarin 提供了自定义配置SDK 程序集信息的文件,也就是个xml文件,在其中定义好 程序集的 type就好。
其他配置选项,一目了然,就不一一介绍了。
【发布打包程序】
程序包的发布需要一个数字签名证书,没有证书是不允许在设备上运行的。但是我们调试的时候,并没有给程序包签名,为啥还可以跑呢?
那是因为,在Xamarin编译程序的时候,自动使用一个调试模式的证书为程序签名了。
好,既然发布程序,那么一开始我们没有为此程序设定证书,我们新建一个证书。。。。喜欢命令行 批的请绕开。我们直接使用UI工具创建证书。


填写对应的信息,注意:填写的密码要记住,以后发布都需要的。。。。。。创建好证书后,以后就可以使用这个证书为此程序进行签名了。
【发布到谷歌Play】
签名之后,用zipalign(压缩对齐)优化你的APK文件。
未签名的apk不能使用,也不能优化。签名之后的apk谷歌推荐使用zipalign.exe(位于android-sdk-windows\tools目录下)工具对其优化:
D:\>zipalign -v 4 demo_signed.apk final.apk
如上,zipalign能够使apk文件中未压缩的数据在4个字节边界上对齐(4个字节是一个性能很好的值),这样android系统就可以使用mmap()(请自行查阅这个函数的用途)函数读取文件,可以在读取资源上获得较高的性能,
PS:1.在4个字节边界上对齐的意思就是,一般来说,是指编译器吧4个字节作为一个单位来进行读取的结果,这样的话,CPU能够对变量进行高效、快速的访问(较之前不对齐)。
2.对齐的根源:android系统中的Davlik虚拟机使用自己专有的格式DEX,DEX的结构是紧凑的,为了让运行时的性能更好,可以进一步用"对齐"进一步优化,但是大小一般会有所增加
【申请账号】
Android Market google play store帐号申请 注册方法流程
应用管理控制台google搞得很隐蔽,比较难找到 https://play.google.com/apps/publish/ 输入上面网址登录后可以直接跳转到管理应用的界面
目前测试交费后可以上传程序 但仍然需要审核,不能马上发布,但时间很快一般一天以内可以完成。
2013-03-12 注:现在应用控制台有改版了变成:https://play.google.com/apps/publish/v2/
控制台里面发布流程和操作界面变化很大了
=========================
五:发布成功一小时后仍然无法在市场上搜索到发布的应用,本人测试两个小时后就搜索到了,估计需要一段时间建立索引后才能搜索到。
==================================
------------*************需要图的可以参考此文章: http://www.zhuayoukong.com/73895.html **************
【Xamarin开发 Android 系列 13】 应用打包部署的更多相关文章
- 【Xamarin开发 Android 系列 1】环境部署搭建
原文:[Xamarin开发 Android 系列 1]环境部署搭建 开篇自然先扯一段,近几年移动互联网如果熊猫零食一样,蔓延迅速.楼主身为一个微软忠实的粉丝,无奈,老爹不给力.Silverlight开 ...
- 【Xamarin开发 Android 系列 3】循序渐进的学习顺序
原文:[Xamarin开发 Android 系列 3]循序渐进的学习顺序 指定合理的学习步骤,将各个技术点进行强化.慢慢 的就从点到线 到面的飞跃,一切仅仅是时间问题,开始前,请记住,学习是最佳的投资 ...
- 【Xamarin开发 Android 系列 4】 Android 基础知识
原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android? Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Li ...
- 【Xamarin开发 Android 系列 7】 Android 结构基础(下)
原文:[Xamarin开发 Android 系列 7] Android 结构基础(下) *******前期我们不打算进行太深入的东西,省的吓跑刚进门的,感觉门槛高,so,我们一开始就是跑马灯一样,向前 ...
- 【Xamarin开发 Android 系列 5】 Xamarin 的破解
原文:[Xamarin开发 Android 系列 5] Xamarin 的破解 有关这个话题,十分敏感,公司开发还是支持下商业版权吧,毕竟一帮猴子辛辛苦苦没日没夜的干活,不说开宝马奔驰,吃饭还是必须的 ...
- 【Xamarin开发 Android 系列 6】 Android 结构基础(上)
原文:[Xamarin开发 Android 系列 6] Android 结构基础(上) 前面大家已经熟悉了什么是Android,而且在 [Xamarin开发 Android 系列 4] Android ...
- 【Xamarin开发 Android 系列 2】VS2015跨平台开发的几种方式
原文:[Xamarin开发 Android 系列 2]VS2015跨平台开发的几种方式 在微软Build大会上,微软宣布在VS2015中支持三种方式进行跨平台的开发. 1. Xamarin 2. Co ...
- 【Xamarin开发 Android 系列 8】 创建一个Json读取数据应用(上)
后续将内容贴上来...........
- C#使用Xamarin开发Android应用程序 -- 系列文章
Xamarin开发Android应用程序 利用Xamaria构建Android应用-公交发车信息屏 Xamarin版的C# SVG路径解析器 C#使用Xamarin开发可移植移动应用(1.入门与Xam ...
随机推荐
- magento性能优化的教程(非常详细)
Magento是一套专业开源的电子商务系统,Magento设计得非常灵活,具有模块化架构体系和丰富的功能但有朋友会发现此模块用到了会发现非常的缓慢了,那么下面我们来看关于magento性能优化的例子. ...
- UML类图细节
类图表述的是类和类之间的关系,是前期用来推演代码设计,后期用来优化代码的结构,寻找设计不合理之处.网上解释类图和类图的画法,往往表述的十分晦涩,或者例子呆板,很难具体的操作. 类图一般在详细设计过程中 ...
- node.js 访问sql server的 node_modules “msnodesql"的安装编译方法
http://stackoverflow.com/questions/19661811/unable-to-download-msnodesql-0-2-1-v0-10-x64-msi 首先要满足以下 ...
- static与get属性的作用
一.Static 用于没有属性的类中,不用保存属性的值,例如 var user=new User(): user.Name="jack" 可以直接调用类中的方法,避免需要多次访问该 ...
- OEL5.5安装Oracle 11gr2详解
虚拟机环境:Vmware Workstation 11.1.0 + Oracle Enterprise Linux 5.5 X86-641.物理机内存设置 最小:1GB 推荐:2GB或以上 检测内存大 ...
- iOS app提交审核 11.13条款问题
今年开年到现在.提交app应用一直招拒,这个问题我想不明白,感觉就是一个坑.所以贴出来给大家看看. 发件人 Apple11.13 - Apps that link to external mechan ...
- java新手笔记2 数据类型
1.注释 /** doc注释 * 类说明信息 */ //声明类 文件名与类名一致 public class World {//类定界符 //声明方法 main方法 public static void ...
- Codevs 5056 潜水员
5056 潜水员 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 潜水员为了潜水要使用特殊装备.他有一个带两种气体的气缸:一个为氮气 ...
- WinForm TreeView 三种状态
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { var node = e.N ...
- PL/SQL学习(一)
原文参考:http://plsql-tutorial.com/ 组成: 声明部分(可选) 执行部分(必选) 异常处理(可选) 声明: DECLARE 执行: ...