? ? ? ?隨著android 版本不得不斷發(fā)布? 也隨著應(yīng)用的發(fā)展吧由谷歌率先要求,所有 Google Play 的現(xiàn)有應(yīng)用更新同樣必須針對 Android 8.0
以下記錄了我們升級targetSdkVersion的坑以及解決辦法,希望對各位開發(fā)者有幫助。
以前本人的android studio版本為3.01(老了一點(diǎn),不過用著還好),本來以為直接修改targetSdkVersion,然后下載一堆文件就好了,結(jié)果試了一下,一直報(bào)沒有這個(gè)庫什么玩意的,很是頭大,所以請教了大佬一番,說android studio進(jìn)行下升級就好了,所以今天就進(jìn)行了一下嘗試
? ? ?1、我用的android studio自帶的更新方式
? ? ? ? ? ?選擇File > Settings菜單選擇Appearance & Behavior > System Settings > Updates
然后又四個(gè)版本分別是
table Channel(穩(wěn)定版)
Beta Channel(測試版)
Dev Channel(開發(fā)版)
Canary Channel(金絲雀版,更新最頻繁)
對于這個(gè)沒什么好選的看這個(gè)喜歡把我選的是穩(wěn)定版的然后開始下載? 安裝這個(gè)東西很簡單自己看看就行
遇到困難可以看看這個(gè)、
https://www.cnblogs.com/whycxb/p/9598417.html?
說的比較詳細(xì)
然后更新完問題提就來了targetSdkVersion報(bào)錯(cuò)? 公司老版本是23 超級古董的那種
報(bào)錯(cuò)信息提示是要修改到26以上,我就干脆整到28,然后修改一系列常規(guī)操作,但是到修改到
com.android.support:suppor就開始報(bào)錯(cuò)
說是兩個(gè)庫,必須要?jiǎng)h除一個(gè)

報(bào)錯(cuò)
大概報(bào)這個(gè)錯(cuò),然后一陣分析,幾番更改,最后改了這個(gè)樣子,終于不報(bào)錯(cuò)了

大概就是這樣終于不報(bào)錯(cuò)了
然后他又說
The minSdk version should not be declared in the android manifest file. You can move the version from the manifest to the defaultConfig in the build.gradle file.
The targetSdk version should not be declared in the android manifest file. You can move the version from the manifest to the defaultConfig in the build.gradle file.
這個(gè)錯(cuò)誤,大概意思是不應(yīng)該在這用minSdk? ?然后我把

這個(gè)注釋掉這個(gè)是在清單里面的,沒啥用,大概看看報(bào)錯(cuò)信息就能懂什么意思
修改之后然后錯(cuò)誤還沒完,不過這一次就比較簡單了
大概意思是compile 不能用了 要換成?implementation,Google IO大會(huì)好像也說過 ,說是編譯速度會(huì)提高什么的,這個(gè)是強(qiáng)制的,只要你升級就要改
然后請求網(wǎng)絡(luò)又出現(xiàn)了了毛病
java.net.UnknownServiceException:CLEARTEXT communication**not permitted by network security policy大概就是這個(gè)錯(cuò)
意思是說
當(dāng)API級別為28及以上時(shí),應(yīng)用使用的如果是非加密的明文流量的http網(wǎng)絡(luò)請求,則會(huì)導(dǎo)致該應(yīng)用無法進(jìn)行網(wǎng)絡(luò)請求,https則不會(huì)受影響,網(wǎng)上提供了三種方案:
APP改用https請求
targetSdkVersion 降到27及以下在 res 下新增一個(gè) xml 目錄,然后創(chuàng)建一個(gè)名為:network_security_config.xml 文件(名字可自定),大概意思就是允許開啟http請求,內(nèi)容如下:
<?xml version="1.0"encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true"/>
</network-security-config>
然后在APP的AndroidManifest.xml文件下的application標(biāo)簽增加以下屬性即可完成:
<application
android:networkSecurityConfig="@xml/network_security_config"/>
然后繼續(xù)來,到qq分享的又來了,說是找不到這個(gè)官方文件什么的
org/apache/http/conn/scheme/SchemeRegistry。
原因去搜搜是這個(gè)
從Android 9.0 開始,默認(rèn)情況下移除HTTP客戶端。QQ分享中SDK 使用到HTTP客戶端,所以會(huì)找不到該庫拋出異常。
解決,兼容http客戶端
清單里面加上這個(gè)

再試試就OK? ,我遇到了大概就這么多問題? 網(wǎng)上也有大佬遇到了許多問題,有興趣可以去看看,或許可以幫到你們
targetSdkVersion升級到28一
http://www.itdecent.cn/p/5f429c3d1256
Android 9.0適配及部分新特性介紹
https://cloud.tencent.com/developer/article/1370376
Android8.0修改的,具體可以去郭霖大佬的博客看看,里面有關(guān)于通知欄和圖標(biāo)的適配
Android通知欄微技巧,8.0系統(tǒng)中通知欄的適配
https://blog.csdn.net/guolin_blog/article/details/79854070
Android應(yīng)用圖標(biāo)微技巧,8.0系統(tǒng)中應(yīng)用圖標(biāo)的適配