前言

系列目录

C#使用Xamarin开发可移植移动应用目录

源码地址:https://github.com/l2999019/DemoApp

可以Star一下,随意 - -

说点什么..

嗯,前面讲了那么多,是时候生成一个APK在真机上玩玩了.

今天的学习内容?

也只讲一个,如何打包生成安卓可安装的APK并精简大小.

正文

我记得,之前在写安卓方面的文章的时候,有人就问过我.Xamarin.Android为什么打包出来这么大?随便一个HelloWord就20-30MB?

嗯..今天我们就来解决这个问题..

我们先从指定一个应用程序图标开始..

1.指定应用程序图标

我们直接右键Android项目,属性.选择安卓清单.如下:

在Application Icon选项中,我们可以任意选择一个已有的图片资源文件,并设置为应用程序的图标.

就完成了 - - 是不是很简单..

2.设置应用程序版本和名称

VS2017里面已经翻译的比较完善了,我就不多解释了..直接如下图:

3.精简和收缩APK(重点)

3.1取消快速部署

首先我们进入

然后,我们将打包属性中的如下两项勾选取消:(注意:这里是取消!!)

3.2设置连接器,精简Xamarin的引用

然后,我们向下滑,找到链接器属性,设置如下:

连接选择,仅SDK程序集.(默认为无)

Xamarin.Android中的链接器采用静态分析来确定Xamarin.Android应用程序使用或引用了哪些程序集,类型和类型成员。然后,链接器将丢弃未使用(或引用)的所有未使用的程序集,类型和成员。这就使得我们最终的应用大小得到了显着的降低。例如,微软官方的 HelloWorld例子,其APK的最终大小减少了83%:

  • 配置为:无 - Xamarin.Android 4.2.5大小= 17.4 MB
  • 配置为:仅限SDK组件 - Xamarin.Android 4.2.5大小= 3.0 MB

3.3设置Android ProGuard

ProGuard是一个Android SDK工具,用于链接和模糊Java代码。ProGuard通常用于减少APK中大型附加库(如Google Play服务)的占用空间来获得较小的应用程序。

ProGuard会删除未使用的Java字节码,这就会让生成的应用程序更小。

一般,在小型Xamarin.Android应用程序上使用ProGuard通常可以减少大约24%的大小

如果,在具有多个库依赖性的较大应用程序上使用ProGuard通常可以实现更大的尺寸缩小。

ProGuard不是Xamarin.Android连接器的替代品。Xamarin.Android链接器链接托管代码,而ProGuard链接Java字节码。

