上周,我发布了对.NET Core程序进行瘦身的开源软件Zack.DotNetTrimmer,与.NET Core内置的剪裁器相比,Zack.DotNetTrimmer不仅对程序的剪裁效果更好,而且还支持WPF.WinForm程序.下面是Zack.DotNetTrimmer与.NET内置的剪裁器的对比图: 项目地址:https://github.com/yangzhongke/Zack.DotNetTrimmer 一周时间内,相关文章在各平台获得了超过四万阅读量,项目收获了将近170+个star…
Clickonce无痛自动更新是我最喜欢使用VSTO开发并Clickonce部署的特性之一,但这个自动更新,通常会更新整个程序文件,包含所有的引用dll和一些资源文件等. 一般来说,我们更新的都是主程序,那些引用dll和资源文件,除非是发布时的版本的确更新了,才有必要更新到用户的机器上,不然动不动所有文件都一起更新,更新需要下载的文件数量也太大,等待时间也太长,最终反而变得用户体验不够完美. 资源文件的问题还比较好解决,只要不把资源文件内嵌到程序集中,然后通过手动下载或程序代码自动检测有新增或更…
一.为什么要开发.NET Core程序瘦身器? .NET Core具有[剪裁未使用的代码]的功能,但是由于它是使用静态分析来实现的,因此它的剪裁效果并不是最优的.它有如下两个缺点: 不支持Windows Forms和WPF,而对于程序剪裁功能需求最强烈的其实反而是桌面程序的开发者. 无法删除运行时没有被使用的程序集.比如,我们的程序中使用了A程序集,A程序又引用了B.C两个程序集,A程序集中只有M1方法使用了B程序集,而A程序集中只有M2方法使用了C程序集.我们的程序中只调用了A中的M1方法,而…
原文:Creating Windows Services In .NET Core – Part 3 – The ".NET Core Worker" Way 作者:Dotnet Core Tutorials 译者:Lamond Lu 译文:使用.NET Core创建Windows服务 - 使用.NET Core工作器方式 使用.NET Core创建Windows服务 使用微软推荐方式 使用Topshelf方式 安装步骤 这里首先你要确保你已经安装了.NET Core 3.0或以上版本…
一,.NET Core 自宿主应用程序个头很大 发布.NET Core应用程序有两个方式,一种是“便携式”,一种是“自宿主式”.便携式发布时,目标程序不带.net core运行环境,所以“个头”很小,可能只有几十K几百K字节,但是它需要用户的目标系统上安装.NET CORE 框架:自宿主式发布出来的程序,自带运行时和框架类库,自成一体,不需要客户机安装.NET CORE环境,部署简单方便. 看看一个简单的“Hello World!” 控制台程序有多大: 修改 csproj文件,添加目标系统: 用…
需要安装nuget包Microsoft.Packaging.Tools.Trimming然后利用如下命令发布dotnet publish -r win10-x64 -c release --self-contained true /p:TrimUnusedDependencies=true发布完成之后,实际上还是有不少dll文件,只不过由原来的200多个减少了70多个. 然后还有个瘦身的方法项目地址https://github.com/dgiagio/warp国内这毛线网可能有点慢 关于wind…
.net core 拦截器的使用 实例代码:https://gitee.com/D_C_L/InterceptorTest.git 拦截器主要是将程序中的一些可以独立出去的模块进行拦截,比如幕等性,和身份认证服务等等,你想独立出去的东西,ActionFilterAttribute请求拦截器他里面几个方法,我们将一下的几个方法进行重写. 1,OnActionExecuting:在执行请求开始之前进行调用 2,OnActionExecuted:在执行请求开始之后进行调用 3,OnResultExec…
上一篇文章(https://www.cnblogs.com/meowv/p/12896177.html)已经成功创建了博客项目,但是abp默认给我们引用了许多项目中用不到的组件. 本篇文章将给项目进行瘦身,删掉对我们来说暂时用不到的组件.讲解各个模块之间的关系,写一个Hello World,让其成功运行起来. 给项目瘦身 Meowv.Blog.HttpApi.Hosting Meowv.Blog.HttpApi.Hosting相当于一个web项目,但这里主要依赖于Meowv.Blog.HttpA…
在我们提交安装包到App Store的时候,如果安装包过大,有可能会收到类似如下内容的一封邮件: 收到这封邮件的时候,意味着安装包在App Store上下载的时候,有的设备下载的安装包大小会超过100M.对于超过100M的安装包,只能在WIFI环境下下载,不能直接通过4G网络进行下载. 在这里,我们提交App Store的安装包大小为67.6MB,在App Store上显示的下载大小和实际下载下来的大小,我们通过下表做一个对比: iPhone型号 系统 AppStore 显示大小 下载到设备大小…
Android App安装包瘦身计划 Android App安装包体积优化: 理由, 指标和可以采用的方法. 本文内容归纳如下图: 为什么要安装包瘦身 安装包需要瘦身吗? 不需要吗? 安装包要瘦身的主要原因就是考虑应用的下载转化率和留存率. 应用太大了, 用户可能就不下载了, 尤其是移动网络或者流量收费的情况下. 再者, 因为手机空间问题, 用户有时候可能需要选择卸载一些应用, 就会先盯上那些占空间大的, 所以应用大小也会也影响留存率. 但现在什么时代了, 到处都是WiFi, 流量包又大又便宜,…
作者:非戈@阿里移动安全 1.我是怎么思考这件事情的 APK是Android系统安装包的文件格式,关于这个话题其实是一个老生常谈的题目,不论是公司内部,还是外部网络,前人前辈已经总结出很多方法和规律.不过随着移动端技术近两年的飞速发展,一些新的思维方式和优化方法也逐渐涌现和成熟起来.笔者在实践过程中踩过一些坑,收获了一些经验,在这里做个思考和总结,所以随笔给大家,希望对大家从事相关工作的时候有所帮助和参考,同时也是抛砖引玉,希望大家共同探讨这个开放性的话题. 关于为什么APK要瘦身,这个不多说,…
Orchard CMS是针对CMS开发的,对于很多开发需求来说,内容管理这块儿可能并不需要,而需要它的模块式开发模式.所以我这里通过对OrchardCMS进行瘦身,去除 内容管理部分的内容,保留简单的运行环境和基础的模块.需要做的工作: 去除Orchard Framework的内容管理部分,同时去除Orchard Framework依赖内容管理的相关内容. 去除Orchard Core部分的部分module,只保留Sharpe和Setting两个模块. 去除内容管理和博客管理的相关模块,只保留支…
如何给你的Android 安装文件(APK)瘦身 本文翻译自:Putting Your APKs on Diet           原作者:Cyril Mottier Android的apk文件越来越大了这已经是一个不争的事实.在Android 还是最初版本的时候,一个app的apk文件大小也还只有2 MB左右,到了现在,一个app的apk文件大小已经升级到10MB到20MB这个范围了.apk文件大小的爆炸式增长主要是因为用户对app质量的期待越来越高以及开发者的开发经验增长,具体体现在以下几…
APK瘦身 主要从一下三方面来瘦身: 1. Java 源代码 1) ,这方面主要是通过最简洁的代码实现最直接的功能,还有就是提出上线前不必要的java代码,可以使用UCDector进行分析,从而对代码进行清理. 2) ,使用混淆器Proguard: 混淆器是在编译时对你的代码进行混淆.优化.压缩的强有力工具.它能够减少Apk大小的主要特性是tree-shaking,它会遍历你所有的代码路径,检测出那些没用的代码片段,所有这些多余的代码片段,都会从最终的APK文件中被剔除.混淆器同时也会对你的文件…
http://blog.csdn.net/xiaoping8411/article/details/6973887 版权声明:本文为博主原创文章,未经博主允许不得转载. 前不久给朋友做了一个桌面程序,程序文件没多大,但运行java程序需要jre,但jre足足有80M多,然后在网上搜了如何给给JRE瘦身或精简JRE,整理如下: 打开JRE安装目录.目录包括bin,lib二个文件夹,所以就是将这两个文件进行瘦身了, 1. bin: 可以认为这是Java虚拟机. 2. lib: 执行class文件时,…
写在前面的话: 前面几篇文章,我们介绍了如何获取kernerl32.dll导出函数地址的方法: 并在此基础上,编写了ShellCode,实现了动态加载DLL以及解析API地址: 但是,似乎还称不上Perfect,我们能够获取到LoadLibrary和GetProcAddress,事情就结束了吗? 我们仍然需要给他们push一些个参数,那些API的名字,占用了我们ShellCode的大部分空间:(如果API较多的话) 这使得我们的ShellCode看上去不那么美妙,因此,对API做HASH势在必行…
App瘦身 资源瘦身 使用tinypng压缩PNG图片.视频可以通过 Final cut等软件进行分辨率压缩.音频则降低码率即可. 非必须资源文件可以放到自己服务器上 启动图使用 LaunchScreen.storyboard,启动图在一个项目资源中占比其实蛮大的,但是使用 LaunchScreen.storyboard 只需要设置一张ImageView即可. IconFont的使用很方便,项目中图标太多或者随时需要转换图标颜色的话,建议使用 放弃使用 Realm Realm,据说是目前是性能最…
导语 JOOX Music是腾讯海外布局的一个音乐产品,2014年发布以来已经成为5个国家和地区排名第一的音乐App.东南亚是JOOX Music的主要发行地区,由于JOOX Music所面对的市场存在很多的低端机型,并且这些市场的网络环境相对来说是比较差的,为了提升下载转化率,对JOOX Music进行APK瘦身是必不可免的. JOOX Music版本大小变化 JOOX Music(后面简称JOOX)现在已经在进行V3.8版本的开发了,不过,在这之前JOOX经历了从V2.1版本的18M暴涨到V…
1. 前言 如果你对App优化比较敏感,那么Apk安装包的大小就一定不会忽视.关于瘦身的原因,大概有以下几个方面: 对于用户来说,在功能差别不大的前提下,更小的Apk大小意味更少的流量消耗,也意味着更多的用户下载: 对于产品来说,大于竞品的Apk意味着较低的下载基数,不利于验证产品策略: 对于开发人员来说,App瘦身则是一次技术优化.技术提升的机会: 2. Apk的组成 2.1 Apk典型组成   一个典型的Apk组成 下表为Apk目录及文件说明: 文件/目录 说明 assets/ 存放一些静态…
Windows操作系统功能越来越强大,同时体型也越来越臃肿.安装盘没有60Gb都不敢安装.Windows10 安装最低磁盘要求20G ====瘦身基础篇,适合任何用户:(可见目录,简单迁移)1. 安装任何新软件,都选择安装到其他盘符:2. 很多软件需要磁盘空间的默认路径都设置到其他盘符,比如下载软件的默认下载目录:3. 修改用户目录下的,文档,音乐,图片,桌面,下载目录到其他盘符.例如修改[文档],右键点击弹出菜单选择属性,属性面板\位置页签\ 下面修改到新的位置,确定,弹出界面提示是否移动,选…
大家在用Jboss的时候可能跟我一样,觉得Jboss启动实在太慢!比起Tomcat几乎秒启的速度,Jboss几乎让人无法忍受.加上本人电脑配置比较低,Jboss启动最快的时候也是一分多钟,慢的时候四分多钟!这实在是太让人抓狂了.而且为了避免缓存的影响,会经常重启Jboss,这就导致调试程序的时间有很大一部分花在了Jboss的启动上.这显然是很不科学的,其实我们可以通过精简Jboss里面的包以及配置,来提高其启动速度.因为里面有很多东西是我们所用不到的,下面我们看看具体操作. 以JBoss 5.1…
项目是一个桌面程序,程序文件不大,但运行jre有198 MB,因此需要"瘦身". jre包含bin.lib两部分,分别为93.6 MB.104 MB. 1.精简bin 运行桌面程序,进入bin目录,删除所有能删的:删完之后重新运行,直到正常运行. 过程中发现server目录下的classes.jsa是18.3 MB,删除后程序正常运行. 精简后bin为11.1 MB. 2.精简lib 发现rt.jar包大小60.6 MB,因此首先精简rt.jar包. 精简rt.jar主要步骤如下: (…
Android的apk文件越来越大了这已经是一个不争的事实.在Android 还是最初版本的时候,一个app的apk文件大小也还只有2 MB左右,到了现在,一个app的apk文件大小已经升级到10MB到20MB这个范围了.apk文件大小的爆炸式增长主要是因为用户对app质量的期待 越来越高以及开发者的开发经验增长,具体体现在以下几个方面: Android设备 dpi 的多样化 ([l|m|tv|h|x|xx|xxx]dpi) Android平台的进化,开发工具的改进以及开源类库生态系统的丰富 用…
前言 APK瘦身即是对APK大小进行压缩策略,减小APK安装包大小,更小的安装包更有助于吸引用户安装.前一段时间我司某一App进行APK的瘦身,最终也达到了减小10M的目标,现做一个简单的总结记录. 如何着手这个问题? 需要对一个App进行瘦身,首先最重要的就是对App大小有一个大致的了解,最直观看到App的大小就是通过Android Studio自带的Analyzer进行APK的分析.使用方法: 1.将一个apk拖动到Android Studio的编辑器窗口 2.在Project窗口中,双击b…
本文源地址:怎样给你的Android 安装文件(APK)瘦身 Android的apk文件越来越大了这已经是一个不争的事实. 在Android 还是最初版本号的时候,一个app的apk文件大小也还仅仅有2 MB左右,到了如今.一个app的apk文件大小已经升级到10MB到20MB这个范围了.apk文件大小的爆炸式增长主要是由于用户对app质量的期待越来越高以及开发人员的开发经验增长,详细体如今下面几个方面: Android设备 dpi 的多样化 ([l|m|tv|h|x|xx|xxx]dpi) A…
作者:非戈@阿里移动安全,很多其它技术干货.请訪问阿里聚安全博客 1.我是怎么思考这件事情的 APK是Android系统安装包的文件格式.关于这个话题事实上是一个老生常谈的题目.不论是公司内部.还是外部网络,前人前辈已经总结出非常多方法和规律. 只是随着移动端技术近两年的飞速发展,一些新的思维方式和优化方法也逐渐涌现和成熟起来. 笔者在实践过程中踩过一些坑,收获了一些经验.在这里做个思考和总结,所以随笔给大家,希望对大家从事相关工作的时候有所帮助和參考,同一时候也是抛砖引玉.希望大家共同探讨这个…
MSYS2, 吃硬盘的大神 MSYS2,集成了 x86 x64两个开发环境,且可以使用 pacman 进行包管理,可谓方便的很!可是,这个东东也有一个很不好的地方,就是实在太占硬盘.尽管下载的软件包一般最大也就几百兆,但这可是高压缩格式的,一旦展开,会像干燥剂喝了水一样泵长起来.以我的MSYS2文件夹为例子,安装了常用工具如 qt.boost.opencv. fftw.Openscenegraph等后,已经35GB了.可怜我的C盘啊! 初步瘦身 初步瘦身有两个办法: 1. 删除pacman的下载…
前言 SpringBoot部署起来配置非常少,如果服务器部署在公司内网,上传速度还行,但是如果部署在公网(阿里云等云服务器上),部署起来实在头疼.就是 编译出来的 Jar 包很大,如果工程引入了许多开源组件(SpringCloud等),那就更大了.这个时候如果想要对线上运行工程有一些微调,则非常痛苦 可以用以下方法减少jar内容 瘦身准备 1.首先我们要对Jar包有一个初步认识,它的内部结构如下 example.jar | +-META-INF | +-MANIFEST.MF +-org | +…
前言 本节我们来讲讲在我们在构建镜像过程中不出问题,同时使得最后所构建的镜像文件大小尽可能最小,温馨提示:文中大图均可点击放大查看详细信息. 缓存(cache) Docker的优势之一在于提供了缓存,加速镜像迭代构建,我们知道构建镜像使用docker build命令,也就是说通过docker build的缓存机制实现了镜像的复用,不仅节省镜像存储空间,也为镜像构建节省了大量时间. Docker会由上至下逐步执行Dockerfile中的指令,按顺序执行每个指令,在检查每条指令时,Docker在其缓…
zabbix3.2源码编译安装版升级到zabbix4.0长期支持版 项目需求: .2版本不再支持,想升级成4.0的长期支持版 环境介绍: zabbix服务端是编译安装的,数据库和web在一台机器上 整体思路: 先升级3.2版本到3.4过渡版本,然后再次将3.4升级成4.0版本 因为升级过程较长 为了避免影响正常的zabbix业务,克隆出一台服务器用来升级使用,升级完成后互换ip或者直接修改客户端的agent把新的服务端也加入其中 可以并行一段时间,如果没问题就可以弃用老的zabbix服务器了 大…