写点什么

绕开 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:174357

评论

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

使用Blender 在影片剪辑上创建粘滞标签

3D建模设计

blender

教师节丨校企合作重磅福利,数据科学校内赛与数据科学数据科学教学实训工作坊免费申办

ModelWhale

数据科学 教学 教师节 高等教育 数据科学竞赛

高性能存储 SIG 月度动态:erofs 新增支持多个重要特性,持续构建容器场景竞争力

OpenAnolis小助手

开源 容器 高性能存储 龙蜥社区 sig

和鲸支持!2023 中国高校计算机大赛大数据挑战赛圆满收官

ModelWhale

大数据 清华大学 高等教育 数据科学竞赛 计算机大赛

祝贺!Databend Cloud 入驻 AWS 云市场

Databend

2023年13个面向初学者最佳免费3D建模软件

3D建模设计

3D 建模

利用观测云实现业务数据驱动的弹性扩缩容

观测云

微服务 监控告警 自定义编程

新华社《中国扫描十年发展图鉴》:扫描全能王为3亿用户带去“掌心里的便利”

合合技术团队

人工智能 合合信息 扫描全能王 新华社

【压力测试指南】没有任何文档,小白也可以做的压力测试

优测云服务平台

性能测试 接口测试 压力测试 测试技术干货

和鲸科技入选创业邦“2023值得关注的125家AIGC企业”榜单,创新实力再获认可

ModelWhale

数据科学 大模型 AIGC

AI 时代的向量数据库、关系型数据库与 Serverless 技术丨TiDB Hackathon 2023 随想

PingCAP

数据库 Serverless TiDB

2023年19款最佳3D打印软件

3D建模设计

3D打印

火热的低代码,是时候系统的来学一学了!

互联网工科生

低代码 应用开发 数字化工具

八种十倍提升API性能的方式

树上有只程序猿

数据库 服务器 API 接口

WorkPlus打造统一用户管理平台,实现企业用户管理的一体化

BeeWorks

腾讯云TDSQL- C Serverless 2.0版发布,多项核心技术首次公开解析

极客天地

QCon大会实录:PB级数据秒级分析-腾讯云原生湖仓DLC架构揭秘

腾讯云大数据

数据仓库 数据湖

关于假冒我司关联公司进行欺诈活动的严正声明!

力软低代码开发平台

爬虫系统的核心:如何创建高质量的HTML文件?

飞算JavaAI开发助手

性能最佳实践

FunTester

海外运营视频直播App,服务器放在哪?

山东布谷科技胡月

语音聊天APP源码 国际版语音直播APP 交友软件开发 海外直播App开发 直播交友源码

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