随记。
不知不觉也简要的入坑小三个月了。心中杂杂范范,多少有点儿小感想。在此一记。
在做framework层的开发时,其实能有帮助的工具是非常少的。除了我们所学的Android基础知识作伴,有用的工具,一个好用的记事本Notepad++,一个用于阅读源码的Source Insight,一个有点儿鸡肋的Android Studio。剩下与我们作伴的,也就是众多的bug了。
近日有个客户需要更新apk,与普通客户略有区别的是他的apk是系统级别内置的。因此需要系统的签名。因此需要在manifest文件中添加一句sharedUserId = "android.uid.system"让它在系统进程里面跑。当然,更新apk,本质上还是用pm install -r [filepath]这个命令来跑。
下面是重头戏!!!
客户没有用系统源码来生成系统级的签名,因此在预置1.0版本的apk之后,死活安装不上2.0 3.0版本的apk了。多方探查原因,从签名,打log,录视频,分析各种可能的原因,最后才找到原因--没有签对名。。。
因此我们本质的东西还是需要掌握好,apk安装不上去,总归于有几个原因。
1.权限问题。你的apk是什么性质的apk?系统级别?还是普通的三方应用?有无特别的需要,如静默安装?需要静默安装,机器有无root?等等问题,多问问自己。
2.安装位置。这个问题一般不大。普通预置的apk,在/system/app下面。用到了系统级别权限的,在/system/priv-app/下面。
3.签名问题。一般发生在更新问题上。Android Studio貌似从2.3还是什么版本开始debug会有一个签名,当我们debug开发的时候我们一般忽略这个问题,但是等我们发release版本的时候,坑就来了。因此这个问题也是需要格外注意。一句话----要始终如一你才能装上。
Android的签名机制是个较为复杂的机制,具体感兴趣可以去百度相关博文资料看看,这里就不在啰嗦,预置几个有意思的链接。
具体签名机制入门以及相关知识:
http://blog.csdn.net/jiangwei0910410003/article/details/50402000
Android多渠道打包
http://blog.csdn.net/mynameishuangshuai/article/details/51783303
Android中Service解析
http://blog.csdn.net/luoyanglizi/article/details/51586437