mono for android 深入探究APK包结构

mono for android


先说下mono的大概编译结构




第一个文件夹(assemblies)


第二个文件夹


下面是很重要的东西,就是mono的虚拟机 ,可以打开看到, 是so结尾的文件,这是c++编写的虚拟机, 这个虚拟机大概是2.8M左右。另外引用的第三方库,包括.so .jar 包都在里面。


第三个——资源



包括图片,layout 等


比原生java开发多了些什么



  1. 最后一个文件夹都有
  2. 中间这个文件夹多了2.8M
  3. 第一个文件夹(主要是这个)多了些撒


第一个文件夹的这些程序集很显然很多都没有用到,只用到了小部分类库(类库中的小部分类)。但是默认都会被编译进来,所以造成mono开发的程序非常的大。


给apk瘦身的编译方法



编译方式

  1. 不连接程序集
  2. 只连接sdk的程序集
  3. 链接所以程序集


什么意思呢 ?就是——第一种不管什么只要你引用了程序集,全给你撞进。第二种ide寻找链接, 就是引用 自动编译,把没有用到的类排除,但是只排除sdk中的。

第三种,就是排除所有程序集中没有用到的类库。

注意:对于序列化等 以及底层使用序列化的操作,无法找到链接,可能会被排除使用中的类,造成程序无法使用。

解决方法:

可以排除你不想链接的程序集。



到底瘦身有什么效果呢?

我没瘦身之前,是——30M的一个程序,瘦身后只有7M,还是加上虚拟机的2.8M。




本文只做笔记:2015.7.29改

欢迎大家帮我改正

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-27 17:10:59

mono for android 深入探究APK包结构的相关文章

eclipse修改android项目的apk包名类名

在Google提供的Eclipse集成开发环境adt-bundle下修改名称的总结: 1.      修改工程名(apk名称) 在弹出的对话框中输入新名称 该操作实际上是修改<project>/.project下的<name>节点.但由于某种原因,只修改该文件的话,在adt-bundle中,显示的工程名称仍然为老名称,只是apk的名称变为了新名称,因此建议通过"重构"的方式为工程改名. 2.      修改手机上<桌面名称> 3.      修改在手

二、Android应用程序的目录结构

HelloWorld |--res |--values |--layout |--drawable-ldpi.drawavle-mdpi.drawable-hdpi |--src |--存放java文件 |--AndroidMainifest.xml 上面的文件结构中res目录.src目录.AndroidMainifest.xml文件是Android项目所必须的. 必须文件: res:存放Android项目各种资源文件,如:布局文件.values.尺寸资源文件:drawable-ldpi.dra

Android 4.4(KitKat)中apk包的安装过程

原文地址:http://blog.csdn.net/jinzhuojun/article/details/25542011 其实对于apk包的安装,4.4和之前版本没大的差别.Android中app安装主要有以下几种情况:系统启动时安装,adb命令安装,Google Play上下载安装和通过PackageInstaller安装.安装的最核心方法是scanPackageLI(),以上几个安装方式最后都是调用这个函数完成主要工作的,区别在于在此之前的处理过程不同.本文以前两种为主,简要介绍这四种安装

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

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

手动打Android Wear Apk包

如果使用Google官方推荐的集成开发IDE Android Studio开发,会自动生成两个工程,一个是手机端的,一个是手表端的. 但是如果用Eclipse环境,如果要将手表的apk打到手机apk中,需要注意以下几点: 1.在wearable app中声明的permission在mobile app中也要加上: 2.确保wearable app和mobile app有同样的包名和版本号: 3.将签名的wearable app放到mobile app工程的res/raw目录下,假设wearabl

【转载】android中APK包的安装以及adb命令的使用

apk包安装步骤: 1,首先将../android-sdk/platform/tools添加都path路径下 2,在控制台窗口中进入到你apk包所在的目录中 3,输入:abd unremount,第一次使用该命令的时候需要获取该命令的操作权限 4,打开android的模拟器 5,在控制台中执行:adb install 包名.apk 6,如果显示success,那么久安装apk包成功,显示Failure,则安装失败. 7,检查错误,排错,再执行如下命令:abd install -r 包名.apk

反编译Android的apk包得到源码(使用工具:dex2jar和jd-gui)

1. 先从 http://download.csdn.net/detail/dingyuming1991/9618125 下载反编译工具dex2jar和jd-gui(当然也可以google搜索下载): 2. 将要反编译的apk包改扩展名为zip(apk包实则为zip压缩包),解压zip文件: 3. 在解压出来的文件夹中会有个classes.dex文件(程序的二进制文件),在下载dex2jar和jd-gui中找到dex2jar程序,在cmd窗 口中运行  dex2jar classes.dex ,

android Ant批打包学习(二)---生成有签名且混淆的apk包

本篇文章预期目标:                 生成有签名apk文件 详细步骤如下: 1  定义文件 两个文件 1.1  名字:local.properties 内容:SDK的路径(例如:sdk.dir=/Users/lincoln/Android/sdk) 1.2 名字:ant.properties 内容: source.dir=src out.dir=bin proguard.config=proguard.cfg   (添加混淆,必须保证proguard.cfg 文件存在) key.s

Android获取APK包名的几种方法

Android获取APK包名的几种方法:1.adb shell pm list package -f | findstr 关键字 #只能获取到包名,主Activity名无法获取到 2.使用aapt--aapt是sdk自带的一个工具,在sdk\builds-tools\目录下 运行后的结果中以下两行分别是应用包名package和入口activity名称 package: name=’com.estrongs.android.pop’ launchable-activity: name=’com.e