":"引发的血案

Android AndroidManifest 文件中少一个":"引发的血案

转自: dongjunkun

问题是这样的,通过USB连接电脑安装会出现如下错误提示,好像只是提示会卸载应用重装(一般出现签名文件冲突的时候会有这个提示),但问题没有那么简单,这个提示会反复出现,当真机上的应用已经完全卸载(杀掉进程,重启手机)这个错误提示依然每次出现。

Paste_Image.png

错误分析

缓存的问题(通过clean project 及rebuild project重启Android studio,问题依旧出现)

手机自身的问题(其他的程序可以正常安装,就我当前开发的应用不行,换了几个同事的测试机依旧不行)(基本排除手机的问题)

数据线的问题(通过更换数据线,使用wifi连接手机,问题依旧出现)(排除数据线的问题)

Android Studio内部出了问题(当通过直接安装的方式不行,我通过拷贝到手机SD卡进行安装,出现了安装包解析的提示,通过QQ传到手机也提示安装文件不存在或者失效,如下图

Paste_Image.png

于是分析是否是Studio 打包的问题,我喜欢更新到最新的studio 版本,出现一些bug也属于正常状况,于是通过更换Studio的版本,问题还是依旧存在)(基本排除Studio的问题)

工程的问题(通过新建工程,可以运行,再将代码复制到新的工程,错误提示依旧如期而至)

电脑系统有问题(代码拷贝到其他同事电脑运行,等了好久……,喔喔,还是出现了那该死的问题)

这个问题难道无解了吗?所有能排除的都排除了,真的无解了吗?难道是代码的问题,这不可能啊,都能通过编译,打包,就是安装包不能安装,像这种疑难杂症按照我之前的经验大都是属于低级错误,静下心做下其他的事情,再排查一下,或许能柳暗花明吧。

两个小时过去……(中间做其他的事情,偶尔回头想想这个问题)

柳暗花明

在做百度鹰眼功能的时候,默认是一个进程,当程序退出时候会杀死主进程

Paste_Image.png

但这样不行啊,提供的Demo只有一个页面,杀死了程序也就退出了,当我集成到我的应用,总不能退出那个界面就退出程序吧,于是乎我在AndroidManifest 添加了一行代码,为这个Activity新开一个进程,如下

Paste_Image.png

错误就在这了,track前面少了一个":"导致安装包解析错误(SD卡安装),不断的提示卸载当前应用(USB或者无线Wifi安装)

Paste_Image.png

问题完美解决。

总结

这个问题严格来说也是编译器不提示这个错误导致的,通过人工很难检查到这样细微的错误(从几万行代码,上千个文件中找一个分号的错误,解决实属偶然),希望studio完善这个问题。

另一方面,也是个人的疏忽吧,写代码的时候仔细点,应该就能尽量避免这样的错误的发生几率。

个人的一点建议吧,许多程序员都容易钻进这样的坑,过于自信自己的代码,过于相信编译器,过于相信后台不会出空指针,过于相信UI设计这样做一定有他的合理性,一个低级的错误可能会造成大量时间的浪费,很多时候,我觉得可以采取我的做法,做做别的,换个方向思考问题,解决问题的同时也不会耽误太多其他的工作时间。

不知道大家相不相信灵感这东西,反正我是信的

你可能感兴趣的:(":"引发的血案)