2011-12-19 12 views
6

मुझे सब से पहले कुछ बातें स्पष्ट करते हैं:Android ऐप्लिकेशन से लुआ स्क्रिप्ट कॉलिंग

मैं एक कमांड लाइन से एक एक लुआ स्क्रिप्ट चलाने की कोशिश नहीं कर रहा हूँ।
मैं लुआ

से किसी भी एंड्रॉइड फ़ंक्शंस का आह्वान करने की कोशिश नहीं कर रहा हूं तो इस तरह से, मैं वही कर रहा हूं जो मैं करने की कोशिश कर रहा हूं।

एंड्रॉइड गतिविधि से सीधे या अप्रत्यक्ष रूप से (जेएनआई/एसएल 4 ए) एक लुआ स्क्रिप्ट का आह्वान करता है और परिणाम को परिणाम में वापस ले जाता है।

अब SL4A के लिए दस्तावेज़ को देखकर मैं कुछ कमियां देखें:

1) मैं नहीं मिल सकता है प्रलेखन कह रही है कि यह एक प्रोग्राम के रूप में लुआ फोन की सुविधा देता है। 2) ऐसा लगता है कि SL4A को एक अलग एप्लिकेशन के रूप में स्थापित करने की आवश्यकता हो सकती है (बहुत प्रतीत नहीं होती)।

मैं देख रहा हूं कि एकमात्र अन्य विकल्प एनडीके क्रॉस को लुआ को संकलित करता है और फिर इसे किसी भी तरीके से सी कोड में शामिल करने का प्रयास करता है।

उत्तर

7

आप मेरा नमूना प्रोजेक्ट AndroLua देख सकते हैं। इसमें एंड्रॉइड एनडीके का उपयोग करके सीधे एंड्रॉइड एप्लिकेशन में एम्बेडेड एक लुआ दुभाषिया शामिल है। एंड्रॉइड एप्लिकेशन में इसे सफलतापूर्वक एम्बेड करने के लिए केवल बहुत ही छोटे बदलाव आवश्यक थे।

वास्तव में आपके आवेदन से लुआ का उपयोग करने के लिए, LuaJava भी आपको जावा से और दूसरी तरफ लुआ का उपयोग करने की अनुमति देने के लिए बंडल किया गया है।

एक उदाहरण देखने के लिए एप्लिकेशन को देखें कि मैं print फ़ंक्शन को ओवरराइड कैसे करता हूं ताकि आउटपुट को कंसोल के बजाय TextView पर अनुमति दी जा सके।

अद्यतन: लोड हो रहा है मॉड्यूल

मैं मॉड्यूल आप लोड करने के लिए लुआ में कार्यान्वित किया जाता चाहते मान। मॉड्यूल लोडिंग के लिए मानक लुआ तकनीक सामान्य रूप से काम करती है - आपको बस अपनी एप्लिकेशन डेटा निर्देशिका (या जहां भी आप अपनी स्क्रिप्ट/मॉड्यूल स्टोर करना चाहते हैं) में package.path को संशोधित करना होगा।

कल्पना कीजिए कि आप एक मॉड्यूल अनुप्रयोग डेटा निर्देशिका में hello.lua कहा जाता है:

-- add the data directory to the module search path 
package.path = '/data/data/sk.kottman.androlua/?.lua;'..package.path 
-- load the module 
require 'hello' 
-- run a function, should show "Hello Lua!" 
hello.greet('Lua!') 
+0

आप कैसे एक के लिए करने के लिए इस्तेमाल कर सकते हैं AndroLua स्पष्ट किया जा सका:

$ adb shell # cd /data/data/sk.kottman.androlua # cat hello.lua module(..., package.seeall) function greet(name) print('Hello ' .. name) end # 

तो दुभाषिया में इस कोड को चलाने का प्रयास करें एक लुआ मॉड्यूल लोड करें और उस मॉड्यूल से एक फ़ंक्शन कॉल करें। धन्यवाद – Androider

+0

मैंने सत्यापित किया है कि यह काम करता है। मुझे संसाधन फ़ाइलों से लुआ स्क्रिप्ट लोड करने में भी दिलचस्पी है, इसलिए मैंने इसे एक अलग प्रश्न के रूप में पोस्ट किया है: http://stackoverflow.com/questions/8584678/does-andolua-have-a-way-to-pass -lua-स्क्रिप्ट-से-संसाधन फ़ाइलें – Androider

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