2019独角兽企业重金招聘Python工程师标准>>>

实现应用程序不会随着新版本的Android平台装载到用户设备上而造成挂机是很重要的。下面的列表列举了五种我们观察到的比较糟糕的实现方式。你可以把这些看作是Android开发的“反模式”(即避免技巧)。

如果你的应用程序使用了下面描述的技巧,赶紧修补你的App吧。

避免技巧,#1:使用内部API

即便我们总是建议不要这么做,但还是有一些开发者选择使用那些不支持或者内部的API。例如,许多开发者使用内部的亮度控制和蓝牙切换API,这些API出现在1.0和1.1版本上。一个Bug——在Android 1.5上进行了修正——允许App在不需要请求权限的情况下使用这些API。结果,使用了这些API的App在1.5上挂掉了。如果你在App中使用了这些内部API,你需要做的是:停止这一做法,更新你的程序。

避免技巧,#2:直接操作Settings

严格来讲,这一条不算,因为我们可以通过Android本身进行操作。但之所以我们加上了这一条,是因为一些开发者做了一些调皮的事情:一些App悄无声息地修改了系统设定,而没有通知用户。例如,一些App没有询问用户就直接打开了GPS,而另外一些则可能直接打开了数据传输。 因此,应用程序不能直接操作某个特定的系统设定值,即便是它们之前能这么做。例如,App不能直接打开或关闭GPS。不是说使用会导致App崩溃,而是不应该使用这些API。代替的,App需要发出一个Intent来启动相应的Settings配置画面,这样用户可以手动地修改这些设定。详细情况可以参考android.provider.Settings.Secure类,你可以在1.5_pre(和之后的)SDK文档中找到。注意,只有那些移动到Settings.Secure类中设定受到影响。其它的,还会像Android 1.1那样有着相同的功能。

避免技巧,#3:过分布局

由于View渲染部分的变化,在布局中,过于深(超过10层左右)或过于多(超过30个左右)的View树层次可能会导致程序崩溃。过于复杂的布局总归是有危险的,尽管你可以认为Android 1.5已经好于1.1。大多数开发者不需要对此担心,但如果你的App有着非常复杂的布局,你还是应该对其“瘦身”。你可以使用一些高级的布局类,如FrameLayout和TableLayout,来简化你的布局。

避免技巧,#4:不好的硬件假设

Android 1.5支持软键盘,因此,不久就会有很多设备不再包含物理键盘。如果你的程序假设物理键盘存在(例如,如果你创建一个自定义的View,并接收键按下消息),你必须保证在只有软键盘的设备上也工作正常。想了解更多关于这方面的信息,请继续关注这个Blog,我们将会有更多关于处理软键盘的详细资料。

避免技巧,#5:无意识的旋转

运行Android 1.5(及以上)的设备能够根据用户手持设备的方向自动地旋转屏幕。一些1.5的设备默认这么做,而其它的需要用户手动设置。应用程序自己的重定向在某种程度上会导致不可预期的行为(不论是使用加速度计还是其它一些东西)。这种情况通常发生在应用程序假设有物理键盘时才能旋转;如果设备没有物理键盘,这些App就不能进行重定向,而这明显就是个编码错误。开发者应该明确应用程序能在任何时间都能处理重定向。

同样,App可以使用加速度计做到与系统相同的事情——直接重定向自己,这也会引发奇怪的结果。一些App使用加速度计来监测像晃动动作什么的,而又不将其方向锁定为垂直或水平,经常会导致在方向上来回翻动。而这就会激怒用户。(你可以在manifest文件中使用android:screenOrientation特性来锁定App的方向为垂直或水平。)

高焕堂教你android程序员怎样成为架构师:http://www.microoh.com/04/01/27/27/

移动开发交流群:164427941

转载于:https://my.oschina.net/microoh/blog/153139

