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
"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.
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.
- adding a non-reproducible version to AndroidManifest.xml
- different binary releases with the same version number
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.- 1. nasıl oluşturulur Sistem Uygulamaları
- 2. Android Uygulamaları Test Etme
- 3. Android force uygulamaları durdurun
- 4. Android'de animasyonları taşıma/yeniden boyutlandırma nasıl oluşturulur?
- 5. Android: Sıklık nasıl oluşturulur?
- 6. Android "uygulama kilidi" uygulamaları nasıl çalışır?
- 7. Dove modunda Android VOIP uygulamaları davranışı
- 8. Android cihaz olmadan android uygulamaları geliştirme
- 9. Xcode kullanarak Android Uygulamaları Oluşturun?
- 10. Android uygulamaları için kaynak kodu?
- 11. Grails and Geb: Tekrar üretilebilir silme testi
- 12. Android için ekolayzır nasıl oluşturulur
- 13. Android nanohttpd sunucusu nasıl oluşturulur?
- 14. Android: Video oynatıcı nasıl oluşturulur?
- 15. Android tarz javadocs nasıl oluşturulur?
- 16. Android stüdyosunda çetele nasıl oluşturulur?
- 17. Android: Yuvarlak çerçeve nasıl oluşturulur?
- 18. Android açılır pencere nasıl oluşturulur?
- 19. Bayttan [] Çizim nasıl oluşturulur? (Android)
- 20. Android: 2d animasyonları nasıl oluşturulur
- 21. Yeniden boyutlandırılabilir bir MessageDialog nasıl oluşturulur
- 22. Düğüm modülleri npm ile nasıl yeniden oluşturulur?
- 23. Tam metin dizini nasıl yeniden oluşturulur?
- 24. Bölüm İşleyicisinden Menü İşleyici Nasıl Yeniden Oluşturulur?
- 25. Eclipse RCP - Proje dizini nasıl yeniden oluşturulur?
- 26. HTML 5 kullanarak bir android uygulaması nasıl oluşturulur
- 27. İletki yavaş çalışacak şekilde üretilebilir mi?
- 28. Başka bir uygulamaya bağlı bir Android uygulaması nasıl oluşturulur?
- 29. SharedPreferences, farklı Android uygulamaları arasında paylaşılabilir mi?
- 30. Aynı kod tabanıyla çeşitli android uygulamaları yayınlayın