2013-10-22 8 views
5

मेरे अनुभव में, उसी एंड्रॉइड एप्लिकेशन के लिए स्रोत कोड को पुन: संकलित करने से हर बार एक ही बाइनरी नहीं बनती है। एक पुनरुत्पादन निर्माण डेवलपर्स के लिए बहुत useful है, लेकिन मुझे लगता है कि पुनरुत्पादित निर्माण प्रक्रिया से सबसे महत्वपूर्ण लाभ सुरक्षा है। ओपन सोर्स एंड्रॉइड ऐप में, हम उत्पादित बाइनरी (.apk) को कैसे सत्यापित कर सकते हैं वास्तव में समीक्षा स्रोत कोड से संकलित किया गया है? एंड्रॉइड एसडीके या जावा से पुनरुत्पादित निर्माण उत्पन्न करने का कोई तरीका है?पुनरुत्पादन के निर्माण के साथ एंड्रॉइड एप्लिकेशन कैसे बनाएं?

उत्तर

2

"पुनरुत्पादित"/"निर्धारिती" निर्माण प्रक्रियाओं को बनाने के लिए संदर्भित करता है जहां संकलक एक समान बाइनरी आउटपुट करता है जो हमेशा समान होता है, समान इनपुट फाइल/बिल्ड सिस्टम/क्रोट दिया जाता है। (जिस लेख से आपने लिंक किया है वह वास्तव में एक ऐप के उसी संस्करण को बनाने/चलाने में सक्षम होने के बारे में बात कर रहा है, जिसके खिलाफ एक बग दायर किया गया है, जो कुछ अलग है। this description देखें कि टोर कैसे निर्धारित करता है।)

जावा पैकेज ऐसा लगता है कि काम करने में बहुत मुश्किल लगती है, क्योंकि कई जगहों पर टाइमस्टैम्प मौजूद हैं। एक चीज जिसे आप कोशिश कर सकते हैं, सटीक द्विआधारी संगतता के बदले, दो। एपीके को कम करने के लिए है, और देखें कि वह विकृत उत्पादन समान है या नहीं।

1

एफ-डोडेड प्रोजेक्ट कुछ वर्षों से एंड्रॉइड के लिए पुन: उत्पादित निर्माण पर काम कर रहा है। एंड्रॉइड-विशिष्ट मुद्दों को https://f-droid.org/docs/Reproducible_Builds पर ट्रैक किया जाता है यह अभी भी एक मुश्किल प्रक्रिया है, खासकर अगर ऐप में एनडीके कोड शामिल है। यदि ऐप केवल जावा है, तो कुछ अपेक्षाकृत आसान कदम हैं जो आपको वहां ले जाएंगे, जैसे प्री-क्रंचिंग पीएनजी और उन्हें गिट करने के लिए।

गूगल, क्योंकि वे यादृच्छिक थोड़ा परिवर्तन का एक बहुत कुछ कर यह लंबी अवधि में APK पुन: पेश करने के लिए आसान नहीं है, जैसे:

निश्चित रूप से जाँच दो बिल्डों के बीच अंतर देखने के लिए diffoscope बाहर। आप https://verification.f-droid.org

पर बहुत से उदाहरण आउटपुट देख सकते हैं
संबंधित मुद्दे