2016-06-16 10 views
6

昨日、Android Nプレビュー用に新しいアップグレードがあります。私がアップグレードして以来、私はもう私のアプリを起動できません。Cleartext Android Nプレビューでmyserver.comへのHTTPトラフィックが許可されていません

java.io.IOException: Cleartext HTTP traffic to myserver.com not permitted 

私はマニフェストにusesCleartextTraffictrueに設定するか、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' 

ないのはなぜ本当にわからコンパイルエラーを取得します。ファイルはそこにあり、すべてがうまく見えます。

GoogleのAndroid issue trackerにはthisが見つかりました。彼らはnetwork_security_config定義をmeta-dataに移動することを提案しています。私はまだ同じ例外を得る。

+0

確かに、実際にあなたのアプリに設定ファイルを使用するように指示しましたか?例えばあなたのアプリケーションマニフェストで 'android:networkSecurityConfig =" @ xml/network_security_config "' – vcsjones

+0

私はちょうどテストしたアプリで少なくともこの問題はないようです。平文HTTPトラフィックは問題ありません。アプリを完全にアンインストールして再インストールしてみてください。また、あなたは 'StrictMode'を使っていますか?恐らく[detectCleartextNetwork() '](https://developer.android.com/reference/android/os/StrictMode.VmPolicy.Builder.html#detectCleartextNetwork())が有効になっています – CommonsWare

+0

何度もアンインストールして再インストールしましたすでにStrictModeを使用していません。マニフェストにnetworkSecurityConfigを定義することはできません。質問を更新します – SimonSays

答えて

9

Android N Developer Preview 4には、アプリケーションがApplicationInfo.flagsを変更すると、アプリケーションがクリアテキストトラフィックのブロックを要求していなくても、アプリからのクリアテキストトラフィックのブロックがトリガーされるという既知の問題があります。この修正は次の開発者プレビューで行われます。したがって、これはNetwork Security Configとは関係ありません。実際、カスタムNetwork Security Configを宣言する必要はないようです。

次回のAndroid N開発者プレビューまで待つことができない場合は、自分のアプリがApplicationInfo.flagsを変更する場所を確認してください。通常、これはgetApplicationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLEまたはgetApplicationInfo().flags = ApplicationInfo.FLAG_DEBUGGABLEの形式をとります。これらの用途の修正は(getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE)です。

また、回避策として、できるだけ早くアプリのライフサイクルの早い段階でNetworkSecurityPolicy.isCleartextTrafficPermitted()を呼び出してください。この回避策は、ApplicationInfo.flagsで改ざんするコードの前に呼び出された場合に有効です。

+0

驚くばかり!それだった!本当にありがとう! – SimonSays

+0

あなたのアプリケーションが間違って 'ApplicationInfo.flags'を修正していることが分かりましたか? –

+0

はい、そうでした。単純な '&'の代わりに '&='をチェックに使用しました – SimonSays

関連する問題