2016-11-01 9 views
8

के लिए मूल कोड प्रतीकों के लिए अलग करने से कैसे बचें I मुझे देशी कोड में sigsegv 11 मिल रहा है और मुझे यह समझने के लिए अलग करने की आवश्यकता है कि क्या गलत है। ऐप लाइब्रेरी (एएआर) का उपयोग करता है और मैं 'cmd-strip' hack के साथ एआर के लिए अलग होने से बचने में सक्षम था। लेकिन .so के एपीके स्ट्रिपेड संस्करण में वैसे भी प्रयोग किया जाता है, इसलिए ऐप प्रतीकों को स्ट्रिप्स करता है, शायद transformNative_libsWithStripDebugSymbolForDebug ग्रेडल कार्य करते समय। इससे बचने के लिए कोई बदलाव?एंड्रॉइड ऐप

पीएस। SO पर similar question मिला लेकिन यह थोड़ा अलग है (मेरे मामले में छीनने वाले प्रतीकों के साथ यहां आर्य का उपयोग करके)।

+0

आईएमओ, आपको दो बार सोचना चाहिए यदि आपको वास्तव में अपने एपीके के साथ गैर-छिद्रित बाइनरी भेजने की आवश्यकता है। साझा पुस्तकालयों और खराब रिवर्स इंजीनियरिंग सुरक्षा के बेहद बढ़ते आकार हैं। यदि आप कहीं नॉन-स्ट्रिपेड बाइनरी ढूंढना चाहते हैं - 'obj/local /' के अंतर्गत देखें। विवरण के लिए [यहां] (http://stackoverflow.com/a/40278937/2878070) देखें। – Sergio

+0

यह समस्या को ठीक करने के लिए है, वितरण – 4ntoine

+0

के लिए नहीं यदि ऐसा है - 'ndk-build' पहले से छीनने वाले गैर-पट्टी वाली फ़ाइलों को बनाता है। मेरी पिछली टिप्पणी देखें। – Sergio

उत्तर

12

वहाँ एक गैर-दस्तावेजी विधि 'doNotStrip' packagingOptions में है, बस अपनी build.gradle

में निम्न पंक्तियां जोड़ें
packagingOptions{ 
    doNotStrip "*/armeabi/*.so" 
    doNotStrip "*/armeabi-v7a/*.so" 
    doNotStrip "*/x86/*.so" 
} 
+1

आपको यह नहीं करना चाहिए। यह आपके एपीके को बड़ा बना देगा और यह अनावश्यक है। अपने स्टैक निशान का प्रतीक कैसे करें इस पर मेरा उत्तर देखें। –

+0

इसकी आवश्यकता केवल इसलिए है क्योंकि कुछ .so फाइलें एन्क्रिप्ट की गई हैं और अगर छीन ली गई तो टूटा जाएगा। –

+0

fwiw, मुझे एंड्रॉइड स्टूडियो 3.1/3.2 और ग्रेडल 4.4 के साथ बिल्कुल विपरीत समस्या है। यह अब डीबग प्रतीकों को स्ट्रिप्स नहीं करता है और मुझे स्ट्रिपिंग को मजबूर करने का कोई तरीका नहीं मिल रहा है! एलओएल नहीं – 3c71

5

सौभाग्य से आपको वास्तव में ऐप में प्रतीकों को रखने की आवश्यकता नहीं है। NDK जहाजों एक उपकरण कहा जाता ndk-stack है कि आप के लिए एक स्टैक ट्रेस का प्रतीक है सकते हैं (यह NDK की जड़ में है): https://developer.android.com/ndk/guides/ndk-stack.html