Xamarin.Android release-Apk 瘦身策略

本文介绍了如何使用Xamarin.Android进行Apk瘦身,通过设置bundle assemblies into native code和启用Proguard,将11.5MB的Apk优化到5.47MB。详细步骤包括更改Visual Studio 2015企业版的配置,调整Android选项,以及解决Proguard的配置问题。
摘要由CSDN通过智能技术生成

对于一个在Android studio上 1.5MB的apk,在使用Xamarin.Android编写以后,release包陡然变成了11.5MB  发火,差点被领导打死。

于是赶紧研究Xamarin.Android Apk瘦身。

中间经历了很多失败,所以我只说我试验正确的方法微笑

首先,请确定你使用的是VS2015 企业版,因为有些功能非企业版不能用(听说的)。其次,所有操作,请参考  xamarin-release-guide 

下面是步骤:

1.确保你选择了release,而不是继续在debug模式上做这一项操作;

2.对project名点击右键-->属性 --> Android menifest,如果你的 Application Icon 还是空白的,请点击下拉框,为你的App添加一个图标 如

这样可以让你的App通过某些应用市场的审核。

3.对project名点击右键-->属性 --> Android Options,配置如图(只需要关注打勾的就行了,不要问我为什么,自己去看上面的超链接)

然后是这两个打勾选项的说明

1.Bundle assemblies into native code

就是这一个,听说要企业版才能使用敲打。顾名思义, 是把一堆assemblies打包成java的native code,其实就是打包成.so。然后到底是把什么给打包了呢?将自己的APK改后缀为  .apk -->.zip,然后去找到assmblibs,会发现,在勾选这个选项前打包,里面是所有你引用过的包的.dll文件,并且还包括了你的工程代码所编译成的.dll文件,听说.dll文件很容易被反编译鄙视,多么不安全!现在变成了.so文件,这是一种不是那么容易被反编译的文件,即使反编译出来,也是汇编语言,听起来就好多了。

最重要的是,这一个操作,将我11.5MB的apk,变成了5.54MB!!效果显著!

2.Enable Proguard

允许混淆。貌似在Android studio 里面,编写混淆很容易的样子,但是在Xamarin里使用,耗费了我许多的时间,才最终有一个办法(注:此办法不一定具有普遍性)

大家知道,Microsoft 的vs2015 所有东西几乎都是默认装在C盘的,所以你会发现C盘再大也不够用。我在Xamarin使用的默认的Android SDK是在C盘下的,我在Android studio 的Android SDK 是在D盘下的。

在Xamarin 论坛 找了好久,没有遇到适用我的,能够使用proguard的。总是会报一个错误

并且一直没有解决思路。然后我想到,试试使用其他路径的sdk看看,会有什么错。于是 SDK路径: C:\xxx\android-sdk  --> D:\xxx\android-sdk,再次清理,生成,没有这个错了!!虽然报了其他错:‘java.exe’ exist with code 1。 这个错误应该是由于SDK 24引起的,在去把SDK manager中有关API24的都删除后,编译通过!!得意

立即去检查apk 大小,发现已经从5.54MB --> 5.47MB,也算是个进步,嘿嘿。

上面这种混淆方式,是使用Xamarin自带的混淆文件 xxx/obj/Release/proguard/proguard_xamarin.cfg ,这个文件是不可编辑的,因为你每次编译的时候,都会重新生成。

还有一种混淆的方式,是Xamarin推荐的自定义proguard.cfg文件的方式,不过这种方式我测试了好久,没有做出来,希望研究出来的朋友回复下。不过我可以确定,如果能够使用自定义的混淆,肯定可以更大程度的减小apk的体积!

3.大家有注意到,packaging旁边有一个linker

实际上,按照Xamarin官网的说法,这一步操作类似于混淆,但是在混淆之前先编译(如果启用了混淆)。下面的表格是官网的表格,充分说明了linker的重要性。


Configuration

Xamarin.Android 4.2.5 Size

None

17.4 MB

SDK Assemblies Only

3.0 MB


我的默认是 SDK Assemblies Only,所以没有做其他测试尴尬

话不多说,就到这里了。

将原来的APK 大小从 11.5MB --> 5.47MB,优化空间还有,需要继续研究学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值