Android 攻城狮工作中的一些经验总结-[Android_YangKe]

Android 中为什么尽可能的少用枚举,你真的懂它吗?

对于移动设备来说内存是十分有限的资源,为了减少 GC、减少卡顿,我们应尽量减少内存开销,其中枚举就是可以优化的地方之一。

枚举是一种特殊的 class。

1> 创建 Animal.java。touch Animal.java
2> 编译 Animal.java。javac Animal.java
3> 查看 Animal.java 在编译器种的真实模样。javap Animal.class

//Animal.java
public enum Animal {
    DOG, CAT
}
yangke.png

通过观察枚举经过编译后会多出数组、 valueOf函数、静态代码块等。如果我们将DOG、CAT直接用常量来表示内存占用量可想而知。


Android 的整个编译打包过程
  • aapt 工具对 R.Java、Application Source Code、res 等文件进行编译。

  • Java 编译器将 *.java 文件编译为 *.class 文件。此文件包括本项目及其它 module 及 lib。

  • dex 工具将 *.class 文件合并为 *.dex 文件。

  • apkbuilder 工具对 *.dex 文件、Android 资源文件进行合并最终得出 *.apk
    文件。

  • signed 对 *.apk 进行签名得出签名版可安装 *.apk。

  • zipalign 对 apk 文件对齐优化。

zipalign对齐优化:通俗的说就是按着有利于系统处理的排列方式,对我们 apk 中的资源文件进行排列,提高资源的查找速度,从而去提高应用的运行效率。
zipalign 使用了4字节的边界对齐方式来映射内存,通过空间换时间的方式提高执行效率。内存分配单位是32位的,即4字节。位图中每行象素的数据是连续的,而下一行不能和上一行共用一个内存单元(4字节),所以每行象素的数据长度必须是4字节的倍数。


Android 应用如何定位卡顿、掉帧原因

造成应用卡顿的情况无非两种:

  • CPU、GPU 的性能有限,无法在规定的时间协同完成大量 UI 绘制。
  • 可用内存过小导致频繁 GC,从而导致绘制卡顿(代码low)。

由于硬件问题,我们不太好控制,这里我们主要针对软件问题进行分析。
1> 手机开发者模式中打开调试 GPU 过度绘制,查看同一个区域 View 是否存在多次绘制。紫色代表过度绘制一次、绿色代表过度绘制两次、浅红色代表过度绘制三次、深红色代表过度绘制大于等于四次。

2> 借助开发工具打开 Android Device Monitor->Hierarchy View 查看 View 的布局是否合理。

3> TraceView 是 Android SDK 中内置的一个工具,它可以加载 trace 文件,用图形的形式展示代码的执行时间、次数及调用栈,便于我们分析。


多个设备连接 adb 时,如何使用 install 命令

1> adb devices 列出当前所有连接设备,例:emulator-5554、emulator-5553...
2> adb -s emulator-5554 install apk 路径安装 apk 文件到 emulator-5553 设备


Android Studio 调试出现 waiting for debugger 的解决办法

1> Studio 连接设备过多,关闭掉其他设备,只保留当前正在使用的设备。
2> 终端调用adb kill-server随后调用adb start-server。当然前提需要在终端配置好adb环境变量。adb路径:盘符/xxx路径/Android/sdk/platform-tools/


View 背景温故

color 标准表示是8位的16进制表示的,而我之前一直用的都是6位。 颜色的十六进制可写为#xxxxxxxx(8位)和#xxxxxx(六位) 六位数的就是特殊的八位数的十六进制颜色。
划分为#|xx|xxxxxx。 则|xx|内的 xx 代表颜色的透明度。00 为全透明,而 ff 为完全不透明,xxxxxx相当于#ffxxxxxx。 颜色和不透明度 (alpha) 值以十六进制表示法表示。任何一种颜色的值范围都是 0 到 255(00 到 ff)。对于 alpha,00 表示完全透明,ff 表示完全不透明。表达式顺序是“aabbggrr”,其中“aa=alpha”(00 到 ff);“bb=blue”(00 到 ff);“gg=green”(00 到 ff);“rr=red”(00 到 ff)。

View 按下颜色一般为背景颜色透明度60%左右。


Bitmap 是什么?

Bitmap (位图)一种以像素点填充的图片格式,拥有很高的图像色彩,常见形式一个像素点占用4字节、8字节内存。此特点同时带来一个问题位图内存占用过高。

下面我们看一下 Bitmap 的内存计算公式:图片宽像素点和×图片高像素点和×每个像素点占用的字节大小 = 图片占用总内存。