Android App“加固”相关推荐

  1. 常见android app加固厂商脱壳方法研究

    这篇文章主要介绍了常见android app加固厂商脱壳方法研究,需要的朋友可以参考下 目录简述(脱壳前学习的知识.壳的历史.脱壳方法) 第一代壳 第二代壳 第三代壳 第N代壳 简述Apk文件结构De ...

  2. Android App加固原理分析

    Android App加固原理分析 对App进行加固,可以有效防止移动应用被破解.盗版.二次打包.注入.反编译等,保障程序的安全性.稳定性.对于金融类App,尤其重要. 对App dex进行加固的基本 ...

  3. Android APP加固混淆案例分享(解决风险提示问题)

    由于第一次用 AI2 开发安卓应用程序,第一次发现有编程入门不拿 Hello world 招呼人的,很是意外,也令人欣慰.随手撸了几个 Demo ,打包,下载,安装到手机,发现居然有风险提示. 若应用 ...

  4. android重签名,Android APP加固并重签名

    做app等保测评中测出APP需要加固并防止二次打包风险: 1.apk加固 免费加固平台(基础版3次):顶象~~~~https://console.dingxiang-inc.com 在任务列表中下载加 ...

  5. android app 加固后 重新签名

    如何重新签名: http://blog.csdn.net/wuzhipeng1991/article/details/49332503 http://blog.csdn.net/liaoqianchu ...

  6. 【爱加密】Android App应用安全加固详细步骤

    原文地址:点击打开链接 随着各种牌子手机的不断推出,各种Android手机应用,即Android App也是满天飞.但是,在这个山寨.黑客遍布的世界,如何保证Android App的安全是广大Andr ...

  7. Android安全性优化——APP加固

    现今移动应用市场火爆,APP数量呈爆发式增长,随着5G的逐渐广泛应用,APP增长趋势不断.正因APP的泛滥,网络攻击者的目标也在逐渐转移,数亿的移动互联网用户暴露在病毒攻击的范围之内,也使得手机APP ...

  8. Android App Bundle混淆加密加壳加固保护的解决方案(过Google App上架审核)

    Android AAB简介和AAB包格式 AAB即Android App Bundle,是Google官方发布的一种新的App包格式,可以有效缩减App大小,提升用户安装和更新App的体验.在Goog ...

  9. 实战:去除未加固 Android App强制升级提醒

    去除一个未加固APP的升级提示弹窗,我们先看看app 是否进行加壳,发现使用的是邦邦免费加壳 我们在测试机上安装这个APP,安装命令如下: adb installl C:\Users\Avenue\D ...

最新文章

  1. java 2分钟_java – 为什么我的应用程序启动时间超过2分钟?
  2. go语言任意代码执行漏洞 cve-2018-6574
  3. 远程命令执行与代码执行(remote command/code execute)漏洞总结
  4. mysql-workbench连接数据库
  5. [原+转]CSS hack 小技巧 让你的CSS 兼容ff ie6.0 ie7.0
  6. java mongodb 批量删除_MONGODB删除/新增/更改大量记录的方法
  7. Linux(Ubuntu)下设置开机自启shell脚本执行Java程序jar包
  8. echarts 动态设置标题_echart动态生成标题
  9. 毕设日志——RCNN
  10. 潘多拉_最新Pandora潘多拉美国官网海淘攻略
  11. Windows10系统下PaddleOCR文本检测和文本识别安装
  12. Gram 矩阵及其主要性质
  13. MovieLens 数据集补充版爬虫代码解析
  14. Golang的基础数据类型
  15. 【Unity游戏开发】不接SDK也能在游戏内拉起加QQ群操作?
  16. 深入解析设置磁盘写保护
  17. windows下choco 安装helm
  18. Python实现数据分析(八)数据清洗(DataClean)
  19. 第六章 商品详情进阶 + redis分布式锁 + redis问题解决 + redisson + 布隆过滤器
  20. 刀片服务器的机箱显示器,思科 UCS 5100系列刀片服务器机箱

热门文章

  1. Linux 下安装和配置TSM 7.1
  2. 10款WordPress的插件让你的网站的移动体验
  3. C++ 复数类加减法运算重载为成员函数形式
  4. vue 传递多行数据_vue 数据传递的方法
  5. Affinity Photo中文版
  6. Alibre Design 2018中文版
  7. Artlantis 2020中文版
  8. python实现后台系统的JWT认证
  9. System.Data.SqlClient.SqlException:“对象名 'customer' 无效。
  10. 解决安卓中单个dex方法数超过65535的方法