2013-10-22 10 views
5

私の経験では、同じAndroidアプリケーションのソースコードを再コンパイルしても、毎回同じバイナリは生成されません。再現可能なビルドは開発者にとっては非常にusefulですが、私は再現可能なビルドプロセスの最も重要な利点はセキュリティだと思います。オープンソースのAndroidアプリでは、生成されたバイナリ(.apk)を確認する方法は、実際にレビューされたソースコードからコンパイルされますか? Android SDKやJavaから再現可能なビルドを生成する方法はありますか?再現可能なビルドでAndroidアプリケーションを作成するには?

答えて

2

"再現可能な"/"確定的な"ビルドは、同じ入力ファイル/ build system/chrootを指定すると、コンパイラが常に同じバイナリを出力するプロセスを参照します。 (あなたがリンクした記事は実際には、バグが提出された同じバージョンのアプリケーションをビルド/実行することについて話しています。タイムスタンプは多くの場所に存在するため、操作が非常に難しいようです。正確なバイナリ互換性の代わりに、2つの.apkを逆コンパイルし、その逆コンパイルされた出力が同一であるかどうかを確認することができます。

1

F-Droidプロジェクトは、数年前からAndroid用の再現可能なビルドに取り組んでいます。 Android固有の問題はhttps://f-droid.org/docs/Reproducible_Buildsで追跡されます。特にアプリにNDKコードが含まれている場合は、依然として扱いにくいプロセスです。アプリがJavaだけの場合は、PNGを事前に処理してgitにコミットするなど、比較的簡単な手順があります。

間違いなくチェック:彼らはランダムな小さな変化の多くを行うため、

Googleは同様に、長期的にのAPKを再現することが容易になりません。 2つのビルド間の相違点を表示するにはdiffoscopeを入力してください。多くのサンプル出力はhttps://verification.f-droid.org

にあります。
関連する問題