Android项目的优化(清理篇)

接手二手项目是一件非常痛苦的事情,更别说是流转了四手五手,且还为了项目进度而直接引入其他部门的代码、模块的项目,更更麻烦的是在AS中还依赖了Eclipse的模块。

项目最近的发布版本大小有47.6M

上一版本

项目共使用了个17Module,不包括注释了的5个Module,总共有22个Module

项目结构

在没修改逻辑的前提下,清理后apk大小为40.4M

整理后

下面就记录下清理的逻辑

分支

为不影响正常的开发工作和清理所带来的不确定隐患,清理的工作还是另开一分支将风险降为0比较保险。

目前所处develop分支

新建分支clean2

将gradle修改下

清理工作到一半,测试提了个bug,切回develop分支修改

结果在clean2分支修改的代码被带到了develop分支,创建分支的目的就是要将修改操作分离,现在却起了反作用。

常用AS的git插件的话可能对stash比较陌生,问题出现时我也很懵,多亏同事指点

git常用的提交操作有:commit提交本地仓库、push提交本地仓库到远程仓库,还有一种stash。

commit是将小修改提交本地仓库,多次commit后一个功能完成了,此时将多次commit合成的功能push到远程仓库,多次push后一个版本就出来了。

当我的修改做到一半导致整体不能运行,且非切换分支不可的情况,如我上述遇到的,代码删了大半但有紧急bug需要修改,commit的话不合适,直接切换分支又会将修改的代码带入到develop分支内,此时就需要将clean2分支内的修改用stash的方式缓存

Create Stash 后代码回到了修改前的状态,不要担心你的修改还在的。

切到develop这次修改没有被带过来,安心的修改bug,commit,push

bug告一段落,回到clean2分支继续清理代码,需要将之前缓存的修改放出来

找到存放的stash

若不勾选Pop stash,则缓存的修改应用在代码上,且缓存的修改还缓存着。pop后则修改应用在代码上,缓存的修改被删除。

之前的修改又回来了。

但develop分支修改的bug需要同步过来

通过工具栏按钮


报错了


通过菜单项


需要选择分支


为什么呢?
分支clean2没有关联其他分支,属于单独分支何来的pull


按提示操作

但是我们要从develop分支pull下来,所以要修改下命令

git branch --set-upstream-to origin/develop clean2

这时再看看

image.png

pull下试试

出现这种问题的原因是创建分支的时候没有指定,新分支的上一个节点,安全的操作是这种

这种方式新建的分支就会有上一个节点。

至于pull和stash孰先孰后的问题都是可以的,当出现冲突就需要手动解决了。

Code Cleanup

终于可以安心的清理代码了,第一步

主要用于整理代码中不规范的书写

典型代表

跑一遍程序,commit,小心一点总没错

Optimize Import

第二步,删除多余import

如当前打开某文件则执行文件操作,没有打开则是整个项目

跑一遍程序,commit,小心一点总没错

Reformat Code

第三步,格式化代码

跑一遍程序,commit,小心一点总没错

Unused Resources

第四步,删除无用的资源文件

跑一遍程序,commit,小心一点总没错

看看出错了吧!!!!!!

删除未使用的资源文件,并没有那么智能,我遇到两个问题:

1、项目中和Kotlin相关的布局文件,所有的控件id被删除。由于Kotlin Extensions插件的原因,控件id并没有被显式引用,所以AS误以为控件id为无用资源
2、menu文件被删除,代码中引用了menu文件中的id但没有引用menu文件导致文件被删除

当明显知道删除错了,还要手动还原回去

Gradle

作为Android构建工具的Gradle,也可以设置打包时资源文件的压缩。

原配置

将false修改为true,打包是就不会将使用不到的资源文件打入包内。与此同时,还会将代码混淆预防反编译。

运行时的APP为debug模式,所以打包测试下

又出错了!!!!

由于第四步,删除无用的资源时,导致一string.xml文件内容被删除,打包时发现此文件为空报错,确认文件无用时将文件删除即可。

打包成功,将apk放入手机运行。

又出错了!!!!

出错信息没在代码内,但有一个重点信息ClassLoader找不到类,定位原因在混淆规则上,看看具体找不到那个类,第三方的话很好解决找找官网的混淆规则。但但但但但我们公司买了**公司的订制服务SaaS,坑爹了,找了半天终于找到一行的混淆规则。

到此只是对项目进行了最简单的清理,代码逻辑啊!无用的Activity、Fragment是没有被清理掉的,路还很长。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容

  • Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这样一来,任何一处协同...
    __silhouette阅读 15,887评论 5 147
  • 如今手机上都是号称放大几倍,那么怎么来计算放大倍数,和单反是否能够相提并论呢 1. 光学的放大倍数 可采用等效焦距...
    晓说娟绘阅读 19,944评论 0 0
  • 雨恨云愁,杏叶黄透铺满地。 落英无翼,乱舞随风泣。 幽怨绵绵,却是无处寄。 前尘事,尽抛天际,多思又何益?
    长弓Y阅读 373评论 1 1
  • 你病了 我想给你熬一钵清粥 备几碟爽口的蔬菜 给你买一个桃罐头 再给你泡一泡脚 捏一捏头 给你搓搓后背 揉揉脚 给...
    漫漫无忧阅读 215评论 10 3