android avd配置需要什么样的配置才能流畅开发

[转载]给Eclipse做简单配置使Android开发更快更流畅
&&&设置工作空间的项目编码,
防止出现乱码
  Window - Preferences - General - Workspace
  将"Text file encoding"选为"Other" - "UTF-8
  改变现有项目的编码的步骤: 右击项目属性, 选择"Text file encoding"的编码
  设置其它文件的编码
  Window -& Preferences -& General
-& Content Types
  将需要设置的文件设置编码, 最好统一设为UTF-8
  设置后, 如Javascript文件可正常显示中文
  设置创建JSP页面时,将JSP的默认编码设为UTF-8
  Window -& Preferences -&
MyEclipse -& Files and Editors -&
  将"Encoding"选为"ISO10646/Unicode(UTF-8)
  去掉格式化JSP时页面中的空行
  Window -& Preferences -&
MyEclipse -& HTML -& HTML Source
  勾选"Clear all blank lines"
  增强Eclipse的自动代码提示功能
  默认下, 只有按"."或"Alt + /"才出现代码提示功能, 不够强大, 作小小设置,
可将代码提示功能像VS的一样方便
  1. Window -& Preferences -& Java
-& Editor -& Content Assist
  2. 将"Auto Activation triggers for java"设置为".abc"(默认是"."),
点"Apply"应用
  3. 导出目前的Eclipse配置文件: File -& Export
-& General -& Perferences, 选择保存路径,
保存得到*.epf文件
  4. 用文本编辑器打开刚才保存的*.epf文件, 搜索".abc", 将".abc"部分改为
  ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ(,"
(以上为自动提示的触发字符,
  根据个人习惯设置), 保存此配置文件(个人觉得不太好用,容易出错)
  5. 导入此配置文件: File -& import -&
General -& Perferences, 导入修改后的配置文件.
  第一个选项为反应时间,可设为100左右(默认200)
  高亮类中同一引用的使用位置
  Window -& Perferences -& General
- & Editors -& TextEditors
-& Annotations
  选择"Occurrences",勾引"Text as" -&
"Highlighted"(块高亮)或"Squiggles"(虚线)
  Link with Editor
  打开类后, 自动在包管理器这里显示类的位置
  取消Myeclipse的自动文件验证(卡傻的原因)
  Windows && Perferences
&&Myeclipse && Validation
  保留manual(手动)部分,build下只留"classpath dependency Validator"
  手动验证: 右键文件 -& Myeclipse -& Run
Validation
  取消拼写错误检查
  我爱故意写错单词, 不需要系统帮我检查
  Windows && perferences &&
General && Editors-& Text Editors
-& Spelling
  去掉"Enable spell checking"勾选
  关闭不需要的启动项
  MyEclipse:
  Windows && Perferences&&
General&& Startup and Shutdown
  我只保留了
  顺序下来:
  1, Tomcat6: 必备的...
  2, 内存监视器: 可以查看Myeclipse的使用内存, 我喜欢这工具(在菜单Myeclipse - Utilities
- Show Heap Status打开)
  3, JSP Debug工具, 其实我也没用过, 怕有一天用到...
  4, 文件创建向导(个人经常用到)
  5, 向后兼容的意思吧, 怕有一天会用到, 但其实很少用, 可去掉
  6, 透视图, 应该可以去掉吧...
  其实就只用选择Tomcat6
  关闭自动更新
  1, Eclipse:
  Windows && Perferences&&
Install/Update -& Automatic Updates
  不勾选"Automatically find new updates and notify me"
  2, Myeclipse:
  1)Windows && Perferences&&
MyEclipse... -& Community Essentials
  & 不勾选"Search for new features at
  2)Windows && Perferences&&
MyEclipse... -& Maven4MyEclipse
  不勾选"Download repository index updates on startup"
  给MyEclipse 8.x Stable (8.0 GA) 添加启动画面
  在myeclipse.ini配置文件追加上一行代码:
  Dosgi.splashLocation=../Common/plugins/com.genuitec.myeclipse.product8_8.0.0.me/sp
  lash.bmp
  让Eclipse拖着myeclipse狂飚
  技巧一:取消自动validation
  validation有一堆,什么xml、jsp、jsf、js等等,我们没有必要全部都去自动校验一下,只是需要的时候
  才会手工校验一下,速度立马提升好几个档次!
  取消方法:
  windows--&perferences--&myeclipse--&validation
  除开Manual下面的复选框全部选中之外,其他全部不选
  手工验证方法:
  在要验证的文件上,单击鼠标右键--&myeclipse--&run
validation
  MyEclipse耗内存的决绝办法
  1 老是弹出Quick update error
  这个问题的解决办法是关闭自动更新
  Windows & Preferences &
MyEclipse Enterprise Workbench & Community
Essentials,
  把选项 "Search for new features on startup"的前勾去掉即可.
  2 关闭updating indexes
  Window & Preferences & Myeclipse