生成过程是首先使用Xamarin.Android链接器来优化应用程序中的托管(C#)代码,然后使用ProGuard(如果启用)在Java字节码级别优化APK。

启用ProGuard的检查,Xamarin.Android上运行所产生的APK ProGuard的工具。ProGuard配置文件在构建时由ProGuard生成和使用。

Xamarin.Android还支持自定义ProguardConfiguration构建操作。您可以将自定义ProGuard配置文件添加到项目中,右键单击它,并将其作为构建操作选择.

这里,我们直接用默认的操作.也就是勾选它就可以了 如图:

4.存档并发布生成APK

嗯..这就是我们的最后一步了,

第三步的内容设置完成后,我们就可以存档了.

操作如图:

这样,就会跳转到存档界面,如下:

我们等待它打包完成.完成后,后面的齿轮会有个绿色的勾,如下图:

点击分发,来完成最后的发布操作,如下图:

我们可以选择谷歌play的证书,也可以自己创建一个临时的证书.

这里我们创建一个临时的证书.如下图:

点击+号,创建证书.并填写如下图的信息,请牢记你这里输入的密码.

完成创建后,我们直接选择刚刚创建的证书,来进行分发.

选中证书后,选择另存为.然后选择APK文件的存放路径.

点击保存,会让你输入证书的密码.,我们填写刚刚输入的密码.

等待生成完成,就好了.

至此,我们就完成了整个APP的打包 精简压缩和发布流程.

写在最后

本篇只是讲解了APP的打包流程,作为一个发布的应用,当然不是这么简单就完事了.

为了保证安全性,我们虽然用ProGuard混淆了JAVA代码,但是我们的.NET代码并没有混淆.通过解压APK程序反编译我们的dll,源码就会很轻易的暴露..

下篇我们就来讲解,如何混淆我们的.NET代码

C#使用Xamarin开发可移植移动应用进阶篇(8.打包生成安卓APK并精简大小),附源码的更多相关文章

  1. C#使用Xamarin开发可移植移动应用进阶篇(7.使用布局渲染器,修改默认布局),附源码

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 本篇..基 ...

  2. 使用Xamarin开发手机聊天程序 -- 基础篇(大量图文讲解 step by step,附源码下载)

    如果是.NET开发人员,想学习手机应用开发(Android和iOS),Xamarin 无疑是最好的选择,编写一次,即可发布到Android和iOS平台,真是利器中的利器啊!而且,Xamarin已经被微 ...

  3. C#使用Xamarin开发可移植移动应用进阶篇(6.使用渲染器针对单个平台自定义控件..很很很很重要..),附源码

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 本篇..基 ...

  4. C#使用Xamarin开发可移植移动应用进阶篇(9.混淆代码,防止反编译)

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 今天讲讲如 ...

  5. C#使用Xamarin开发可移植移动应用进阶篇(10.综合演练,来一份增删改查CRUD)

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 呃 也有半 ...

  6. 使用Xamarin开发即时通信系统 -- 基础篇(大量图文讲解 step by step,附源码下载)...

    如果是.NET开发人员,想学习手机应用开发(Android和iOS),Xamarin 无疑是最好的选择,编写一次,即可发布到Android和iOS平台,真是利器中的利器啊!而且,Xamarin已经被微 ...

  7. 仿酷狗音乐播放器开发日志二十三 修复Option控件显示状态不全的bug(附源码)

    转载请说明原出处,谢谢~~ 整个仿酷狗工程的开发将近尾声,现在还差选项设置窗体的部分,显然在设置窗体里用的最多的就是OptionUI控件,我在写好大致的布局后去测试效果,发现Option控件的显示效果 ...

  8. C# 使用Xamarin开发Android应用程序

    C#使用Xamarin开发可移植移动应用终章(11.获取设备信息与常用组件,开源一个可开发模版.) 摘要: 前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://gi ...

  9. C#使用Xamarin开发移动应用 ---- 系列文章

    C#使用Xamarin开发移动应用 C#使用Xamarin开发可移植移动应用终章(11.获取设备信息与常用组件,开源一个可开发模版.) C#使用Xamarin开发可移植移动应用进阶篇(10.综合演练, ...

随机推荐

  1. man rsync翻译(rsync命令中文手册)

    本文为命令rsync的man文档翻译,几乎所有的选项都翻译了,另外关于筛选规则部分只翻译了一部分.由于原文很多地方都比较啰嗦,所以译文中有些内容可能容易让国人疑惑,所以我个人在某些地方加上了注释.若有 ...

  2. [luogu P2184] 贪婪大陆 [树状数组][线段树]

    题目背景 面对蚂蚁们的疯狂进攻,小FF的Tower defence宣告失败……人类被蚂蚁们逼到了Greed Island上的一个海湾.现在,小FF的后方是一望无际的大海, 前方是变异了的超级蚂蚁. 小 ...

  3. if __name__ == '__main__' 如何正确理解

    今天有个初学Python 的朋友问我这个问题,他说在网上好多回答他都不太理解.所以这里我来做说一下,希望能把这个问题说明白. 先举一个例子:假设我们有一个add.py文件,里面的代码是这样: def ...

  4. [Tyvj 1952] Easy

    P1952 Easy 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(我们来简化一下 ...

  5. java利用接口和适配器进行完全解耦--参考《thinking in java》

    一.当使用父子类来实现以下东西时,其实是用了向上转型,这段代码的确简单了很多,复用性也很好,但是我们会发现Apply.process()和Processor类耦合过紧,其实apply.process( ...

  6. 怎么把系统装进u盘(ultraiso)

    ​首先要下载一个叫ultraiso的软件.可以在百度中搜索此软件下载.下载后安装,安装后打开软件,如图所示.        ​点击左上角的文件选项,在弹出的菜单中,点击打开选项,打开一个你要装进U盘的 ...

  7. Vue组件基础用法

    前面的话 组件(Component)是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己所需, ...

  8. Spring整合CXF webservice restful 实例

    webservice restful接口跟soap协议的接口实现大同小异,只是在提供服务的类/接口的注解上存在差异,具体看下面的代码,然后自己对比下就可以了. 用到的基础类 User.java @Xm ...

  9. vue指令v-bind示例解析

    1.绑定一个属性 <img id="app" v-bind:src="imageSrc"> <script> var app = Vue ...

  10. 安徽省2016“京胜杯”程序设计大赛_G_木条染色

    木条染色 Time Limit: 1000 MS Memory Limit: 65536 KB Total Submissions: 134 Accepted: 20 Description    小 ...