एनडीके मूल रूप से एंड्रॉइड के लिए Java Native Interface का कार्यान्वयन है। यह आपको लक्ष्य arm-eabi
के साथ जीसीसी 4.2.1 (जहां तक मैं कह सकता हूं उपकरण का पूरा सेट) देता है। क्या परिणामी कोड आईफोन या अन्य उपकरणों पर चल जाएगा जो मुझे नहीं पता; मैंने कभी आईफोन के लिए कोड नहीं किया है। यहां बताया गया है file
तो शायद आप तुलना कर सकते हैं कुछ मैं NDK के साथ बनाया के बारे में क्या कहना है है:
libpuzzles.so: ELF 32-बिट LSB साझा वस्तु, एआरएम, संस्करण 1 (SysV), गतिशील रूप से जुड़ा हुआ है, नहीं
छीन (। strip
शामिल किया गया है, मैं बस इसे यहाँ नहीं चला है) यहाँ gcc -v
या g++ -v
है (वे समान हैं):
में निर्मित चश्मा का उपयोग करना।
लक्ष्य: हाथ-EABI
साथ कॉन्फ़िगर: /opt/digit/android/git/android-ndk/out/arm-eabi-4.2.1/toolchain/src/gcc-4.2.1/configure --prefix =/opt/digit/android/git/android-ndk/build/prebuilt/linux-x86/arm-eabi-4.2.1 - लक्ष्य = arm-eabi --host = x86 _
64-अज्ञात-लिनक्स -gnu --build = x86 _
64-अज्ञात-लिनक्स-gnu --enable-languages = c, C++ --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp - -disable-libstdc __-v3 --disable-sjlj-अपवाद - अक्षम-साझा - साथ-फ्लोट = सॉफ्ट --with-fpu = vfp --with-arch = armv5te --enable-target-optspace --with- abi = aapcs --disable-nls --prefix =/opt/digit/android/git/android-ndk/build/prebuilt/linux-x86/arm-eabi-4.2.1 --with-sysroot =/opt/digit/एंड्रॉयड/Git/android-NDK/बू आई एल डी/प्लेटफार्मों/कप केक/कट्टर हाथ --program-बदलने नाम = रों, ^, हाथ-eabi-,
थ्रेड मॉडल: एकल
जीसीसी संस्करण 4.2.1
मान लिया जाये कोड चलाएगा, एपीआई स्तर पर इसका प्रबंधन एक अलग और दिलचस्प मुद्दा है। एंड्रॉइड केवल आपको जेएनआई एपीआई के माध्यम से मूल कोड कॉल करने देगा। मैं आईफोन दृष्टिकोण से परिचित नहीं हूं, लेकिन मुझे पता है कि यह जावा नहीं है इसलिए मुझे लगता है कि यह मानक गतिशील लिंकिंग या dlopen()
की तरह है? मेरा मतलब यह है कि, आपको या तो अपने जेएनआई कार्यों को बनाना होगा (उदाहरण के लिए Java_com_example_Foo_YourMethod(JNI_Env*, jobject, ...)
किसी ऐसे चीज़ से बुलाए जाने का सामना करना पड़ता है जो कि जेवीएम नहीं है (उदाहरण के लिए आपका आईफोन कोड नकली जेएनआई_ईएनवी है?), या बहुत कम घोर, प्रदान करके शुरू करें एक देशी एपीआई आईफोन के लिए उपयुक्त है और उसके बाद एक जेएनआई रैपर शामिल है, जो गैर-जेएनआई प्लेटफॉर्म सुरक्षित रूप से अनदेखा कर सकते हैं, जो मैं इकट्ठा करता हूं, इस तरह की चीज के लिए एक आम दृष्टिकोण है। उम्मीद है कि मदद करता है।
स्रोत
2009-11-08 12:12:49
स्पष्टीकरण के लिए, मैं समीकरण के आईफोन पक्ष से चिंतित नहीं हूं। मुझे पता है कि मुझे इसे आईफोन के लिए अलग से संकलित करना होगा (यह स्थैतिक पुस्तकालयों का उपयोग करता है, गतिशील नहीं)। मुझे चिंतित है कि अगर मैं एंड्रॉइड के लिए .so बना देता हूं, तो यह केवल एंड्रॉइड फोन के उस सबसेट के साथ संगत होगा जो आर्म-एबी का समर्थन करता है। शायद मैं यहां हार्डवेयर की अपनी अज्ञानता प्रदर्शित कर रहा हूं, लेकिन अगर सभी एंड्रॉइड फोनों को उस मानक का पालन करना है, तो कोई समस्या नहीं है। – john146
> हमारे पास कुछ गणना भारी कोड के साथ एक एप्लिकेशन है जिसे हम एंड्रॉइड और आईफोन के बीच साझा करना चाहते हैं। आईफोन (आईओएस 4.2 के रूप में) उपयोगकर्ता द्वारा साझा वस्तुओं को साझा नहीं करता है –