2013-10-10 15 views
7

में तीसरे पक्ष के पुस्तकालयों का उपयोग करना मैं एक फोनगैप/कॉर्डोवा प्लगइन पर काम कर रहा हूं जो ओएससी संदेशों को भेजने और प्राप्त करने के लिए सॉकेट प्रदान करना है (ओपन साउंड कंट्रोल)। उस उद्देश्य के लिए मैं JavaOSC का उपयोग करना चाहता हूं लेकिन मुझे अपने प्रोजेक्ट में लाइब्रेरी को शामिल करने के बारे में अनिश्चितता है।एंड्रॉइड/फोनगैप: प्लगइन-विकास

मैं एंड्रॉइड स्टूडियो का उपयोग कर रहा हूं और मैंने मूल रूप से this tutorial का पालन किया है ताकि मेरी परियोजना स्थापित हो सके। सबसे पहले मैं अपने OSCPlugin.class रूप में एक ही निर्देशिका में कच्चे JavaOSC वर्ग फ़ाइलों रखा और मेरे OSCPlugin.class के लिए कम से आयात घोषणाओं रखा:

import com.illposed.osc; 

कि काम नहीं किया।

अगले चरण के रूप में मैंने प्रोजेक्ट की मॉड्यूल सेटिंग्स के भीतर मेवेन से लाइब्रेरी जोड़ने की कोशिश की। मैं मैवेन से जार फ़ाइलों को डाउनलोड करने में सक्षम था और उन्हें/प्लेटफॉर्म/एंड्रॉइड/libs में स्थापित करने में सक्षम था। मॉड्यूल 'एंड्रॉइड' के लिए सेटिंग्स के भीतर मैं देख सकता हूं कि 'एंड्रॉइड एपीआई 17' को एसडीके के रूप में इस्तेमाल किया जाना चाहिए, जिसमें कॉर्डोवा-3.1.0 और com.illposed.osc: javaosc-core: 0.2 - दोनों सक्रिय हैं। मैं कॉर्डोवा-3.1.0.jar के साथ-साथ जावावोस्क-कोर-0.2.jar देख सकता हूं, जिसमें एंड्रॉइड स्टूडियो के भीतर नेविगेटर में com.illposed.osc शामिल है।

हालांकि, जब अपने प्रोजेक्ट को संकलित करने की कोशिश कर रहा है:

Gradle: cannot find symbol class osc 

OSCPlugin.class के भीतर से शुरू हो रहा है कि ऊपर उल्लेख किया आयात घोषणा

शामिल मैं जावा के साथ बहुत कम अनुभव है और यहां तक ​​कि कम से एंड्रॉइड विकास। लेकिन मुझे इस पहेली को हल करने और शुरू करने में दिलचस्पी होगी। मैंने जावा दस्तावेज़ों की खोज की है लेकिन समस्या केवल जावा के भीतर ही नहीं बल्कि बल्कि एंड्रॉइड प्रोजेक्ट की संरचना के भीतर है।

अगर कोई इस मुद्दे पर कुछ प्रकाश डाल सकता है तो मैं आभारी रहूंगा। किसी भी संकेत की अत्यधिक सराहना की!

उत्तर

4

मेरी Phonegap परियोजनाओं में से एक के लिए मैं Apache Commons Net की जरूरत है, इन steps का पालन करने की कोशिश कर: सफलता के बिना दुर्भाग्य

... 
<source-file src="src/android/xxx.jar" target-dir="libs" framework="true" /> 
<source-file src="src/android/MyPlugin.java" target-dir="src/com/mypackage" /> 
... 

,। यह चाल तीसरे पक्ष की लाइब्रेरी को किसी अन्य प्लगइन में एम्बेड करना था (बहुत प्लगइन संरचना के बाद)। एक शीर्ष स्तरीय निर्देशिका के रूप में org.apache.commons.net होने:

org.apache.commons.net 
    +src 
     +android(this is where the .jar is located) 
    +www (empty, not referencing any .js) 
    +plugin.xml 

संक्षिप्तता के लिए, plugin.xml इस प्रकार है:

<?xml version="1.0" encoding="UTF-8"?> 

<plugin xmlns="http://www.phonegap.com/ns/plugins/1.0" 
      id="org.apache.commons.net" 
     version="0.1.0"> 
    <name>org.apache.commons.net</name> 
    <description>org.apache.commons.net</description> 
    <license>Apache License, Version 2.0</license> 
    <keywords>org.apache.commons.net</keywords> 

    <!-- android --> 
    <platform name="android"> 
     <config-file target="res/xml/config.xml" parent="/*"> 
      <feature name="org.apache.commons.net"> 
       <param name="android-package" value="org.apache.commons.net"/> 
      </feature> 
     </config-file> 

     <source-file src="src/android/commons-net-2.2.jar" target-dir="libs" framework="true" />  
    </platform>   
</plugin> 

मान लिया जाये कि org.apache.commons.net निर्देशिका अपने स्थानीय Git रेपो में स्थित है,

phonegap local plugin add /path/to/your/org.apache.commons.net 
1

बाहरी पुस्तकालय जोड़ने के लिए, मूल रूप से तुम सब करने की है/libs फ़ोल्डर में जार नकल है: अपनी परियोजना में जोड़ने के रूप में के रूप में तुच्छ है।

यहां आपके स्रोत में खराब आयात है।

आयात का उपयोग क्लास नाम के बाद पैकेज नाम निर्दिष्ट करके कक्षा आयात करने के लिए किया जाता है और यहां आप केवल कक्षा का नाम निर्दिष्ट करते हैं, इसलिए त्रुटि "प्रतीक वर्ग ओएससी नहीं मिल सकती" आपके पास है क्योंकि कोई कक्षा ओएससी नहीं है ।

आप या तो

  • import com.illposed.osc.*; उपयोग करें यदि आप पैकेज
  • से सभी वर्गों को आयात या पैकेज है कि आप का उपयोग करने के लिए जा रहे हैं से प्रत्येक वर्ग के लिए एक आयात जोड़ना चाहते हैं चाहिए।

और यदि आप सीएलआई या फोनगैप बिल्ड का उपयोग करके प्लगइन इंस्टॉल करने योग्य बनाना चाहते हैं, तो आपको जार फ़ाइल की प्रति जोड़ने के लिए प्लगइन.एक्सएमएल अपडेट करना होगा।

ps यदि आपको पता नहीं है, तो आप com.illposed.osc.ui से कक्षाओं का उपयोग करने में सक्षम नहीं होंगे क्योंकि वे स्विंग का उपयोग कर रहे हैं और जेवीएम के लिए डिज़ाइन किए गए हैं और एंड्रॉइड नहीं।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^