Xamarin.Android 打包Apk

由于大部分内容来自Xamarin的官网,因此这篇文章定义为翻译,原文地址: http://developer.xamarin.com/guides/android/deployment,_testing,_and_metrics/publishing_an_application/part_1_-_preparing_an_application_for_release/

转载请注明出处:http://blog.csdn.net/supluo/article/details/43950105

个人搞了个博客App,平时上个厕所,睡觉前等随便看两篇文章,总能有些收获,希望大家支持!http://blog.csdn.net/supluo/article/details/43489475

一个应用经过编码测试之后,接下来就是应该打包发布,Xamarin.Android的打包需要经过一下几个步骤:

1、以Release模式编译程序

--这一步包括设置一些应用程序的属性。

2、创建一个私钥

--Apk是需要进行数字签证之后才可以在手机上运行的,我们调试的时候,编译器会默认以一个debug.keystore(通常在C:\Users\{pc name}\.android路径下)进行签名;

因此这一步我们需要创建一个属于我们自己的秘钥用于对apk进行签名(此秘钥不可丢弃,否则后续的升级之类会出现签名问题)。这一步通常只需要做一次,也就是一个秘钥是可以重复使用的。

3、对Apk签名

--用私钥对Apk进行数字签名

4、对Apk进行Zipalign操作

--zipalign其实是Android SDK中包含的一个工具,它能够对打包的应用程序进行优化,使得在运行时交互更为有效。Xamarin.Android会在运行时进行检查并且不允许没有经过zipaligned操作的Apk运行。

上面的3、4两个步骤在Xamarin Studio和Visual Studio上有所不同,下面详细说明。

一、以Release模式编译程序

以Release模式编译程序应该处理以下步骤:

1)、设置运行模式为Release(在编译器顶部的工具栏上面)。

--这一步是为了防止用户在设备上使用ADB或者其他工具进行调试。

2)、明确程序图标

--每一个Android程序都应该指定一个应用程序图标,虽然这个在技术层面上并不是必须的,但是在一些应用市场,比如Goole Play等这些就会要求这个。

3)、设置版本号

--这一步是为了初始化活着更新版本信息,这个对于以后程序的更新和确保用户知道他们安装的是什么版本的应用很重要。

4)、设置Linker

--Linking是Xamarin.Android特有的步骤,可以通过除去未使用的代码大大减少最终的APK大小。

5)、编译

--这一步将会把代码和资源整合到一个APK中用于准本签名。

在发布的时候,通常我们要设置Application(Debuggable = false);

这里我们有一个最简单的方法,将以下代码加入到AssemblyInfo.cs(项目工程的Properties目录下)中:

#if DEBUG
[assembly: Application(Debuggable=true)]
#else
[assembly: Application(Debuggable=false)]
#endif

二、指定程序图标

在AssemblyInfo.cs中设置属性:[assembly:Application(Icon="@drawable/ic_launcher")]

Xamarin Studio中可以对着项目右键->Project Options ->Android Application 在右边设置Application
icon的值

VS 2012中方法类似,只不过是对着项目右键 ->属性(property )->Android
Manifest -> Application Icon

VS 2010好像没有这个设置,因此需要使用设置属性的方式。

三、指定版本号

这里有两个容易混淆的地方versionCode和versionName;

android:versionCode--这是一个整数值代表应用程序的版本。大多数应用程序会以1作为初始版本值,每次发布的时候再递增这个值。

这个值与android:versionName没有什么关系(见下面介绍)。应用和发布服务都不会向用户展示这个值。

android:versionName--这是一个字符串,会在 Google
Play等此类的应用市场中向用户显示。这个字符串不会被Android内部所使用,这可以是任何能够帮助用户识别安装在他们设备上的应用的字符串值。

四、用Relase模式编译程序

在用Relase之前,很重要的一步是设置Linker, The linker in
Xamarin.Android will use static analysis to determine which assemblies, types, and type members are used or referenced by a Xamarin.Android application. The
linker will then discard all the unused assemblies, types, and members that are not used (or referenced). This can result in a significant reduction in the package size.

上面一段英文就说明了Linker的作用,其实也不是很难,认真看看还是能明白是什么意思吧。

下面举了一个Hello World的例子:


Configuration


Xamarin.Android 4.2.5 Size


None


17.4 MB


SDK Assemblies Only


3.0 MB

也就是我们新建一个Hello World工程,如果我们什么都不设置,编译的大小为17.4M,但是如果我们设置为SDK Assemnblies Only,APK大小就变为了3M,减少了83%的大小。

在VS 2013中,我们可以通过右键项目,选择属性进入Linker设置,见下图

上图红色框中包含三个选项:

  • None – This turns off the linker; no linking will be performed.
  • Sdk Assemblies Only – This will only link the assemblies
    that are required by Xamarin.Android
     . Other assemblies will not be linked.
  • Sdk and User Assemblies – This will link all assemblies that are required by the application,
    and not just the ones required by Xamarin.Android.

在Xamarin.Studio中,

上面红色框也有三个选项,其实与VS2013中的选项意思是相同的

  • Don‘t link – This turns off the linker; no linking will be performed.
  • Link SDK assemblies only – This will only link the assemblies
    that are required by Xamarin.Android
     . Other assemblies will not be linked.
  • Link all assemblies – This will link all assemblies that are required by the application,
    and not just the ones required by Xamarin.Android.

