写点什么

绕开 Android 应用开发的那些“坑”

  • 2013-06-03
  • 本文字数:1870 字

    阅读完需:约 6 分钟

自从推出“豌豆洗白白”之后,我们也在不断听取用户和开发者的意见来改进产品。不过,部分开发者提出的奇怪的场景,也会让我们感到疑惑:比如突然更换了签名文件,或者包名与别的应用撞车造成的误洗等。这些事故,很多情况下是可以避免的,所以我们也在本文中总结一下 Android 开发中容易被忽视的一些注意事项吧:

一、谨慎选择包名

包名 (Package Name) 就相当于一款应用在户口本上登记的名字,是系统用来区分不同应用的字段。重复的包名会被认为是同一款应用,不能同时安装在一个系统里。一般来说,包名建议使用域名反序。比如豌豆荚的网站域名是 www.wandoujia.com,那么豌豆荚的一系列 Android 应用的包名就是 com.wandoujia.***。这种约定俗成的办法可以最大程度地避免“撞名”的事故。

案例一

某个手机 ERP 客户端的开发者,在开发应用时使用了 Adobe 的工具,同时也参考了 Adobe 的官方教程,从而将应用命名为 air.Main 这样的通用包名,跟另一个游戏重名了。于是,在升级和洗白白的过程中就都产生了混乱……所以取名要慎重啊!

案例二

还有个开发者,不知为何给几个不同的应用都使用了同一个包名。于是“com.hexin.qs.app.android”这个包名,对应了“申国万银证券”、“中信建投手机证券”、“联讯证券手机炒股”等好几个完全不同的应用。带来的后果就是,用户不能在手机上同时安装这几个应用,而且在升级过程中也容易从一个应用升级到另一个应用上。所以,不能给好几个孩子取同一个名字啊!

二、一款应用只应该有一个签名

签名文件就相当于开发者的“身份证”,我们平时生活中应该只有一张身份证,那么在手机里也一样,签名也应该是唯一的。而且因为签名的加密机制,使复制和伪造签名变得几乎不可能,所以“豌豆洗白白”也是将签名作为判断是否官方版的最主要标准之一。

如果一个应用使用了不同的签名,那么对于用户来说,可能会造成应用无法升级,因为 Android 系统会在升级应用的过程中比对签名,不同的签名无法升级。如果用户选择强制升级的话,因为签名不同,所以需要先卸载旧版再安装新版,那么之前存在本地的应用数据、游戏记录等也会直接丢失。

案例一

就好像我们会不小心弄丢身份证,开发者也会不小心弄丢签名文件。我们曾遇到过四五例类似的例子,开发者找上门来说要求更换签名,原来是因为工程师离职把签名文件带走了,老板要不回来了,只好把原来的签名也全都改一遍。所以签名文件要保管好啊!

案例二

我们曾经统计过,网游“我叫 MT”在各大市场上一共有 48 种不同的签名。据“我叫 MT”的开发者说,他们是通过不同的签名来区分不同的渠道的,而一共放出过多少种签名难以统计。这么多个不同的签名文件,除了自己管理起来非常麻烦之外,也给用户的升级过程带来了困扰,一不小心升级到了不同签名的版本上,游戏记录就全部丢失了。

Android 签名机制的目的是为了检验应用是否被人更改过,而不是为了让你区分渠道的。那么正常来说应该用什么方法来区分渠道呢?请看下一条。

三、使用 xml 配置文件来区分渠道

一般来说,我们在 Android manifest 文件中使用 meta-data 来区分渠道。例如:

复制代码
<meta-data android:name="CHANNEL" android:value="wandoujia"/>

每次正式打包完成后,修改 android:value,再重新打包即可生成一个新的渠道包,所以:

不要再用签名来区分渠道了!

四、正确填写版本号

在 Android 应用中,有两个参数与版本号相关。其中,version Name 表示版本名称,是字符串,version Code 表示版本号,是整型数字。

