問題タブ [android-vpn-service]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1308 参照

android - VPNservice.builder.addAddress - 何をしますか?

公式ドキュメントによると:

VPN インターフェイスにネットワーク アドレスを追加します。IPv4 と IPv6 の両方のアドレスがサポートされています。Establish() を呼び出す前に、少なくとも 1 つのアドレスを設定する必要があります。アドレスを追加すると、そのアドレス ファミリ (つまり、IPv4 または IPv6) からのトラフィックが VPN 経由でルーティングされることが暗黙的に許可されます。@see #allowFamily

しかし、それは私にはまだ明らかではなく、dns66 のソースと Netguard のソースを掘り下げてもあまり役に立ちませんでした。

サーバーアドレスであると思われるかどうかはわかりませんが、他に意味のあるものは思いつきません。localVPN を実装する前に、どのアドレスを設定すればよいestablish()ですか?

これは dns66 のソースですが、これらのアドレスを追加する理由がわかりません (すべてが「失敗」した場合、192.168.50.1 が機能することをどのように認識しますか?):

0 投票する
1 に答える
276 参照

android - Androidフォアグラウンド(vpn)サービスからコレクションを観察する方法

VPN トンネルの「ブロック/許可ロジック」を持つシングルトン クラスがあります。トンネルに送信されたパケットは送信されず、アプリケーションは許可リストに基づいてバイパスできるため、ファイアウォールの単純な実装として動作できます。

私がやりたいことは、Set<String>ブロックされたアプリケーションのパッケージ名を変更するときに、このブロックされたアプリケーション セットを使用してサービス スレッドをvpnservice.builder.establish()再度実行することです。

これに対する明らかな選択 -ここに示されているようextends LifecycleServiceに、「通常の」フォアグラウンド サービスの場合。ただし、私のサービスは拡張する必要があり、実装されていませ。可能な実装 (いくつかの変更が必要)をここに示しますandroid.net.VpnServiceLifecycleOwner

私の質問は次のとおりです。

  1. VPN サービスが、シングルトン クラスで、blockedPackageName コレクションの変更を監視するための、よりクリーンでエレガントな方法はありますか?
  2. 別の方法がない場合、実装はLifecycleOwner私が期待する方法で機能しますか (基本的に私が説明した方法)?
  3. (2) の場合lifecycle.handleLifecycleEvent(Lifecycle.Event.XXXX);、サービスの onCreate メソッドと onDestroy メソッド (下記参照) を追加するだけで十分ですか? これらは、メモリリークを防ぐこと以外に何かしますか?

    /li>

PS: ライフサイクル コンポーネントに関する公式ドキュメントを読みましたが、問題をより明確にするのに十分なコード例が見つかりませんでした。