2013-10-22 16 views
5

Deneyimlerime göre, aynı Android uygulamasının kaynak kodunu yeniden derlerken her defasında aynı ikiliyi üretmeyecek. Yeniden üretilebilir bir yapı, geliştiriciler için çok useful'dur, ancak yeniden üretilebilir bir oluşturma işleminin en önemli faydası güvenliktir. Açık kaynaklı Android uygulamalarında, üretilen ikili dosyayı (.apk) doğrulamak, nasıl gözden geçirilmiş kaynak kodundan gerçekten derlenmiştir? Android SDK veya Java'dan yeniden üretilebilir yapılar oluşturmanın herhangi bir yolu var mı?Yeniden üretilebilir Android uygulamaları nasıl oluşturulur?

cevap

2

"Tekrarlanabilir"/"deterministik" yapı, derleyici, her zaman aynı olan, aynı girdi dosyaları/yapı sistemi/chroot değeri verilen bir ikili çıktılar. (Bağlandığınız makale aslında, bir hata farklı bir şey olan bir uygulamanın aynı sürümünü oluşturmak/çalıştırabilmekten bahsediyor. Tor'un deterministik yapılar nasıl oluşturduğuna ilişkin this description'a bakın.)

Java paketleri Zaman damgası birçok yerde mevcut olduğundan, çalışmak çok zor görünüyor. Tam olarak ikili uyumluluğun yerine, deneyebileceğiniz bir şey, iki .apk'ini derlemek ve çıktıların aynı olup olmadığını görmek.

1

F-Droid projesi, birkaç yıldır Android için yeniden üretilebilir yapılar üzerinde çalışıyor. Android'e özgü sorunlar https://f-droid.org/docs/Reproducible_Builds'da izleniyor. Özellikle de uygulama NDK kodu içeriyorsa, bu zor bir işlem. Eğer uygulama sadece Java ise, o zaman oraya götürecek birkaç tane göreceli kolay adım vardır, çünkü bunlar ön çatırdayan PNG'leri ve onları gitmeyi taahhüt eder.

Kesinlikle kontrol edin: rastgele küçük bir çok değişiklik yapmak beri

tarihinde gibi, uzun vadede APK'ları çoğaltmak kolay yapmaz İki yapı arasındaki farklılıkları görüntülemek için diffoscope. Çok sayıda örnek çıktıyı https://verification.f-droid.org

adresinde görebilirsiniz.
İlgili konular