दिलचस्प पोस्ट
आईओएस पृष्ठभूमि ऑडियो नहीं खेल रहा है एक इंटरफेस कार्यान्वयन पर सदस्यों का वापसी प्रकार बिल्कुल inferface परिभाषा से मेल खाना चाहिए? ग्रहण "सर्वर स्थान" अनुभाग अक्षम किया गया है और टॉमकेट स्थापना का उपयोग करने के लिए बदलने की आवश्यकता है SQL सर्वर 2000 का उपयोग कर पिवट IOS में जावास्क्रिप्ट का उपयोग करके क्लिपबोर्ड पर कॉपी करें PHP फ़ंक्शन ओवरलोडिंग शैल स्क्रिप्ट लापता आखिरी पंक्ति पढ़ें TableView फोकस खो ईवेंट पर मान नहीं करता है android.view.InflateException: बाइनरी एक्सएमएल फ़ाइल लाइन # 12: क्लास <अज्ञात> बढ़ते त्रुटि गैर स्थिर वैरिएबल नाम को एक स्थिर संदर्भ से संदर्भित नहीं किया जा सकता अनुक्रमणित डीबी में अधिकतम आइटम आकार इन खंडों में मापदंडों की सूची तैयार की गई है jQuery – कैसे अजाक्स के माध्यम से JSON डाल करने के लिए? एक अनबाउंड वाइल्डकार्ड और एक कच्चा प्रकार के बीच अंतर एक ऑपरेशन के लिए समयबाह्य सेट करें

libavcodec.so: पाठ पुनर्स्थापना है

मैं नेक्सस 5 पर एंड्रॉइड 6.0 का परीक्षण कर रहा हूं और मैं मेटाओ का उपयोग कर रहा हूं (मुझे पता है कि यह सेवा 15 दिसंबर को समाप्त हो रही है, लेकिन उस तारीख के लिए हम दूसरे एआर प्लेटफॉर्म पर जाएंगे)। समस्या यह है कि जब मैं अराजकता शुरू करता हूं, तो मुझे निम्न त्रुटि मिलती है:

09-02 08:45:11.138: E/AndroidRuntime(6141): java.lang.UnsatisfiedLinkError: dlopen failed: /data/app/com.myapp.myapp/lib/arm/libavcodec.so: has text relocations 09-02 08:45:11.138: E/AndroidRuntime(6141): at java.lang.Runtime.loadLibrary(Runtime.java:372) 09-02 08:45:11.138: E/AndroidRuntime(6141): at java.lang.System.loadLibrary(System.java:1076) 09-02 08:45:11.138: E/AndroidRuntime(6141): at com.metaio.sdk.jni.IMetaioSDKAndroid.loadNativeLibs(IMetaioSDKAndroid.java:54) 09-02 08:45:11.138: E/AndroidRuntime(6141): at metaioCloudPlugin.SplashActivity.loadNativeLibs(SplashActivity.java:37) 09-02 08:45:11.138: E/AndroidRuntime(6141): at metaioCloudPlugin.SplashActivity.onCreate(SplashActivity.java:68) 09-02 08:45:11.138: E/AndroidRuntime(6141): at android.app.Activity.performCreate(Activity.java:6237) 09-02 08:45:11.138: E/AndroidRuntime(6141): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 09-02 08:45:11.138: E/AndroidRuntime(6141): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 09-02 08:45:11.138: E/AndroidRuntime(6141): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 09-02 08:45:11.138: E/AndroidRuntime(6141): at android.app.ActivityThread.-wrap11(ActivityThread.java) 09-02 08:45:11.138: E/AndroidRuntime(6141): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 09-02 08:45:11.138: E/AndroidRuntime(6141): at android.os.Handler.dispatchMessage(Handler.java:102) 09-02 08:45:11.138: E/AndroidRuntime(6141): at android.os.Looper.loop(Looper.java:148) 09-02 08:45:11.138: E/AndroidRuntime(6141): at android.app.ActivityThread.main(ActivityThread.java:5417) 09-02 08:45:11.138: E/AndroidRuntime(6141): at java.lang.reflect.Method.invoke(Native Method) 09-02 08:45:11.138: E/AndroidRuntime(6141): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 09-02 08:45:11.138: E/AndroidRuntime(6141): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

क्या किसी को इस या कम से कम एक वैकल्पिक हल के लिए संभव समाधान पता है? मैं एक समाधान खोजने के लिए संघर्ष कर रहा हूं, लेकिन मुझे समझ में नहीं आ रहा कि समस्या क्या हो सकती है।

Solutions Collecting From Web of "libavcodec.so: पाठ पुनर्स्थापना है"

आज, मुझे एक ही त्रुटि संदेश मिल गया जब मेरे ऐप का परीक्षण एक नेक्सस 6 (मोटोरोला) पर एंड्रॉइड 6.0 के साथ हुआ। मैंने मेनिफ़ेस्ट फ़ाइल में targetSDKVersion को चेक करके मेरी समस्या का समाधान किया। "22" का प्रयोग करना और "23" के रूप में लक्ष्य एसडीके विर्सन ने इसे हल नहीं किया। (निचे देखो)

 <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="22" /> 

मैंने कम्पाइल संस्करण और targetSDKversion के लिए build.gradle फ़ाइलों की भी जाँच की:

 compileSdkVersion 22 buildToolsVersion '22.0.1' defaultConfig { minSdkVersion 15 targetSdkVersion 22 } 

