私の経験では、同じAndroidアプリケーションのソースコードを再コンパイルしても、毎回同じバイナリは生成されません。再現可能なビルドは開発者にとっては非常にusefulですが、私は再現可能なビルドプロセスの最も重要な利点はセキュリティだと思います。オープンソースのAndroidアプリでは、生成されたバイナリ(.apk
)を確認する方法は、実際にレビューされたソースコードからコンパイルされますか? Android SDKやJavaから再現可能なビルドを生成する方法はありますか?再現可能なビルドでAndroidアプリケーションを作成するには?
5
A
答えて
2
"再現可能な"/"確定的な"ビルドは、同じ入力ファイル/ build system/chrootを指定すると、コンパイラが常に同じバイナリを出力するプロセスを参照します。 (あなたがリンクした記事は実際には、バグが提出された同じバージョンのアプリケーションをビルド/実行することについて話しています。タイムスタンプは多くの場所に存在するため、操作が非常に難しいようです。正確なバイナリ互換性の代わりに、2つの.apkを逆コンパイルし、その逆コンパイルされた出力が同一であるかどうかを確認することができます。
1
F-Droidプロジェクトは、数年前からAndroid用の再現可能なビルドに取り組んでいます。 Android固有の問題はhttps://f-droid.org/docs/Reproducible_Buildsで追跡されます。特にアプリにNDKコードが含まれている場合は、依然として扱いにくいプロセスです。アプリがJavaだけの場合は、PNGを事前に処理してgitにコミットするなど、比較的簡単な手順があります。
- adding a non-reproducible version to AndroidManifest.xml
- different binary releases with the same version number
間違いなくチェック:彼らはランダムな小さな変化の多くを行うため、
Googleは同様に、長期的にのAPKを再現することが容易になりません。 2つのビルド間の相違点を表示するにはdiffoscopeを入力してください。多くのサンプル出力はhttps://verification.f-droid.org
にあります。関連する問題
- 1. 再現可能なビルドをPythonで
- 2. 再現可能なビルドを生成するWSDL
- 3. Androidアプリケーションでタッチ可能なグラフィカルオブジェクトを作成する方法は?
- 4. クリアボタンで再利用可能なEditTextを作成するには?
- 5. 再利用可能なAsyncTasksをアンドロイドで作成するには?
- 6. jQueryで再利用可能なコードを作成するには?
- 7. Androidでカスタムの再構成可能なコンポーネントを作成するヒント
- 8. android webviewの再利用可能なJava関数を作成するには
- 9. Windows上で実行可能なアプリケーションをビルドするには
- 10. Google AdWordsで再利用可能な機能を作成する
- 11. androidの再配布可能なGUIコンポーネントを作成
- 12. 再利用可能なコードを作成するには?
- 13. android - 再利用可能な関数を作成する方法は?
- 14. スキン可能なアプリケーションを作成するには?
- 15. Node.js:プラグイン可能なアプリケーションを作成するには?
- 16. Androidで実行可能なビルドNDK
- 17. 自己維持可能なMavenビルドでソース配布を作成するには?
- 18. PythonでANDROIDアプリケーションを作成することは可能ですか?
- 19. Android:希少で再現不可能なClassNotFoundException
- 20. Androidアプリケーションから呼び出し可能なNodeJSマイクロサービスの作成
- 21. React.jsで再利用可能なヘルパー関数を作成する
- 22. 再利用可能なコントローラーコンポーネントをリチウムで作成する
- 23. Swingで再配置可能なタブを作成する
- 24. KnockoutJSで再利用可能なコンポーネントを作成する
- 25. Vue.jsで再利用可能なコンポーネントを作成する方法
- 26. Jqueryで再利用可能な関数を作成する
- 27. VS2008で再利用可能なUserControlアセンブリを作成する
- 28. simpleSchemaで再利用可能なコンポーネントを作成する方法
- 29. 反応するjsで再利用可能なタイマーを作成
- 30. 再利用可能なLinqをストアドプロシージャのSQLに作成する