2011-10-03 7 views
6

पर vp8 का निर्माण करें मैं एंड्रॉइड के लिए vp8 कोडेक बनाने की कोशिश कर रहा हूं। मैंने config.sh स्क्रिप्ट और armv6 के लिए makefile sourcery g ++ के साथ चलाया जो सफलतापूर्वक libvpx.so का उत्पादन किया। इसके बाद मैंने एक जेएनआई रैपर लिखा और इसे सफलतापूर्वक एनएनके-बिल्ड के साथ संकलित किया। जब मैं इसे जिंजरब्रेड स्मार्टफ़ोन पर चलाता हूं तो मुझे एक असंतुष्ट लिंक्स त्रुटि मिलती है "libpthread.so.0 नहीं मिला"। मैं इस त्रुटि से कैसे छुटकारा पा सकता हूं?एंड्रॉइड

उत्तर

0

यह कभी-कभी साझा पुस्तकालय में सोनामे के साथ एक समस्या हो सकती है, इस आलेख को देखें।

http://groups.google.com/group/android-ndk/browse_thread/thread/fd484da512650359

आप pthreads को निष्क्रिय करता है, तो क्या तुम सच में नहीं है उन्हें जरूरत हो सकता है।

iv'e अतीत में .so फाइलों के साथ समस्या नहीं थी और .so साझा पुस्तकालयों

9

http://git.chromium.org/gitweb/?p=webm/bindings.git;a=blob_plain;f=JNI/README.Android से पठनीयता के लिए कुछ समायोजन के बजाय ए स्थिर पुस्तकालयों का उपयोग करके इन समस्याओं के सभी से परहेज किया।

  1. {project}/jni फ़ोल्डर बनाएं।

  2. जेएनआई बाइंडिंग प्राप्त करें।

    Git क्लोन https://chromium.googlesource.com/webm/bindings

  3. प्राप्त libvpx।

    Git क्लोन https://chromium.googlesource.com/webm/libvpx

  4. कॉन्फ़िगर एंड्रॉयड

    ./libvpx/configure --target = ARMv7-android-जीसीसी --disable-उदाहरण --sdk-पथ के लिए libvpx = {एनडीके के लिए पथ}

    --sdk-path पूर्ण होना चाहिए।

  5. libwebm प्राप्त करें।

    सीडी बाइंडिंग/JNI

    Git क्लोन https://chromium.googlesource.com/webm/libwebm

  6. प्राप्त libogg। से http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz

    निकालें

    डाउनलोड ogg कोड बाइंडिंग के लिए/JNI।

  7. हमें config_types.h उत्पन्न करने के लिए कॉन्फ़िगरेशन चलाने की आवश्यकता है।

    सीडी libogg-1.3.0 & & कॉन्फ़िगर & & सीडी ..

  8. प्राप्त libvorbis

    डाउनलोड वॉर्बिस से http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz

    निकालें बाइंडिंग/JNI करने के लिए कोड।

  9. प्राप्त libyuv

    SVN चेकआउट http://libyuv.googlecode.com/svn/trunk/ नीचे डेटा के साथ libyuv-रीड-ओनली

  10. बनाएं {परियोजना} /jni/Application.mk:

    APP_ABI := armeabi-v7a 
    APP_OPTIM := release 
    APP_STL := gnustl_static 
    APP_CPPFLAGS := -frtti 
    
  11. डेटा बेलो के साथ {project} /jni/Android.mk बनाएं डब्ल्यू:

    WORKING_DIR := $(call my-dir) 
    BINDINGS_DIR := $(WORKING_DIR)/bindings/JNI 
    include $(BINDINGS_DIR)/Android.mk 
    
  12. जेएनआई कोड बनाएं।

    {NDK के लिए पथ}/जावा कोड NDK-निर्माण

  13. प्रति।

    सीपी आर बाइंडिंग/JNI/com/गूगल ../src/com/

  14. बाइंडिंग का परीक्षण करने के कोड जोड़ें।

    int[] major = new int[2]; 
    int[] minor = new int[2]; 
    int[] build = new int[2]; 
    int[] revision = new int[2]; 
    MkvMuxer.getVersion(major, minor, build, revision); 
    String outStr = "libwebm:" + 
           Integer.toString(major[0]) + "." + 
           Integer.toString(minor[0]) + "." + 
           Integer.toString(build[0]) + "." + 
           Integer.toString(revision[0]); 
    System.out.println(outStr); 
    
  15. ऐप चलाएं। आपको libwebm संस्करण आउटपुट देखना चाहिए।

  16. आवश्यकतानुसार ट्वीक करें। वीपी 8 रैपर com.google.libvpx नेमस्पेस में हैं।

+0

शानदार उत्तर! लेकिन - जब मैं निम्नलिखित कर रहा हूं तो मुझे कॉन्फ़िगरेशन के दौरान हमेशा त्रुटि मिल रही है। यह संकलक को तुरंत चालू नहीं कर सकता है। यहां लॉग है: कंपाइलर का आह्वान करने में असमर्थ: /Users/yosef/Desktop/adt/ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gcc --sysroot =/उपयोगकर्ता/योसेफ/डेस्कटॉप/एडीटी/एनडीके/स्रोत/एंड्रॉइड/libportable/arch-arm -I/उपयोगकर्ता/योसेफ/डेस्कटॉप/एडीटी/एनएनडी/स्रोत/एंड्रॉइड/cpufeatures -mtune = प्रांतस्था -8-ओ 3-एफपीआईसी - डब्ल्यू .. क्या आप जानते हैं कि कारण क्या हो सकता है? – Nativ

+0

रेपो को कहीं और स्थानांतरित कर दिया गया है। कृपया नई रूट से प्राप्त करने के लिए रेपो लिंक अपडेट करें - https://chromium.googlesource.com/ – Shrish