? ? ? ?隨著android 版本不得不斷發(fā)布? 也隨著應(yīng)用的發(fā)展吧由谷歌率先要求尖坤,所有 Google Play 的現(xiàn)有應(yīng)用更新同樣必須針對(duì) Android 8.0
以下記錄了我們升級(jí)targetSdkVersion的坑以及解決辦法,希望對(duì)各位開發(fā)者有幫助菩掏。
以前本人的android studio版本為3.01(老了一點(diǎn)皆警,不過用著還好),本來(lái)以為直接修改targetSdkVersion,然后下載一堆文件就好了昂利,結(jié)果試了一下,一直報(bào)沒有這個(gè)庫(kù)什么玩意的铁坎,很是頭大蜂奸,所以請(qǐng)教了大佬一番,說(shuō)android studio進(jìn)行下升級(jí)就好了硬萍,所以今天就進(jìn)行了一下嘗試
? ? ?1扩所、我用的android studio自帶的更新方式
? ? ? ? ? ?選擇File > Settings菜單選擇Appearance & Behavior > System Settings > Updates
然后又四個(gè)版本分別是
table Channel(穩(wěn)定版)
Beta Channel(測(cè)試版)
Dev Channel(開發(fā)版)
Canary Channel(金絲雀版,更新最頻繁)
對(duì)于這個(gè)沒什么好選的看這個(gè)喜歡把我選的是穩(wěn)定版的然后開始下載? 安裝這個(gè)東西很簡(jiǎn)單自己看看就行
遇到困難可以看看這個(gè)朴乖、
https://www.cnblogs.com/whycxb/p/9598417.html?
說(shuō)的比較詳細(xì)
然后更新完問題提就來(lái)了targetSdkVersion報(bào)錯(cuò)? 公司老版本是23 超級(jí)古董的那種
報(bào)錯(cuò)信息提示是要修改到26以上祖屏,我就干脆整到28,然后修改一系列常規(guī)操作寒砖,但是到修改到
com.android.support:suppor就開始報(bào)錯(cuò)
說(shuō)是兩個(gè)庫(kù)赐劣,必須要?jiǎng)h除一個(gè)
報(bào)錯(cuò)
大概報(bào)這個(gè)錯(cuò),然后一陣分析哩都,幾番更改魁兼,最后改了這個(gè)樣子,終于不報(bào)錯(cuò)了
大概就是這樣終于不報(bào)錯(cuò)了
然后他又說(shuō)
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ò)誤還沒完儒鹿,不過這一次就比較簡(jiǎn)單了
大概意思是compile 不能用了 要換成?implementation化撕,Google IO大會(huì)好像也說(shuō)過 ,說(shuō)是編譯速度會(huì)提高什么的约炎,這個(gè)是強(qiáng)制的植阴,只要你升級(jí)就要改
然后請(qǐng)求網(wǎng)絡(luò)又出現(xiàn)了了毛病
java.net.UnknownServiceException:CLEARTEXT communication**not permitted by network security policy大概就是這個(gè)錯(cuò)
意思是說(shuō)
當(dāng)API級(jí)別為28及以上時(shí)蟹瘾,應(yīng)用使用的如果是非加密的明文流量的http網(wǎng)絡(luò)請(qǐng)求,則會(huì)導(dǎo)致該應(yīng)用無(wú)法進(jìn)行網(wǎng)絡(luò)請(qǐng)求掠手,https則不會(huì)受影響憾朴,網(wǎng)上提供了三種方案:
APP改用https請(qǐng)求
targetSdkVersion 降到27及以下在 res 下新增一個(gè) xml 目錄,然后創(chuàng)建一個(gè)名為:network_security_config.xml 文件(名字可自定)喷鸽,大概意思就是允許開啟http請(qǐng)求众雷,內(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ù)來(lái),到qq分享的又來(lái)了做祝,說(shuō)是找不到這個(gè)官方文件什么的
org/apache/http/conn/scheme/SchemeRegistry砾省。
原因去搜搜是這個(gè)
從Android 9.0 開始,默認(rèn)情況下移除HTTP客戶端混槐。QQ分享中SDK 使用到HTTP客戶端编兄,所以會(huì)找不到該庫(kù)拋出異常。
解決纵隔,兼容http客戶端
清單里面加上這個(gè)
再試試就OK? 翻诉,我遇到了大概就這么多問題? 網(wǎng)上也有大佬遇到了許多問題,有興趣可以去看看捌刮,或許可以幫到你們
targetSdkVersion升級(jí)到28一
http://www.reibang.com/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)的適配