आशा है कि यह आपकी मदद करेगा। हालांकि, यह अभी एक अल्पकालिक समाधान है, मुझे उम्मीद है कि हमें मेटाओओ से कुछ प्रतिक्रिया मिलेगी।

सादर, क्रिस्टिन

ठीक है मुझे लक्ष्य एसडीके 23 सेट के साथ यहां काम करना है।

मेरे और मेरी शाखा के लिए पैचिंग की आवश्यकता वाली पांच फाइलें थीं

 libavcodec\arm\fft_fixed_neon.S libavcodec\arm\fft_neon.S libavcodec\arm\fft_vfp.S libavcodec\arm\mlpdsp_armv5te.S libutil\arm\asm.S 

मैं https://github.com/FFmpeg/FFmpeg से नवीनतम लिया

गतिशील पुनर्स्थापन विकल्प का उपयोग करने के लिए asm.S में मैक्रो के लिए आपको आपके निर्माण में कहीं भी HAVE_SECTION_DATA_REL_RO की आवश्यकता होगी।

एंड्रॉइड के पिछले संस्करण अगर पाठ पुनर्स्थापना के साथ एक साझा लाइब्रेरी को लोड करने के लिए कहा जाता है तो चेतावनी देगा:

"libfoo.so में पाठ पुनर्स्थापन है। यह स्मृति बर्बाद कर रहा है और सुरक्षा सख्त को रोकता है। कृपया ठीक करें"।

इसके बावजूद, ओएस पुस्तकालय को वैसे लोड करेगा। Marshmallow पुस्तकालय अस्वीकार अगर आपके ऐप के लक्ष्य एसडीके संस्करण> = 23 है। सिस्टम अब यह लॉग करता है क्योंकि यह मानता है कि आपका ऐप डलप्ेन (3) की विफलता में प्रवेश करेगा, और डिलर (3) से पाठ को शामिल करेगा जो समस्या की व्याख्या करता है। दुर्भाग्यवश, बहुत सारे ऐप्स इस मामले में UnsatisfiedLinkError throw by System.loadLibrary । लोड लाइब्रेरी UnsatisfiedLinkError throw by System.loadLibrary को पकड़ने और छुपाने लगते हैं, अक्सर कोई सुराग नहीं छोड़ता है कि लाइब्रेरी तब तक लोड करने में विफल हो जब तक कि आप अपने मूल तरीकों में से एक को लागू करने का प्रयास नहीं करते और वीएम शिकायत करता है कि वह मौजूद नहीं है।

पाठ पुनर्स्थापना की जांच करने के लिए आप कमांड-लाइन स्कैनहेल उपकरण का उपयोग कर सकते हैं। आप इस विषय पर इंटरनेट पर सलाह पा सकते हैं; उदाहरण के लिए https://wiki.gentoo.org/wiki/Hardened/Textrels_Guide एक उपयोगी मार्गदर्शिका है।

आप यह देखकर जांच सकते हैं कि क्या आपके साझा किए गए लिबरी में पाठ पुनर्स्थापना है:

 readelf -a path/to/yourlib.so | grep TEXTREL 

यदि इसमें पाठ पुनर्स्थापना है, तो यह आपको कुछ इस तरह दिखाएगा:

 0x00000016 (TEXTREL) 0x0 

यदि यह मामला है, तो आप अपनी साझा लाइब्रेरी को नवीनतम एनडीके संस्करण के साथ पुनः कंपाइल कर सकते हैं:

 ndk-build -B -j 8 

और अगर आप इसे फिर से जांचते हैं, grep कमांड कुछ भी नहीं लौटाएगा

लंबे समय से संघर्ष करने और विभिन्न तरीकों से एफएफएमपीई को संकलित करने की कोशिश करने के बाद, मुझे समाधान मिला। FFmpeg को –disable-asm ध्वज के साथ संकलित करना सुनिश्चित करें यह सुनिश्चित करेगा कि एफएफएमपीएग में पाठ पुनर्स्थापन नहीं होगा और एंड्रॉइड एम (एसडीके 23) के खिलाफ संकलित होने पर क्रैश नहीं होगा

यह सुनिश्चित करने के लिए कि आपने काम किया है, तो आप उपरोक्त उल्लिखित रूप में खुद का उपयोग कर सकते हैं।

चियर्स

मुझे मेटाइओ एसडीके टीम से प्रतिक्रिया मिली वे कहते हैं कि इस मुद्दे को आसानी से मेटाईओ द्वारा हल नहीं किया जा सकता, क्योंकि यह एफएफएमपीईजी लाइब्रेरी से संबंधित है। हमें उम्मीद है कि एफएफएमपीएग का अपडेट इस मुद्दे को ठीक करेगा। मुझे लगता है कि हमें ऐसे अपडेट के लिए इंतजार करना होगा और ऐप में लाइब्रेरी फ़ाइलों का आदान-प्रदान करना होगा।

मैंने अभी तक किसी एफएफएमपीईजी डेवलपर से संपर्क फोरम की जांच नहीं की है या फिर पूछताछ करने के लिए या बग को सूचित करने के लिए। क्या आप दुर्घटना से एक जानते हैं?

सर्वश्रेष्ठ रेस्ट्रैड, क्रिस्टिन