Enterprise Workbench & Maven4Myeclipse
& Maven&禁用Download
  repository index updates on startup
  3 关闭MyEclipse的自动validation
  windows--&perferences--&myeclipse--&validation
  将Build下全部勾取消
  如果你需要验证某个文件的时候,我们可以单独去验证它。方法是,在需要验证的文件上( 右键
  MyEclipse -& Run Validation
  4 启动优化,关闭不需要使用的模块
  Window & Preferences & General
& Startup andy Shutdown 在这里列出的是MyEclipse启动时加载的模块
  我这里只让它加载tomcat5 勾选 MyEclipse EASIE Tomcat 5
  5. 在myeclipse 7.0版本以上时,
  window-preferences-MyEclipse Enterprise
Work-Maven4MyEclipse-Maven, 取消选中Download
  repository index updates on startup!
  6. 关闭更新调度:window --& preferences
--& General --& Startup and Shutdown
--& Automatic
  Updates Scheduler(去掉前面的勾)
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Android L 开发者预览版的使用体验如何?
Nexus 设备已经可以下载使用 ──
Android L developer preview初体验昨晚弄了一段代码监控放出页面变化,第一时间下载,无奈前天熬夜IO大会,睡到5点,备份刷机,体验…在和朋友交流之后来写体验,只睡了3个小时,求赞啊,不给赞,我合不了眼啊。--------------- 14:57:42----------------------
我简单整理了一个Android L preview root 的方案包,大家感兴趣可以试一试,我是亲测成功的。当然需要声明,任何root刷机都可能存在风险,请您谨慎操作。 (Nexus 5 Android L preview Root)包里所带的supersu在Android L preview下可以正常使用授权管理。看来之前的判断root权限管理不兼容存在错误。 --------------- 17:05:30----------------------关于
提的root问题,我已经成功root并且刷了第三方Recovery。使用了 提供的
.(Nexus 5专用,不要看错了啊。)目前root权限管理软件都有些兼容问题,但是不妨碍root权限。--------------- 12:50:17----------------------
提的关于任务管理的流畅问题。我又仔细测试了一下。我之前也有提到,我认为的不流畅不好用语言形容,因为滚动本身具有阻尼的减速效果,有可能是就是这个效果本身的提现,但是的确会给人一种微微不流畅的感觉。我更愿意相信是动画效果。
很多地方,给我感觉微微的延时就是为了播放点击动画效果故意设置的。
在指出一点,大家可以关注一下通知面板的顶部右边的这几个图标,在点击一次展开快捷开关的面板,这时这些按钮才有效,但是无线、电量纯粹就是摆设,只有设置和人像可点击。觉得这里的设计不太恰当。
快捷开关不可以自定义,而且把投射屏幕cast放置在快捷开关里,它真的这么常用?--------------- 11:36:10----------------------大家没有或者不愿意在Nexus 5/7上体验的可以去ADT的Android SDK Manager中更新最新放出的Android L(API 20, L preview)创建AVD体验。-------------------------------------------------------------------首先说,这真的直只是预览版啊。变化非常大!holo作为一个主题还是内置,未来看Google的意思。这个可以回答很多人对于兼容的疑惑。Materal主题就叫做:“android:Theme.Material”。通知中心挺不错,虽然折叠了显得复杂,不过交互还是挺简单。设置是比较好反应系统UI的地方大家自己感觉,顺便提一下通知状态栏的底色可以有当前应用指定。任务管理变化明显,不过滚动有非常明显的卡顿,这个卡片十分类似chrome for Android的那个标签管理,个人觉得虽然这样可以呈现更多地任务标签,但是滚动一样很麻烦,因为任务管理很主要的功能就是快速任务切换,这里的滚动卡顿(可能是平滑滚动效果吧)十分恶心。败笔挺明显,动画在很多地方上拖慢了或者干扰了用户体验,这个Google的设计师也承认欠考虑。最大的问题是每个应用点击图标打开,会有大概400ms左右的真空期。注意是点击图标打开。我觉得不是ART问题。另外开发者中心没有运行时切换,所以ART不是默认,而是唯一。整体上风格很张扬,用色很霸道。反正这个预览版对不起我2点睡,5点起的折腾。
早上刷的 Android L Developer Preview,刚又刷回 Android 4.4.4 了…恩,好的方面大家都说的差不多了,我就来补充些自己遇到的问题吧:刷完开机,开机动画持续了大概 3 分钟,我还以为卡住了呢…然后选择语言,下滑的时候出现卡顿,有小块背景色不正常。当滑动到某个语言,整个画面忽然反转,我转动手机到各个方向都调整不过来,后来想到可能是那个语言阅读方向是从右往左,于是继续下滑,画面又正常了…进入桌面后,下滑通知栏没有发现「设置」,再下滑一次才出现…长按电源键,发现只有「关机」,没有「飞行模式」和「静音/震动」…然后重点来了!在 Android L 的 ART 模式下,ClockworkMod 的 superuser 和 Chainfire 的 SuperSU 都失效,也就是不能 root…没有 root 的话,爬墙神器 fqrouter 就不能用啦,貌似 GAE Proxy 也要 root…然后我就试 Green VPN 和 Ladder 这两个不用 root 的,发现通知栏没有那个钥匙图标,还是进不了 Google Play Store…这下完了,难道我要去豌豆荚下载 App?没有 AppOpsXposed 或者 XPrivacy 这两个控制权限的我哪敢装国产 App,可是这两个都要 root 权限啊…万般无奈之下,只好刷回旧版了,没有 VPN 没有爬墙路由器的孩子就是这么可怜…==Update:问题的根源在于之前的 superuser,爬墙和权限管理等工具尚未支持 ART 模式,而缺少这些工具的 Android L 是称不上完美的…Update 2:经提醒,XDA 的 savoca 提供了 root 方法(),不过貌似 VPN 不能用,不知道 fqrouter 和 Xposed 是什么情况,希望能尽快提供 ART 版本…Update 3: 评论指出 Ladder 和 fqrouter 不能使用不是 ART 的问题,因为它们在 Android 4.4 的 ART 模式下都可用,所以应该是系统的问题。Update 4:
指出 Android L 下基于 iptables 的 (收费)可以稳定爬墙,微信的 5.1 版本也可以正常使用(6 月 30 日更新的
已支持 Android L)。Update 5:
指出在 Android 4.4.4 下通过非 Play Store 版的
可以在 VPN 模式下实现免 root 爬墙,我测试的时候是覆盖安装,虽然提示「Please re-install」,但还是可以正常爬墙的,赞一个,希望 fqrouter 更新之后在 Android L 上也可以免 root 运行。==最后附图一张,刚进桌面时截的,下面导航栏的三个图标看起来好奇怪啊:
N7版本已刷入体验。确实是开发者预览版,因为只有系统的设置和通知栏多任务等一些基本界面完成了改动,GApps都还是老样子。而且居然自带的都是旧版本app,包括G+。G+给的是一个还有drawer的版本……系统流畅度的确有欠缺,动画效果比较多,明显的是每次点击虚拟键或者按钮类空间或是条目时从触摸位置向外会扩散水波纹状的动画。几乎同样的后台,系统内存占用从4.4.x的500M左右猛增到800以上。fq失效
玩了一个下午。手头刚好有两台 Nexus 5,所以就做了一个 4.4 跟 Android L 的对比。图多。锁屏界面更加简单。向左划进入相机,向右划进入拨号界面。手势丰富。同时也支持锁屏通知。右上角还多了一个头像……解锁后主屏幕差不多。这次 Android L 只多更新了一张壁纸。(右边那个 4 变粗是因为我用 Chronos Pro 插件。)随后看看曾经原生极其反人类的联系人界面。Android L 做的好很多…… 因为 4.4 的拨号界面翻通讯录很麻烦(简直脑残设计)。Android L用改变 tabview 功能 + hera 的方式搞定了这个问题。—— 而且,单页面展示的内容也比 4.4 多了很多。再看看拨号界面。圆型拨号按键一股子 iOS 7 味道。这里拉开了各个数字的间距,方便点按,但是展示联想内容的地方又少了。通知栏不是全黑的了。有通透感。使用起来我感觉像一个 Widget(这就是 Material Design吧)。不过一个问题是:我如何把所有通知全部清除?4.4 带清除按钮,L 又改没了貌似 …… 这个改动太赞了,不多说。4.4 时候的设计简直是脑残。4.4 的快速设置,凭什么我用两步才能完成?这tm 是哪门子快速设置?我觉得使用原生 Android 4.4 简直折磨自己 …… 原生党来咬我吧~注意右边键盘的右下角 。那个键盘是神马东西?!将重要操作集中在底部,一股 Smartbar 既视感。应该只是特例。关于手机界面…… 这个显示内容又少了,减小了字号却拉大了间距,虽然看上去清爽不少。但效率又变低了……关机界面…… 所以我特好奇:如果只给我一个选项,为什么不是长按直接关机呢。。。。至于应用,倒没什么太大区别。该啥样还是啥样。不过,规则的三角、圆、正方,确实看上去收敛很多…… 总结:Android 改的越来越好了。打电话会有发烫现象。不是主力机,就没感觉出什么 Bug,有时偶尔掉帧,在下拉快速设置时感觉明显。为了新鲜界面 + ART,值得刷下来玩玩 ……利益相关:魅族员工
我只知道有几个很明显的bug(6月版本)1.启动器与老的App切换的动画不连贯,从启动器点开,通知栏变黑要1秒,App再从底部滑上来又要1秒,但是对重新设计过的App就没有这问题,不过总感觉上滑动画很僵硬2.打开抽屉经常没动画3.最近任务界面的滑动不够流畅,虽说不卡顿,但是帧数目测绝对没有60帧4.在App之上的其他应用的窗口关闭后会有一小下黑屏,这个问题在4.4一直都有感觉启动器应该还没完善好整体动画帧数也感觉不稳定谷歌还需继续优化不过还是很期待android L正式版-----------------------------日更新-----------------------------10月份的预览版与6月份的预览版是天差地别的,10月份版本的启动器明显改善了很多,动画也都重新设计了,因此上面的1和2的bug算是修复掉了。最近应用界面与启动器之间的过渡有了新的动画,上下滑动的时候帧数也变得稳定,已经能够让人感到流畅。总结一下:虽然暂时没有推送正式版,但是这个10月的预览版已经可以让人真正的开始了解Material Design,能看到无处不在的涟漪动画,大方明快的色彩,繁复的过渡效果。整体操作的流畅感相对以前的安卓版本提高了不少,然而并没有因为动画的增多让人感觉到一丝的拖沓,是一种和ios7/8以及wp非常不一样的感觉。以上的体验是在没有安装任何第三方APP的情况下的,现在就比较担心那些不负责任的开发者,写的APP可以让手机的体验瞬间从5.0变回2.X时代。
简单说一下:· 卡的感觉有时有,动画的时候,跟ios7 刚发布的时候一样吧· 加了有些很有意思的特效,光看发布会体现不出来的,得亲自玩玩;· 姑且算是preview版吧,眼前亮一下,也就是一下。。。------更新------既然诸位都这么专业,体验的什么东西我也说不好,只进行说明吧。想体验的可以去下个简单的sdk manager,在Android L(API 20, L Preview)里面找到ARM EABI v7a System Image并更新,然后用avd manager启动模拟器就行。还有wear的image(4.4W)和TV的Image(L),作为L,没有wear怎么行:P你们想看的很多东西都能在这里找到。讲讲API Preview(要把给开发者看的东西翻译地不那么“代码”化,我自动屏蔽了很多我认为没必要讲的话术,然后就是调整了顺序):重大更新:1. 全新的ART(Android RunTime),内容就不介绍了,反正就是比以前的Dalvik要爽,下面还说了几个可能不支持ART的原因,例如用C/C++写的程序,用了非标准的java解释器优化,用了特殊的GC库等等,不过这次ART的改进是:
· 预编译,就是用安装时间长换来启动时间短
· 改进了系统GC(Garbage Collection)效率
· 改进了程序debug支持 2. 程序的通知栏(Notification)相关内容,让你的程序弹出一个如下图的界面:现在是像一个小的浮窗(ios即视感)一样弹出,【勿扰模式】可能会对你定义的通知产生影响,所以请开发者注意;这个Notification的别名叫做现在是像一个小的浮窗(ios即视感)一样弹出,【勿扰模式】可能会对你定义的通知产生影响,所以请开发者注意;这个Notification的别名叫做heads-up notification,比如你可以全屏游戏的时候直接挂掉电话等等。那么至于为什么要把Notification当成如此重大的一个更新写在这里呢?也是截图(用PS随便拼的没有任何顺序):你们懂了吗?你们懂了吗?3. RemoteControlClient:4.x中锁屏音乐专辑的大背景没了,就给你一个如同歌一样高端大气简单的东西(绿框中的内容),这个部分作为一个大块抽了出来:Lockscreen notifications:4. “最近任务”:以前的版本中一个app被当作是一个"Task",现在开发者可以将某一个app中建立最多100个"Task"(我有不详的预感),以便用户在按下方手柄的方块键弹出最近使用的app中丧心病狂地切换。User Interface:1. Material Design包含如下内容:· 丑的要死的 Light Actionbar:· 类似ios的穿透:· 类似ios的穿透:· View的阴影:· View的阴影:这个就是所谓的Z轴的玩意,我按照做了个demo,表示无法理解,可能是我打开的方式不对,等研究明白了再看看是否需要上图吧。。· 大量(奇奇怪怪)的动画效果比如:长按为先触发背景(外圆),然后在点击的中心扩散(内圆):普通点击效果是扩散(图示按钮4的淡灰色圆),经代码,自定义背景后,(未处理)按钮的扩散效果失效:然后是真·大波·浪,大波会跟着你手指的位置变动朋友答很多了,我就不截图了,有兴趣自己跑个模拟器玩玩吧。· 添加了一个RecyclerView和CardView,前者几乎就是listview的封装优化版本,后者的话,看看截图:输入法:更详细的电池管理(为了省电):下图是使用dumpsys batterystats命令得出的结果:下图是使用dumpsys batterystats命令得出的结果:$ adb shell dumpsys batterystats --charged &package-name&
勿扰模式:其他的都是开发者的了,提几个:· OpenGL ES 3.1 支持· Camera和MultiMedia的新增API,看起来是为了多设备一同用准备的· 存储部分/云存储路径整合· 多重网络连接· 基于BLE(Bluetooth low energy)的蓝牙扫描· NFC增强· 类似Tasks的任务schedule API· 企业版Android:管理员可以根据配置文件添加不同类型的app(没太看懂,学windows吗?)· 将PDF作为Bitmap渲染· 对Testing的提升· Menifest注册节点添加,一个TV用,一个局限设备支持webkit以上全部内容,其余有兴趣的请去查看来源吧。
快捷设置比以前好用不少,但是下拉两次打开快捷设置之后下面那些通知没法点了啊,点击,滑动删除都不能用了,绝对需要修正啊。还有下拉一次和下拉两次右上角显示图标不一样,图标间隔也不一样,能不能点击也不一样,简直郁闷不过还是不想换回4.4了
期待的5.0没有出现,新的命名规则Android L,也让那个我们颇为吃惊,这个L看起来就是Lollipop的缩写。Google I/O中Google展示了Android L的开发者预览版,我们只能大概看到一些功能,从整体界面来看,变得更为极简,更为扁平。有点越来越苹果了。性能上全部使用ART,应该会提高性能。部分小的细节通知栏与锁屏界面整合,最近操作,省电模式,等等,应该会很好用,新版本要等到秋季才发行正式版,我估计会有更多的东西出现,让我们共同期待谷歌的新系统吧。新版的开发者版本已经可以下载,但是功能不完全,我认为不如等正式版发布再来体验。-----------------------------------------------------------------------------刚刚有朋友问会不会像4.4一样悲催ART被阉割。我想在说一下,我个人用的是NEXUS7二代,4.4系统,他的ART不是被阉割,只是没有默认开放,如果你想打开,是可以通过开发者选项把他打开的。再来说说新版的系统,
Android L拥有全新的Android Runtime ART运行环境,相比此前的旧版runtime Dalvik,要提升一倍的运行速度。ART在碎片回收方面有比以前更好的表现。这是他的官方说的。我估计新版本的应该不分ART版本或者非ART版,应该通过4.4的测试,这次会都变成ART版,来提高性能。
用刚刷过的Nexus7来答题吧!先说优点:1 UI变好看了颜色变得不再那么geek2感觉比4.44art反应更快,也可能是心理作用3动画特效很漂亮4下拉通知和开关合并了,并且终于能一键快速开关了5解锁环取消,向上推解锁,并且锁屏界面能显示通知信息下面是缺点1 预览版目前无法完美root2 因为上一条,所有4.4时代的高权限神器全都挂掉3因为上一条,再加上最近墙高不可攀,导致Google应用几乎都废掉4因为以上3条几乎可以放弃这个预览版了5 国内各类app各种不兼容so,这个版本还是玩玩好了,要日常用为时尚早
今天下午考完试立马开始刷,因为听说问题还比较多,试了MultiROM做双系统,过程参见在v2ex 写的,并且按xda的 root了说下使用感受:1、新界面我挺喜欢的(或许是喜新厌旧)2、时间所限没有试很多应用,测试了三个需要root的应用,都可以正常授予root权限(指跳出个对话框然后点授权,supersu里面有授权记录),但是有两个无法正常使用。(1)coolapk 的静默安装:直接重启,无法使用(2)shadowsocks,可以启动,但是没效果(3)re 管理器,正常工作,可以修改 system 里的东西3、因为2的原因,Google应用基本全废,对我来说等于没法用,所以我只能把这个扔一边,等开发者更新应用了
正式版都各种问题
电源解决方案 没看到成效 以前一天一充 现在 一天两充
各种不兼容
到目前为止 不推荐刷 我nexus 5已经自动更新了
来回刷了好几次 不想折腾了
iOS8.1表示一点不折腾
navigation bar加上个 × 就可以召唤PS4了================1.感觉耗电比4.4.4严重2.BAT的app不兼容3.通知栏很怪异4.VPN跪了5.锁屏大赞!6.虽然bug很多,还是不想刷回4.4.4android需要什么样的配置才能流畅开发_百度知道
android需要什么样的配置才能流畅开发
提问者采纳
安卓开发基本上是在PC上用安卓开发环境开发,PC的配置比办公稍高一些就行。
其他类似问题
按默认排序
其他2条回答
java开发环境和运行环境(jdk/jre),android开发环境sdk配置,模拟器adt,推荐使用eclipse等集成开发环境,java环境变量的配置教程网上很多了。至于电脑的配置的话,android开发没有特别的要求,只是运行模拟器的时候会很卡,与模拟器自身有关。我的电脑6g的内存,运行模拟器的话依然卡到爆,调试的话最好选择android手机,这样的话运行比较快。
越高越好。内存大一点
android的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁分享送七钻★QQ钻+会员
您的位置: >
如何给你的Android 安装文件(APK)瘦身
作者:编程棋牌开发
来源:网络收集
摘要:Android的apk文件越来越大了这已经是一个不争的事实。在Android 还是最初版本的时候,一个app的apk文件大小也还只有2 MB左右,到了现在,一个app的apk文件大小已经升级到10MB到20MB这个范围了。apk文件大小的爆炸式增长主要是因为用户对app质量的期待越来越
&Android的apk文件越来越大了这已经是一个不争的事实。在Android 还是最初版本的时候,一个app的apk文件大小也还只有2 MB左右,到了现在,一个app的apk文件大小已经升级到10MB到20MB这个范围了。apk文件大小的爆炸式增长主要是因为用户对app质量的期待越来越高以及开发者的开发经验增长,具体体现在以下几个方面:
Android设备dpi的多样化 ([l|m|tv|h|x|xx|xxx]dpi)
Android平台的进化,开发工具的改进以及开源类库生态系统的丰富
用户对高质量UI的期待
Android开发者在设计一个app的时候应该将最终发布一个轻量级app作为一个最佳实践来考虑。为什么?首先这就意味着你拥有了一个简洁,易维护代码基础。其次,官方应用商店对超过50MB的apk设置了拓展包文件下载选项,apk文件在50MB以下更容易让用户下载。最后,我们的应用程序环境是一个带宽有限,存储空间有限的环境,apk安装文件越小,下载就会越快,安装也会更快,良性循环,最后说不定用户因为这个给好评。
在大部分情况下,apk大小的增长是为了满足消费者的需要和期待。然而,我认为apk大小的增速已经超过了用户对app期待的增速。所以,很大程度上,官方应用商店里面的那些程序可以瘦身至它们现在大小的一半甚至更多。在这篇文章里面,我将写下一些关于如何给apk文件瘦身的招式,希望你们能够喜欢。
reducing_apk_file_size
APK 文件格式
在说如何给apk瘦身之前,让我们先来看看apk文件内部的结构到底是怎么一回事。说简单点,一个apk文件就是包含一些文件的压缩包。作为开发者,我们通过使用unzip命令解压这个apk文件一探apk的内部结构。下面的文件结构就是我们使用unzip &your_apk_name&.apk1这个命令所获得的:
/armeabi-v7a
MANIFEST.MF
AndroidManifest.xml
classes.dex
resources.arsc
我们可能对上面大部分的文件和目录都很熟悉。它们和我们在实际开发app的时候所看到得项目结构一样,包含了:/assets,/lib,/res,AndroidManifest.xml. 还有一些文件可能是我们第一次看到。一般说来,classes.dex, 它包含了我们所写的Java代码经过编译后class文件;resources.arsc包含了预编译之后的资源文件(比如values文件,XML drawables 文件等。)。
由于apk文件只是一个简单地压缩文件,这就意味着它有两种大小:即压缩前的大小和压缩后的大小。这篇文章我将主要关注压缩后的大小。
如何减少apk文件大小
减少apk文件大小可以从几个方面入手。由于每个app都是不同的,所以没有什么绝对规则来给apk文件瘦身。作为apk文件的三个重要组成部分,我们可以考虑从它们开始入手:
Java 源代码
资源文件(resources/assets)
native code
所以接下来的招式都是由减少这些组件的大小出发,进而减少整个app的大小。
掌握良好的编码习惯
这是减少apk文件至关重要的第一步。你要对自己的代码了如子掌。你要移除掉所有无用处的dependency libraries,让你的代码一天比一天优秀,持续地优化你的代码。总而言之,保持一个简洁,最新的代码基础是减少apk文件至关重要的一环。
当然,从零开始一个项目并为这个项目保持一份简洁的代码基础很容易。项目越老,这个工作就越困难。事实上,拥有一大段历史背景的项目必须要去处理各种死代码和无用代码。还好有许多的开发工具可以帮我们来做这些事情&&
使用 Proguard
Proguard 是一个很强悍的工具,它可以帮你在代码编译时对代码进行混淆,优化和压缩。它有一个专门用来减少apk文件大小的功能叫做 tree-shaking。Proguard 会遍历你的所有代码然后找出无用处的代码。所有这些不可达(或者不需要)的代码都会在生成最终的apk文件之前被清除掉。Proguard 也会重命名你的类属性,类和接口,然整个代码尽可能地保持轻量级水平。
也许现在你会认为 Proguard 是一个相当有效地工具。但是能力越大,责任也就越大。现在许多开发这认为Proguard有点让人不省心,因为它会重度依赖反射。哪些类或者属性需要被处理或者不能处理都要开发者对 Proguard 进行配置。
广泛使用 Lint
Proguard 只会对 Java 代码起作用,那么对哪些资源文件呢?比如一张图片my_image在res/drawable文件夹中,没有被使用,Proguard 只会移除掉R类中的引用,但是图片依然还在文件夹中。
Lint 一个静态的代码分析器,你只需通过调用./gradlew lint这个简单地命令它就能帮你检查所有无用的资源文件。它在检测完之后会提供一份详细的资源文件清单,并将无用的资源列在&UnusedResources: Unused resources& 区域之下。只要你不通过反射来反问这些无用资源,你就可以放心地移除这些文件了。
Lint 会分析资源文件(比如/res文件夹下面的文件) ,但是会跳过 assets 文件 (/assets文件夹下面的文件)。事实上assets 文件是可以通过它们的文件名直接访问的,而不需要通过Java引用或者XML引用。因此,Lint 也不能判定某个 asset 文件在项目中是否有用。这全取决于开发者对这个文件夹的维护了。如果你没有使用某个asset 文件,那么你就可以直接清除这个文件。
对资源文件进行取舍
Android 支持多种设备。Android的系统设计让它可以支持设备的多样性:屏幕密度,屏幕形状,屏幕大小等等。到了Android 4.4,它支持的屏幕密度包括: ldpi, mdpi, tvdpi, hdpi, xhdpi, xxhdpi and xxxhdpi。但是你要知道的一点是,Android 支持这么多的屏幕密度并不意味着你需要为每一个屏幕密度提供相应的资源文件。
如果你知道某些屏幕密度的设备只有很少部分用户在使用,那么你就可以直接不需要使用相应屏幕密度的资源文件。就我个人而言,我只会为我的应用提供 hdpi, xhdpi and xxhdpi2这几个屏幕密度的支持。如果某些设备不是这几个屏幕密度的,不用担心,Android 系统会自动使用存在的资源为设备计算然后提供资源文件。
我这么做得原因很简单。首先,这些设备屏幕密度就能覆盖我 80% 的用户。其次,xxxhdpi 这个屏幕密度只是在为未来的设备做准备,但是未来还未到来。最后,我真的不怎么关心低屏幕密度(比如mdpi 和 ldpi),无论我为这几个屏幕密度努力,结果都是令人伤心地,还不如直接让Android系统对 hdpi 资源文件进行适当地缩放来匹配相应地低端机型。
同样地,在drawable-nodpi文件夹里面维持一个文件也能节省空间。当然前提是你觉得对这个文件进行相应地缩放之后呈现的效果你能接受或者这个文件出现的几率很少。
资源文件最少化配置
Android 开发经常会依赖各种外部开源代码库,比如Android Support Library, Google Play Services, Facebook SDK 等等。但是这些库里面并不是所有的资源文件你都会用到。比如,Google Play Services 里面会有一些为其他语种提供翻译,而你的app又不需要这个语种的翻译,而且这个库里面还包含了我的app中不支持的 mdpi 资源文件
还好从Android Gradle Plugin 0.7 开始,你可以配置你的app的build系统。这主要是通过配置resConfig和resConfigs以及默认的配置选项。下面的 DSL (Domain Specific Language)就会阻止 aapt(Android Asset Packaging Tool)打包app中不需要的资源文件。
defaultConfig {
resConfigs &en&, &de&, &fr&, &it&
resConfigs &nodpi&, &hdpi&, &xhdpi&, &xxhdpi&, &xxxhdpi&
Aapt(Android Asset Packaging Tool)就内置了保真图像压缩算法。例如,一个只需 256 色的真彩PNG图片会被aapt 通过一个颜色调色板转化成一个 8-bit PNG 文件。这可以帮助你减少图片文件的大小。当然你还可以通过Google查找相应的优化工具,比如 pngquant, ImageAlpha 和 ImageOptim 等。你可以从中选择一个适合你的工具。
还有一种只在Android平台上存在的图片文件也可以优化,它就是 9-patches。就我目前所知道,我还没发现有这个文件的优化工具。然而你只需要求你的设计师将它的可扩展区域和内容区域尽可能地减少即可。这不但可以减少资源文件的大小,还能使得以后资源文件的维护变得更加简单。
限制app支持的cpu 架构的数目
一般说来Android 使用Java 代码即可以满足大部分需求,不过还是有一小部分案例需要使用一些 native code。就像之前对资源文件那样opinionated,你可以这些 native code opinionated。 在当前的Android 生态系统中,让你的app支持 armabi 和 x86 架构就够了。这里有一篇相当不错的关于如何瘦身native 代码库的文章,你可以参考参考。
尽可能地重用
重用资源可能是你在进行移动开发时需要了解的最重要的优化技巧之一。比如在一个ListView或者RecyclerView,重用可以帮助你在列表滚动时保持界面流畅。重用还可以帮你减少apk文件的大小。例如,Android 提供了几个工具为一个asset文件重新着色,在Android L中你可以使用android:tint和android:tintMode来达到效果,在老版本中则可以使用ColorFilter。
如果系统中有两种图片,一种图片是另一种图片翻转180&得到的,那么你就可以移除一种图片,通过代码实现。比如你现在有两种图片分别命名为ic_arrow_expand和ic_arrow_collapse:
expand_collapse
你可以直接移除掉ic_arrow_collapse文件,然后在ic_arrow_expand的基础上创建一个RotateDrawable。这个方法也可以让你减少设计人员的工作:
&?xml version=&1.0& encoding=&utf-8&?&
&rotate xmlns:android=&/apk/res/android&
android:drawable=&@drawable/ic_arrow_expand&
android:fromDegrees=&180&
android:pivotX=&50%&
android:pivotY=&50%&
android:toDegrees=&180& /&
在合适的时候使用代码渲染图像
在某些情况下,直接使用Java 代码渲染图像也能获得不错的效果。比如逐帧动画就是一个很好的例子。最近我都在尝试一些Android Wear 的开发,了解了一下Android wearable support library。就像其他的Android support library 一样,这个库里面也有一些工具来处理穿戴设备的。
不过让我吃惊的是,当我简单地构建了一个 &Hello World&示例,最后得到的apk文件竟然有1.5MB。于是我快速地研究了一下wearable-support.aar文件,发现这个库有两个逐帧动画,并分别支持了3种不同的屏幕密度:一个 &success& 动画 (31 frames) 和一个 &open on phone& 动画 (54 frames)。
wearable_support
这个逐帧success动画是被一个叫做AnimationDrawable所定义的:
&?xml version=&1.0& encoding=&utf-8&?&
&animation-list xmlns:android=&/apk/res/android& android:oneshot=&true&&
&item android:drawable=&@drawable/generic_confirmation_00163& android:duration=&33&/&
&item android:drawable=&@drawable/generic_confirmation_00164& android:duration=&33&/&
&item android:drawable=&@drawable/generic_confirmation_00165& android:duration=&33&/&
&item android:drawable=&@drawable/generic_confirmation_00166& android:duration=&33&/&
&item android:drawable=&@drawable/generic_confirmation_00167& android:duration=&33&/&
&item android:drawable=&@drawable/generic_confirmation_00168& android:duration=&33&/&
&item android:drawable=&@drawable/generic_confirmation_00169& android:duration=&33&/&
&item android:drawable=&@drawable/generic_confirmation_00170& android:duration=&33&/&
&item android:drawable=&@drawable/generic_confirmation_00171& android:duration=&33&/&
&item android:drawable=&@drawable/generic_confirmation_00172& android:duration=&33&/&
&item android:drawable=&@drawable/generic_confirmation_00173& android:duration=&33&/&
&item android:drawable=&@drawable/generic_confirmation_00174& android:duration=&33&/&
&item android:drawable=&@drawable/generic_confirmation_00175& android:duration=&333&/&
&item android:drawable=&@drawable/generic_confirmation_00185& android:duration=&33&/&
&item android:drawable=&@drawable/generic_confirmation_00186& android:duration=&33&/&
&item android:drawable=&@drawable/generic_confirmation_00187& android:duration=&33&/&
&item android:drawable=&@drawable/generic_confirmation_00188& android:duration=&33&/&
&item android:drawable=&@drawable/generic_confirmation_00189& android:duration=&33&/&
&item android:drawable=&@drawable/generic_confirmation_00190& android:duration=&33&/&
&item android:drawable=&@drawable/generic_confirmation_00191& android:duration=&33&/&
&item android:drawable=&@drawable/generic_confirmation_00192& android:duration=&33&/&
&item android:drawable=&@drawable/generic_confirmation_00193& android:duration=&33&/&
&/animation-list&
这样做得好处就是 (我当然在讽刺) 每帧显示33ms,这使得整个动画保持在30fps的频率。如果每帧16ms这将会导致整个库是之前的两倍大。如果你去看源码你会发现很有趣。在generic_confirmation_00175这一帧 (15 行) 将持续显示 333ms。generic_confirmation_00185紧跟着它。这个优化节省了9个类似的帧 (包含了从176 帧到 184 帧) 。不过最后神奇的是wearable-support.aar竟然神奇的包含了这个9个完全无用的帧,而且还以3中屏幕密度展示。3
在代码中来渲染这样的动画明显会很花时间。然而当你维持动画运行在60fps这样的频率可以大幅度的减少apk的大小。在写这篇博文的时候,Android还没提供工具来渲染这样的动画。但是我希望Google正在开发新一代的轻量级实时渲染系统来保证material design的细节呈现。当然&Adobe After Effect to VectorDrawable& 之类的设计工具也能提供很多方便。
如何更进一步?
上面所有的招式都集中在app或者library 开发者。也许我们还可以在app分发渠道方面为apk大小做出一些改变?我想可以在app 分发服务器端做一些改进,或者在官方应用商店。例如,我们可以期待官方应用商店在用户安装app的时候为设备绑定相应的native 库而摒弃那些无用的。
同样地,我们还可以想象只根据目标设备的配置来打包应用。不幸的是,这可能破坏Android 生态一个重要的功能特性:配置热置换。事实上,Android一开始就是位处理各种实时的配置更改(语言,屏幕转向)而设计的。如果我们移除掉与目标屏幕不兼容的资源文件,这可以极大的减少文件大小。不过Android需要处理实时的屏幕密度更改。即便我们假设废除这种功能,我们仍然需要处理为不同的屏幕密度设计的图片以及其他配置(比如屏幕朝向,最小宽度等)。
服务器端的apk打包看起来很强大。但这样会冒很大得风险,因为最终传送给用户的apk会于开发者发给的服务器的完全不同。分发一些缺失资源文件的apk可能会导致app崩溃。
设计就是在一个约束集里面找出最好的方案。显然apk文件的大小就是一个约束。不要害怕为了让多个方面变得更好而放松一个方面的约束。例如,当你要降低UI的渲染效果时,不要犹豫,因为这可以让apk的大小减小,同时使得app的运行也更加流畅。你99%的用户是感受不到UI质量变低的,但是他们会注意到apk文件变小了,运行也更加流畅了。总之,你需要将app各方面进行整体考虑,而不是仅仅几个方面的斟酌。
(责任编辑:编程棋牌开发)
本文章原创来自: QQ: (转载请保留网站版权。侵权必究)
订阅更新: 您可以通过
联系咨询QQ}

我要回帖

更多关于 配置android studio 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信