一、描述
最近調(diào)試一個第三方SDK,代碼改動也挺大,這兩天準(zhǔn)備發(fā)個版本的時候,打包出來的APK想覆蓋線上版本的試試,覆蓋安裝的時候居然提示下圖所示,該軟件包似乎已損壞,這讓我看的一臉懵逼,什么原因也沒說。

二、解決
原因:
因?yàn)榻尤氲谌絊DK的時候,因需求調(diào)整了build.gradle文件下的targetSdkVersion版本,線上版本的targetSdkVersion是24,如今被我改成22了,所以低版本的targetSdkVersion是無法覆蓋安裝高版本的targetSdkVersion的。
解決方法:
把當(dāng)前項(xiàng)目的targetSdkVersion版本調(diào)整成跟線上版本一樣,或者高于線上的,不然覆蓋安裝是會報(bào)錯的。
targetSdkVersion 24
三、解決流程
上面已經(jīng)公布問題的原因和解決方案,具體的解決問題流程有興趣的往下面看
(1)剛發(fā)現(xiàn)問題的時候,懷疑網(wǎng)絡(luò)不好的原因?qū)е翾Q傳輸?shù)绞謾C(jī)上的APK不完整,所以損壞了,但是測試后排除了這個問題
(2)之后就根據(jù)提示的關(guān)鍵字搜百度,谷歌了,大部分的答案都需要我在打包的時候勾選以下的V1 和 V2,但是我的這兩個選項(xiàng)是灰色的,我的gradle版本比較低是2.2.3的,百度上說要在2.3.3以上才可以勾選,因?yàn)轫?xiàng)目庫的原因,調(diào)整gradle后影響太大,這個方案也不采納了。

(3) 之后想七想八的方法都試了一遍,都沒什么效果,只能乖乖的還是拿著關(guān)鍵字去查百度,后面看到一篇文章里有用到命令去安裝Apk,一下子就想起來了,可以用命令安裝啊,它是會報(bào)錯誤信息的,果斷就用命令去重裝了一下apk,報(bào)了以下的錯誤
>>adb install -r 231.apk
Failed to install 231.apk: Failure [-26: Package com.example.test new target SDK 22 doesn't support runtime permissions but the old target SDK 24 does.]
一看命令就想到了,target版本的問題了,之前修改過這個版本,再去master分支上看下線上的版本是多少,果然當(dāng)前版本比線上版本低了,八成是這個原因了,所以馬上把targetSdkVersion改成跟線上的版本一樣后,打包覆蓋安裝就成功了,這么簡單的問題找了那么久也是醉了。
也順便找到一個跟我這個一樣問題的小伙伴發(fā)的文章targetSdkVersion 更改的問題,這文章標(biāo)題起的,能起的明顯點(diǎn)嗎,我查找問題根本不會找到這種文章。。
四、總結(jié)
平時有遇到的Bug問題,希望大家都能一起分享出來.
