【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 ...
随机推荐
- C#泛型集合—Dictionary<K,V>使用技巧
转载:http://blog.csdn.net/a125138/article/details/7742022 1.要使用Dictionary集合,需要导入C#泛型命名空间 System.Collec ...
- css实现基础几何图形
我们知道,css3通过border-radius.animation.transform等“新”特性可以绘制很多精致的图形.比如腾讯企鹅Logo.超能陆战队中的大白机器人.太阳系.小黄人.叮当猫.安卓 ...
- Unity3D 之UGUI 切换开关(toggle)
(toggle)开关能够实现通过点击实现开和关. 开关下面有两个游戏元素,一个是背景,一个是文字,背景是开关按钮的背景. 可以通过 Is ON开控制开关的开与关. Group -->分组,能够实 ...
- ADO.Net知识总结
(一)基础知识 ADO.NET: .NET中用来向数据库提交执行SQL语句的一堆类 本机访问直接"Windows验证",但是一般项目中都是单独的数据库服务器,程序在另外一台电脑上连 ...
- 20160322 javaweb 学习笔记--response验证码实现
package com.dzq.servlet; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; im ...
- 响应式框架中,table表头自动换行的解决办法
最近在用bootstrap开发网站,在处理一张table的时候发现,通过PC端查看样式正常,在手机上查看时,因为屏幕小,表格被压缩的厉害,表头和数据变形如下图 后来网上找了一下,发现一个好用的CSS属 ...
- 有理数类 Java BigInteger实现
import java.math.BigInteger; public class Rational extends Number implements Comparable { private Bi ...
- javascript在html中使用 第10节
javascript在html中使用 index.html: <html> <head> <title>javascript</title> <s ...
- Quartz2.2.1操作手册
一.初识quartz JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1") ...
- 14_输出映射2_resultMap
[resultMap] 如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间做一个映射列表. 1.定义resultMap,(在UserMapper.xm ...