Loading... <div class="tip share">请注意,本文编写于 2004 天前,最后修改于 1195 天前,其中某些信息可能已经过时。</div> 欢迎大家又一次来到雪山凌狐教程关于火山安卓的研究小课堂,今天我们来研究一下当在火山软件平台中不同项目设定的中文包名不同,但是声母的首字母顺序组合起来相同的场景下,所生成的安卓 app 的包名是否会相同,以及如果同时安装到一个机器上会不会出现冲突或替换的情况。 首先我们建立了两个新的火山项目,他们的包名分别是: “`雪山凌狐.学火山.day5.宝贝真好`” 和 “`雪山凌狐.学火山.day5.背包转换`”。 很明显的我们可以看到他们转换为 **声母** 的英文包名后名字均为:**xshlh.xhsh.day5.bbzhh** 那么他们在实际安装的时候会不会有什么冲突呢?大家接下来就跟随我的脚步,一起来探究一下。 首先贴一下两个项目的源码内容,我设计的窗口内容不多,就一个文本框用来区分是第一个项目还是第二个项目而已。前述所说的宝贝真好为第一个项目,而背包转换为第二个项目。 ![huolearn-day5-1.jpg](http://static.fox-9.com/uploads/2021/08/17/huolearn-day5-1.jpg!webp "第一个项目源码") ![huolearn-day5-2.jpg](http://static.fox-9.com/uploads/2021/08/17/huolearn-day5-2.jpg!webp "第二个项目源码") 同时我也将他们的项目属性设定得不一样: ![huolearn-day5-3.jpg](http://static.fox-9.com/uploads/2021/08/17/huolearn-day5-3.jpg!webp "第一个项目的属性") ![huolearn-day5-4.jpg](http://static.fox-9.com/uploads/2021/08/17/huolearn-day5-4.jpg!webp "第二个项目的属性") 接下来就是实际测试了。首先我们来安装一下第一个项目,安装很正常。 ![huolearn-day5-5.jpg](http://static.fox-9.com/uploads/2021/08/17/huolearn-day5-5.jpg!webp) 如何查看对应的包名呢?我们可以使用一款火山官方推荐的小助手 —— **开发者助手** 来查看。大家可以在火山官方文档的 “无障碍服务支持” 的部分找到该助手的下载说明:[http://doc.voldp.com/](http://doc.voldp.com/) 我也在这里贴一遍(后面我也会把 apk 文件放在源码同一下载目录下大家可以下载使用): 下载 **“开发者助手”** APP > ① 可进入酷安网下载:[https://www.coolapk.com/apk/com.toshiba_dealin.developerhelper](https://www.coolapk.com/apk/com.toshiba_dealin.developerhelper) > > ② 本程序的主要作用:获取 APP 组件 ID 值,通过获取的 ID 值可实现对该组件进行一些操作。 > > ③ 例如:模拟点击、获取组件内容等。 > > ④ 安装完毕后,会在手机上看到下图所示的软件图标。 > > ⑤ 注意:手机务必 ROOT 后才能正常使用本软件。 打开刚才的第一个项目程序,然后使用开发者助手来分析。可以看到编译后的包名应为 **xshlh.xhsh.day5.bbzhh.rg_qdl**,如果对上一节课还有印象的同学应该可以记得我们的源码文件好像是存在一个叫做 `rg_qdl.java` 的文件中的。这就很有趣了。 ![huolearn-day5-6.jpg](http://static.fox-9.com/uploads/2021/08/17/huolearn-day5-6.jpg!webp) 好接下来我们来用动图演示安装英文会同名的包名的项目的场景。当然在此之前需要把当前活动项目替换为第二个项目,这个之前教过大家了。 ![huolearn-day5-7.gif](http://static.fox-9.com/uploads/2021/08/17/huolearn-day5-7.gif!webp) 我们发现神奇的现象诞生了!那就是还真是判定为同一个包名!包名同样还是:**xshlh.xhsh.day5.bbzhh.rg_qdl**。这就使得模拟器将刚才的宝贝真好项目给自动卸载了,自动安装了后面来的背包转换项目! 因此通过研究我们可以发现,目前火山平台(飞扬 15 正式版)还无法做到在源码中看到是不同包名安装时就一定是不同包名,因为编译时是需要翻译的,是仅取声母的,就会有这样的现象。虽然这种场景在大家编写代码的过程中可能性不算特别大,只要你写的包名有个性、有态度,应该就不太会有我们研究场景中的现象发生。但如果发生了,还真的挺让人困惑的说。 因此在这里也给火山官方提个小建议去优化这一块东西吧,我能想到的是不同的项目在编译的时候除了取声母之外还取一下一些随机字符放在包名里面吧,这样应该能解决。或者取全拼应该也可以不过会太长了这个包名。或者官方还能想到其他更好的办法我觉得也可以。 **兴许大家未来在看到这篇文章的时候已经发现这个问题已经修复了呢?** 最后附上咱们的源码下载地址: <div class="hideContent">该部分仅登录用户可见</div> 最后修改:2021 年 08 月 17 日 © 允许规范转载 赞 赠人玫瑰,手留余香