Android P 網絡請求的適配問題

        因爲谷歌官方要求後期要全面支持api 28的版本,所以這兩天一直在做適配android 9.0的工作。本來想着應該沒有什麼太大的問題,但是做的時候發現,有坑啊!

Google表示,爲保證用戶數據和設備的安全,針對下一代 Android 系統(Android P) 的應用程序,將要求默認使用加密連接,這意味着 Android P 將禁止 App 使用所有未加密的連接,因此運行 Android P 系統的安卓設備無論是接收或者發送流量,未來都不能明碼傳輸,需要使用下一代(Transport Layer Security)傳輸層安全協議
參考博客:https://blog.csdn.net/weixin_42492548/article/details/88715492

網上看到了各位大佬給出的解決方案,大致有四種:

一、targetSdkVersion 改爲 28 以下

        問題確實可以得到解決,畢竟編譯的 apk 不是 9.0 的版本,但是存在的問題就是,今年年底谷歌上架要求的最低要求就是28,問題最終還是的改。

二、修改 http 爲 https

        這個方式是最安全的,但是改動量可能會比較大,可能還會涉及到各公司底層 SDK 的修改

三、在 res 下新增一個 xml 目錄,然後創建一個名爲:network_security_config.xml 文件(名字自定),內容如下,大概意思就是允許開啓 http 請求:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

也有添加的內容的版本:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates overridePins="true" src="system"/>
            <certificates overridePins="true" src="user"/>
        </trust-anchors>
    </base-config>
</network-security-config>

然後在你工程AndroidManifest.xml中application節點下新增:

android:networkSecurityConfig="@xml/network_security_config"

四、直接在AnroidManifest.xml中的application節點下新增:

android:usesCleartextTraffic="true"

上述四種方式,都可以有效的解決使用 http 請求無法獲取數據的問題,供君參考。

但是,哎,人生總是充滿了轉折,我這邊只有在9.0以下數據才能正常展示,具體原因還在定位中,公司大佬講明天幫我看看,希望到時候能解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章