??? 今天(20190704)饭入,絕大部分安卓應(yīng)用市場建議或者要求TargetSDK等級為28或者警告未來某個(gè)時(shí)間TargetSDK等級必須達(dá)到28谴仙。
??? 對于某些較早時(shí)間開發(fā)的APP就有了調(diào)整TargetSDK的必要。下面是關(guān)于我接觸到的幾個(gè)有關(guān)升級的問題:
一.http請求
??? 去年某月的某一天聽聞部門要求全部在開發(fā)的Android項(xiàng)目TargetSDK要全部提升到28以政。于是把當(dāng)時(shí)手上的一個(gè)項(xiàng)目的SDK版本號隨手改了钾唬。然后編譯安裝一切看起來都很美好仓犬。然后打開APP,全部的網(wǎng)絡(luò)請求都沒有正常響應(yīng)……
??? 原因:
從Android 6.0開始引入了對Https的推薦支持超棺,與以往不同向族,Android P的系統(tǒng)上面默認(rèn)所有Http的請求都被阻止了。
??? 然而那個(gè)項(xiàng)目的所有請求都是Http的棠绘。
??? 解決方案:
??? 1.最簡單也最符合系統(tǒng)要求的方式是讓后臺(tái)把全部請求改成Https的件相。
??? 2.或者在Manifest文件的application標(biāo)簽下中增加
<application android:networkSecurityConfig="@xml/network_security_config">
??? 在res下新建xml文件夾。在xml文件夾新建network_security_config.xml氧苍。該xml的內(nèi)容如下:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
? ? <base-config cleartextTrafficPermitted="true" />
</network-security-config>
??? 3.最小的改動(dòng)是在Manifest文件的application標(biāo)簽下中增加顯式設(shè)置:
<application android:cleartextTrafficPermitted="true">
??? 可以參考:http://www.reibang.com/p/6ce99e03080f
二.Apache HTTP 客戶端的支持
??? 昨天夜矗,在修改一個(gè)新接手項(xiàng)目的時(shí)候,改完TargetSDK让虐,我又順手把支持它的v7包改成28.0.0版的了紊撕。于是在刷新谷歌地圖(也不知道具體集成的是哪個(gè)版本的)的時(shí)候出現(xiàn)的了新的情況:
ClassNotFoundException:Didn't find class "org.apache.http.ProtocolVersion" on path:…
??? 原因:
在 Android 6.0 中,我們?nèi)∠藢?Apache HTTP 客戶端的支持赡突。 從 Android 9 開始对扶,默認(rèn)情況下該內(nèi)容庫已從 bootclasspath 中移除且不可用于應(yīng)用。
??? 解決方案:
??? 要繼續(xù)使用 Apache HTTP 客戶端惭缰,以 Android 9 及更高版本為目標(biāo)的應(yīng)用可以向其?AndroidManifest.xml的application節(jié)點(diǎn)下 添加以下內(nèi)容:
<uses-library
? ? android:name="org.apache.http.legacy"
? ? android:required="false" />
??? 參考:https://blog.csdn.net/qq_33721320/article/details/86620524
附.網(wǎng)絡(luò)環(huán)境的影響
??? 這個(gè)就比較神奇了浪南。
??? 是同事遇到的一個(gè)情況。同事想把開發(fā)環(huán)境升級一下漱受,于是把他用的AndroidStudio2換成了3络凿,同時(shí)把使用的gradle也升級一下。于是這下熱鬧了。正在開發(fā)的一個(gè)項(xiàng)目一編譯就報(bào)錯(cuò)喷众,各種找不到各谚。
??? 后來,同事竟然用上了新建項(xiàng)目然后逐個(gè)粘貼文件的方法排障到千。然后發(fā)現(xiàn)似乎是ButterKnife罷工了昌渤,于是又換了n個(gè)版本的ButterKnife。各種版本的三方庫要么不能通過編譯憔四,要么通過了編譯不能正常工作……
??? 第二天膀息,同時(shí)告訴我應(yīng)該是網(wǎng)絡(luò)環(huán)境因素導(dǎo)致的。大概是網(wǎng)絡(luò)不好導(dǎo)致某些要下載的文件始終不能成功了赵,然而同時(shí)在家里的網(wǎng)絡(luò)環(huán)境編譯一次就過了潜支。