配置Linker可能产生一些副作用,因此设置Linker之后,反复测试是很重要的,并且这些测试应该在真正的设备上进行。

配置Linker之后,就可以编译程序了,编译之后,就可以用之前创建的私钥进行签名。当然我们也可以在运行之后的发布过程中新建秘钥进行签名。

先到这里,有点工作上的事情要处理,后面再补上。

时间: 2024-10-10 01:56:58

Xamarin.Android 打包Apk的相关文章

6.关于Xamarin Android对APK包大小的处理

apk 包的大小对大家都是很敏感的,虽然现在安卓手机的性能和存储越来越厉害了.本着能少一点是一点的态度,我们还是要深入理解下xamarin 生成的apk包里面有那些内容. 原文来自于:https://developer.xamarin.com/zh-cn/guides/android/advanced_topics/application_package_sizes/ 本文研究了Xamarin.Android应用程序包和相关策略,可用于在调试和发布阶段进行高效的包部署. 概述 Xamarin.A

Cocos Creator Android打包 apk

这一篇讲的是用 Cocos Creator 编译器打包 Android APP 的时候遇到的一些问题,虽然说打包的过程不是很复杂,但是在其中还是会遇到各式各样的坑. 我们将项目用CCC(Cocos Creator)编译器打包的时候,肯定是要先配置一下本机的开发环境,我这里主要是打包成 Android APP 的时候需要依赖的开发环境. 下载 Java SDK(JDK) 在编译 Android 工程的时候需要在本地电脑上有完整的 Java SDK 工具,如果没有这个工具可以到下面的地址下载: Ja

React Native Android打包apk

按照官方的5步曲: 1.在终端里面,cd 到项目的根目录后.执行下面这行命令: keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000 然后终端就会让你输入口令等信息.如 2.执行第一步会在根目录下会生成一个XXXXXX.keystore的文件,直接拿到android/app下. 3.在android/gradle.prop

android Apk打包过程概述_android是如何打包apk的

最近看了老罗分析android资源管理和apk打包流程的博客,参考其他一些资料,做了一下整理,脱离繁琐的打包细节和数据结构,从整体上概述了apk打包的整个流程. 流程概述: 1.打包资源文件,生成R.java文件 2.处理aidl文件,生成相应java 文件 3.编译工程源代码,生成相应class 文件 4.转换所有class文件,生成classes.dex文件 5.打包生成apk 6.对apk文件进行签名 7.对签名后的apk文件进行对其处理 打包过程使用的工具 名称 功能介绍 在操作系统中的

Android学习--apk打包过程

1. 使用aapt工具,给所有的res目录下的资源文件生成对应的id,id会被放进R.java文件中 2. JavaC编译器,将所有Java文件转换为Class文件,其中,内部类会分别生成.class文件,命名格式为MainActivity$内部类.class R$String.class等 3. 将class中的公共常量提取出来,生成dex文件 4. aapt将生成的menifest+dex+resource+程序签名打包成zip格式,其实就是apk格式.说明,META-INF是程序签名信息

cocos2d-x3.2 打包Android平台APK

一.下载Android环境 搭建Android环境需要用到Android SDK.NDK.Ant和JDK: 下载Android SDK 下载Android NDk 下载Android JDK 下载Ant 其中JDK是需要安装的,其他的都直接解压即可.将SDK NDK 和ANT解压缩到同一个文件夹中,我解压后文件都放在了e:\Android文件夹下 SDK如果下载下来的adt文件那么把里面的SDK文件夹考出来,修改后 二.配置JDK 在JDK安装完毕之后,需要手动进行环境变量的配置 1.系统变量里

Android项目在eclipse中无法打包apk文件[bin目录下没生成apk文件]问题解决

后来我发现在eclipse的Preferences -> Android -> Build中有一项“Skip packaging and dexing until export or launch....”,原来这个选项默认是被勾选的,这个选项的意思是“跳过packing和dexing,直到export或者 launch...”,去掉这个选项即可解决问题. Android项目在eclipse中无法打包apk文件[bin目录下没生成apk文件]问题解决

[Android Pro] Android打包一个Apk后,如何查看它的VersionCode、VersionName 等等。

Android打包成Apk后,其实是一个压缩文件,我们用winrar打开也能看到里面的文件结构.还能看到AndroidManifest.但是里面的内容有点问题. 不知道是因为加密还是Android就是如此,打开AndroidManifest后看到的VersionCode和VersionName是乱码... 于是网上搜索到下面的方法. aapt工具,平时我们不会用这个东西,但是打包成Apk的时候其实是用到了的,只不过IDE替我们做了这一步,那么我们就用这个工具来查看VersionCode和Vers

cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程)

链接地址:http://www.cocoachina.com/bbs/read.php?tid=333937 cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程) 此教程仅供参考,C++小白系列,从新建工程到打包apk,大神们可在评论多给留言建议,若有不详或错误请予指点.OK,我们直入主题 本教程开发环境详情如下开发系统:win764位开发工具:cocos引擎v2.3.3,VS2013cocos2dx版本:3.9 步骤一:windows下各类工具安装(ja