わかりました、私は塹壕に投げ込まれました。可能な限りクリーンで最も立派な方法で抜け出したいです。
現時点では、2 つの Android プロジェクトがあり、ファイルを 1 つのプロジェクトにパッケージ化し、別のプロジェクトで正常に読み取る必要がある立場にあります。ややこしいかもしれないので説明します。
私は2つのAndroidプロジェクトを持っています。Engine という名前の Android ライブラリ プロジェクトとアプリケーション自体。
エンジンは、ネットワーク通信と、ヘッドレスで動作し、UI と対話しない他の多くのバックグラウンド タスクを処理します。エンジンはメイン アプリケーションのコンテキストにアクセスできますが、それ以外にはアクセスできません。このエンジンを開発する旅の途中で、興味深いことに出会いました。Https (逃げないでください) とそれが Android アプリケーションにもたらす問題。Android アプリケーションが恐ろしく安全ではなく、MITM 攻撃の影響を非常に受けやすいというブログ投稿が数多くあります。これは非常に現実的な脅威であるため、このエンジンでは無視できない問題です。
これについてもっと読むには、Nikolay Elenkov のブログを強くお勧めします。彼は Android でセキュリティを適切に行うための優れた方法を説明しています。
この問題はすでに解決されているので、私は脱線します。私にとっての解決策は、.bks ファイルに保存されているカスタム キーストアを使用することでした。この場合も、これがどのように作成されたか、またはどのように作成されるかについて心配する必要はありません。本当の問題は、このファイルが JAR 内にパッケージ化されている場合、このファイルをどのように読み取るかということです。
最終リリースでは、エンジンは jar としてパッケージ化され、アプリケーションに含まれます。このエンジンを jar にパッケージ化する際の注意点は、res フォルダー内のものはコンパイルされず、読み取ることができないということです。定義上、ライブラリ プロジェクト内のアセットは、プロジェクトが jar であるかライブラリ プロジェクトであるかにかかわらず、到達可能ではありません。
要約すると、2 つのプロジェクトがあります。BKS ファイルを含む 1 つのパッケージ化された Jar Android ライブラリと、それを読み取る必要がある 1 つのアプリケーション。
assets/ または res/ フォルダー内にある場合、BKS ファイルを回復できません。
このファイルにアクセスする方法はありますか?
考えられる解決策:
ファイルを lib ディレクトリに保存して読み込みますか?
BKS をリモート サーバーに保存し、起動時にロードしますか?
SSL証明書を処理する別の方法を見つけてください(そして、すべての証明書を受け入れるつもりはありません!)
Android ライブラリ プロジェクト内のファイルを別のフォルダーに読み込む極秘の方法があります。その方法は次のとおりです ......