例:一张格式为1080×1920的图片,如果此图的图片质量为 ARGB_8888 标识此位图一个像素点占用 4 byte,那么我们看下此图片大概占用多少内存。
1080×1920×4÷1024 = 8100byte ≈ 8mb。
计算完 Bitmap 的内存占用是不是头冒冷汗?那么我们如何优化呢?主流的现在分为两种:
1> 尺寸压缩(100×100的图片尺寸改为50×50)。
2> 图片质量压缩(降低图片的清晰度)。
3> 项目中优先使用 xml 编写的 Shape 图形、.9 图片、普通图片等。
具体如何压缩小伙伴们自行百度喽。


什么是 px、dp、sp、dpi、ppi

px:像素点。展示图像信息的最小显示单元。
dp:Android 中推出的一种用于适配不同密度手机的尺寸单位。其中有一个基数,当dpi=160时1dp=1px,基数越大1dp对应的px越大。
sp:Android 中推出的一种可拉伸字号尺寸单位。sp 作为字体大小单位,会随着 Android 系统的字体大小改变,而 dp 作为单位则不会。
dpi:dot per inch 的缩写,指每英寸所包含的点。dpi 是一个与硬件相关的概念。例:打印机,此处的点是指每英寸所能扫描的点或打印的点。
ppi:pixels per inch 的缩写,指每英寸所包含的像素点。ppi 越大标识每英寸屏幕所包含的像素点越多,图片也就越清晰。

一个dp、px 在线换算网站:https://pixplicity.com/dp-px-converter


App 被系统回收所遇到的问题

Activity 之间使用 intent 传递值如不进行状态保存,应用异常问题:
1> a页面跳转b页面使用 intent 传递值:例:当应用停留在a页面,由于用户操作我们的应用由前台进程转为后台进程,一定时间后应用被系统回收,当用户再次打开我们应用做跳转操作。如a页面 intent 中使用的值不进行状态保存,b页面调用 getIntent().getExtras().getXXX 得到的值会是 null(造成空指针异常)


百度地图获取 SHA1

开发版SHA1:
1> cd .android
2> keytool -list -v -keystore debug.keystore
3> 输入秘钥口令android回车

正式版SHA1:
1> keytool -list -v -keystore正式版签名文件路径,文件名为*.jks
2> 输入签名文件密码回车密码就是正式版apk包签名文件,密码同签名文件密码,文件为*.jks


Mac 很常用的一个命令
  • du -sh * - 列出当前目录下所有文件大小

Linux 文件解压
  • tar –xvzf *.tar.gz 解压 *.tar.gz 文件 *.tar.gz 为文件名

Linux 终端中需要掌握的一些快捷键
  • CTRL + U - 剪切光标前的内容
  • CTRL + K - 剪切光标至行末的内容
  • CTRL + Y - 粘贴
  • CTRL + E - 移动光标到行末
  • CTRL + A - 移动光标到行首
  • ALT + F - 跳向下一个空格
  • ALT + B - 跳回上一个空格
  • ALT + Backspace - 删除前一个单词
  • CTRL + W - 剪切光标后一个单词
  • Shift + Insert - 向终端内粘贴文本
  • dpkg -i - xxx/xxx/xxx.deb 安装deb软件, 有时权限不够dpkg前应加sudo
  • dpkg -P - 卸载deb软件, 权限不够同上

Linux 制作快捷方式

1> 创建xxx.desktop文件
2> 按需将下面内容拷贝到xxx.desktop文件内保存退出

[Desktop Entry]
Name=xxx //应用名称
Comment=Rayn-IDEA-IU
Exec=/home/rayn/idea/bin/idea.sh //应用的可执行文件,一般位于bin目录
Icon=/home/rayn/idea/bin/idea.png//启动应用的图标
Terminal=false//是否开启终端
Type=Application//标识应用程序

3.右键此文件-->属性-->权限, 勾选允许文件为程序执行


Ubuntu 安装有道词典

1> 下载适合自己操作系统的软件版本(文件以deb结尾) http://cidian.youdao.com/index-linux.html
2> 安装软件 sudo dpkg -i xxx.deb
3> 启动软件youdao-dict
如果Ubuntu是14版本可略过步骤4
4> 修复Ubuntu16无法启动的问题

  • sudo apt-get -f install
  • sudo apt-get install tesseract-ocr

5> 启动软件 youdao-dict


Ubuntu 如何安装 flash 插件

1> sudo apt-get update
2> sudo apt-get install flashplugin-installer
3> 浏览器刷新页面


Qt 无法输入中文问题

1> sudo apt install fcitx-frontend-qt5
2> sudo cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so /opt/Qt5.7.0/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts/

当然以上需要找到自己对应的目录才可以顺利进行
3> 重启 Qt


此篇由于是工作中问题的一些积累,所以会比较杂,高抬贵手别骂!

喜欢有帮助的话: 双击、评论、转发,动一动你的小手让更多的人知道!关注 Android_YangKe

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

推荐阅读更多精彩内容