前言
Android更新快,Android studio更新也快界牡,Gradle更新更快
項目在之前的開發(fā)環(huán)境上沒有一點問題(windows 10 / AS 2.2 / JDK 1.8 / gradle 2.2.0 / 設(shè)備HONOR 8(Android 7.0未安裝app))雁竞,正好換電腦钦椭,換了一個開發(fā)環(huán)境(Ubuntu 16.04 / AS 2.3.1 / JDK 1.8 / gradle 2.3.1 / 設(shè)備有7.0也有7.0之前)拧额。
導(dǎo)入項目之后,因為是最新的as版本彪腔,有一個更新提示
google爸爸推薦更新能不更新嗎侥锦,果斷更新,long long ago之后德挣,更新完了恭垦,終于俺的項目可以執(zhí)行了,編譯運行一條龍格嗅,木有任何問題番挺,接下來就是給測試妹子打包,仍然是木有問題屯掖,打包出來之后玄柏,還本著不要打包出錯的心態(tài)(丟人現(xiàn)眼)的心態(tài)安裝了一次,perfect贴铜,木有問題粪摘。然后就等著所有bug都測試通過的喜訊了。然而绍坝,第一步就掛了徘意。
現(xiàn)象
妹子說安裝不上,心想這一定是你的打開方式不對轩褐,果斷裝起逼來椎咧,拿過來adb命令走起,果然啊灾挨,在我的手機上就可以邑退,在測試的手機上就不行,通過adb報錯發(fā)現(xiàn)INSTALL_PARSE_FAILED_NO_CERTIFICATES,這啥啊劳澄,不懂沒關(guān)系地技,google baidu走起來。(網(wǎng)上大多數(shù)都是很久之前的過濾掉不要看秒拔,關(guān)鍵詞不能少)
還有一個現(xiàn)象莫矗,打包的時候沒有在意,也是一個關(guān)鍵失誤砂缩。就是在gradle 2.3.1上打包的時候作谚,最后一步要選擇APK signature scheme,當時沒在意直接選的v2 full apk,不要問為什么庵芭,英語好就是這么吊(腦洞翻譯一下嘛v1打包jar妹懒,v2打包apk)。事實證明就是google給的提示不夠明確啊双吆。
原因
Android 7.0 引入一項新的應(yīng)用簽名方案 APK Signature Scheme v2眨唬,它能提供更快的應(yīng)用安裝時間和更多針對未授權(quán) APK 文件更改的保護会前。在默認情況下,Android Studio 2.2 和 Android Plugin for Gradle 2.2 會使用 APK Signature Scheme v2 和傳統(tǒng)簽名方案來簽署您的應(yīng)用匾竿。
如這里所述瓦宜,Android 7.0引入了新的簽名方案V2。V2方案是對整個APK進行簽名岭妖,而不是像V1一樣只對JAR那樣簽名临庇。如果您僅使用V2進行登錄,并嘗試在7.0之前的目標上安裝昵慌,則會收到此錯誤假夺,因為JAR本身未簽名,并且7.0 之前的PackageManager無法檢測V2 APK簽名的存在废离。
解決方法
所以方案也就有兩種
- 降低gradle版本侄泽,像我們這樣多人開發(fā),每個人的studio版本都不一樣蜻韭,gradle版本也有不一樣的悼尾,這樣就會好一些。就是要把項目目錄下的build.gradle中的gradle配置改一下肖方。比如'classpath 'com.android.tools.build:gradle:2.3.1''改為'classpath 'com.android.tools.build:gradle:2.2.3''
- 如果是個人的話闺魏,用越新的東西越能裝逼,當然推薦用最新的gradle了俯画,只是在打包的時候注意要兼容7.0以前和以后析桥,這就需要注意把Signature Scheme V1和Signature Scheme V2都選上。
后記
不要害怕遇到問題艰垂,遇到問題就記下來裝逼啊泡仗。