一般来说,用户直观看到的是 version Name,所以这里应该填写形似“4.15.1”这样的版本号。而真正用来判断新版本旧版本的参数是 version Code。在应用发布第一个版本的时候,version Code 应该填 1,然后每次发布的时候都递增,这样才是以规范的格式告诉各大市场你的应用的更新程度。

有的开发者在 version Code 上非常随意,这个版本发布的时候碰上结婚纪念日,于是用老婆的生日当 version Code;下个版本发布的时候运气不太好,于是用自己的幸运数字当作 version Code……这样在用户看来的结果就是,明明从官网安装了最新的 2.2.0 版本,可是各大市场却提醒“升级到 2.1.3 版本”,越升级版本号越小了。

以上四件小事,虽然都比较琐碎,而且没什么技术含量,但却是很多入门的 Android 开发者容易忽略的问题。希望本文能帮助广大开发者,在写出好应用的同时,避免这些“坑”给应用带来不必要的损失。

关于作者

“豌豆洗白白”基于豌豆荚对应用特征的深入了解,致力于帮用户找到干净无通知栏广告的官方版应用。“豌豆洗白白”团队由 8 名豌豆组成,平均年龄 27 岁。项目负责人丁吉昌是豌豆荚创始团队成员。

2013-06-03 23:174365

评论

发布
暂无评论
发现更多内容

Android Zygote 从何而来?揭开Android系统启动的面纱

android 程序员 移动开发

Android _ 从 Dagger2 到 Hilt 玩转依赖注入(一)

android 程序员 移动开发

android 中DrawerLayout实现抽屉

android 程序员 移动开发

android 方式实现imageview圆角

android 程序员 移动开发

android 定位到输入的地址

android 程序员 移动开发

基于 KubeVela 的 GitOps 交付

阿里巴巴云原生

阿里云 Kubernetes 云原生 gitops KubeVela

Android 多渠道打包配置

android 程序员 移动开发

android 实现 搜索保存历史记录功能

android 程序员 移动开发

Android 开发规范(完结版)

android 程序员 移动开发

Android 开发,你遇上 Emoji 头疼吗?

android 程序员 移动开发

Android 三类框架的理解以及MVVM框架的使用

android 程序员 移动开发

Android 中高级核心复习面试题整理,备战年后金三银四!

android 程序员 移动开发

Android 原生控件ViewFlipper实现淘宝头条垂直滚动广告条

android 程序员 移动开发

Android 实现系统深度休眠笔记

android 程序员 移动开发

Android 序列化(Serializable和Parcelable)

android 程序员 移动开发

Android 抖音爆红的口红挑战爬坑总结

android 程序员 移动开发

android 三级级联筛选列表

android 程序员 移动开发

Android 主流通用常用框架汇总(持续更新)

android 程序员 移动开发

android 图表基本属性方法设置

android 程序员 移动开发

Android 开发艺术探索笔记(21)

android 程序员 移动开发

Android 教你一步步搭建MVP+Retrofit+RxJava网络请求框架

android 程序员 移动开发

android 五大应用开发框架

android 程序员 移动开发

Android 图像处理

android 程序员 移动开发

Android 开发者想咸鱼翻身并不是难事,只要你掌握这些……

android 程序员 移动开发

Android 开发艺术探索笔记(1)

android 程序员 移动开发

Android 性能监控系列一(原理篇)

android 程序员 移动开发

Android 开发中,与屏幕有关的三个小众知识

android 程序员 移动开发

Android 开发面试中,面试过最喜欢问那些问题?

android 程序员 移动开发

Android 拍照:如何使用已有相机应用捕获图片(Taking Photos Simply)

android 程序员 移动开发

Android 使用讯飞语音SDK

android 程序员 移动开发

Android 性能优化:手把手带你全面了解内存泄露

android 程序员 移动开发

绕开 Android 应用开发的那些“坑”_Android/iOS_“豌豆洗白白”团队_InfoQ精选文章