昨日、Android Nプレビューの新しいアップグレードを取得しました。アップグレードして以来、アプリを起動できなくなりました。
Java.io.IOException: Cleartext HTTP traffic to myserver.com not permitted
マニフェストでusesCleartextTraffic
をtrue
に設定するか、network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">myserver.com</domain>
</domain-config>
</network-security-config>
どちらも機能しませんでした。そこで何が起こっているかについてのアイデアはありますか?
マニフェストでnetworkSecurityConfigを定義しようとすると、コンパイルエラーが発生します
Error:(35) No resource identifier found for attribute 'networkSecurityConfig' in package 'Android'
理由は本当にわかりません。ファイルはそこにあり、すべてがきれいに見えます。
見つかった this Android Googleからの課題追跡システム。彼らはnetwork_security_config
定義のmeta-data
。それでも同じ例外が発生します。
Android N Developer Preview 4では既知の問題があり、アプリが_ApplicationInfo.flags
_を変更すると、アプリがクリアテキストトラフィックをブロックした場合でも、アプリからのクリアテキストトラフィックのブロックがトリガーされます。クリアテキストのトラフィックをブロックするようにリクエストします。修正は次のDeveloper Previewで行われるため、これはNetwork Security Configとは関係ありません。実際、カスタムNetwork Security Configを宣言する必要もないようです。
次のAndroid N Developer Previewまで待てない場合は、アプリが独自の_ApplicationInfo.flags
_を変更する場所をアプリで確認してください。通常、これはgetApplicationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLE
またはgetApplicationInfo().flags = ApplicationInfo.FLAG_DEBUGGABLE
これらの使用法の修正は_(getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE)
_です。
または、回避策として、アプリのライフサイクルのできるだけ早い段階でNetworkSecurityPolicy.isCleartextTrafficPermitted()
を呼び出します。この回避策は、_ApplicationInfo.flags
_を改ざんするコードの前に呼び出された場合に機能します。
Android:usesCleartextTraffic="true"
マニフェストファイルのアプリケーションタグにこの行を入れます
アプリケーションタグの1行だけを試してください
Android:usesCleartextTraffic = "true"
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission Android:name="Android.permission.INTERNET" />
<application
...
Android:usesCleartextTraffic="true"
...>
</application>
</manifest>
XML res/xml/network_security_config.xmlを作成します
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
AndroidManifest.xml内のタグアプリケーションでこのファイルを参照します。お気に入り:
Android:networkSecurityConfig="@xml/network_security_config"