2011-06-05 13 views
45

मैं एनडीके का उपयोग करके एक साधारण एंड्रॉइड एप्लिकेशन बनाने की कोशिश कर रहा हूं। यहाँ मेरी Android.mkएंड्रॉइड एनडीके: लक्ष्य बनाने के लिए कोई नियम

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_LDLIBS := -llog 

LOCAL_MODULE := myNDK 
LOCAL_SRC_FILES := native.c 

include $(BUILD_SHARED_LIBRARY) 

की सामग्री हैं और जब मैं चल रहा हूँ NDK-निर्माण मैं:

मेकअप: * कोई नियम बनाने के लिए लक्ष्य '/native.c', needed by '/ उपयोगकर्ता /ivan/Documents/workspace/TestNDK/obj/local/armeabi/objs/myNDK/native.o '। स्टॉप।

तो समस्या जाहिर है कि मेकअप रूट निर्देशिका में खोज स्रोत फ़ाइलें है और अगर मैं अपने रूट फ़ोल्डर को native.c कॉपी सब कुछ पूरी तरह से काम करता है।

सवाल यह है: LOCAL_PATH को मेरे काम करने वाले jni फ़ोल्डर में सेट करने के लिए मुझे अपने Android.mk में क्या निर्दिष्ट करना चाहिए।

+0

यह वास्तव में सहायक है, धन्यवाद। – lijinma

उत्तर

86

ठीक है, मैं अपने समस्या हल हो जाती है, और कारण बहुत ही अजीब था: समस्या पहली पंक्ति में

है:

'LOCAL_PATH = $ ____ (मेरी-निर्देशिका कहते हैं)'

अंत में कई जगहें थीं (मैंने उन्हें '_' से बदल दिया है)। यदि आप उन्हें हटा देते हैं तो सबकुछ ठीक काम करता है।

आशा है कि किसी और की मदद करें।

+8

हां, यह निश्चित रूप से किसी की मदद की! मेरे बाल धन्यवाद (मैं निराशा में इसे खींचना शुरू करने वाला था)! :) – Delyan

+6

अच्छा पकड़ो! एंड्रॉइड बग के रूप में इसकी रिपोर्ट करना अच्छा लगेगा, क्योंकि यह अभी भी एनडीके संशोधन 7 के साथ होता है। – olivierg

+0

वाह, यह एक अजीब समाधान है, लेकिन यह काम करता है! – Peterdk

1

एंड्रॉइड-एनएनडी-आर 9 64 बिट का उपयोग कर मैक ओएस एक्स पर, एनडीके पथ से सफेद रिक्त स्थान हटा दें। यही कारण है कि मुझे

नहीं वास्तव में एक ओपी के लिए उत्तर के लिए लक्ष्य त्रुटि बनाने के लिए कोई नियम तय है, लेकिन मुझे लगता है कि यह उनके समय बर्बाद करने से दूसरों को बचा सकता है।

0

यदि Android.mk फ़ाइल में कोई वाक्यविन्यास त्रुटि है, तो लक्ष्य त्रुटि बनाने के लिए कोई नियम नहीं होगा।

मैं एक ही समस्या थी।

1

एक और समस्या यह है कि मैंने पाया कि इस त्रुटि का कारण बनता है कि

LOCAL_SRC_FILES := native.c 

और

LOCAL_MODULE := native 

ही नाम का उपयोग है। मुझे यकीन नहीं है कि यह एक त्रुटि क्यों उत्पन्न करता है, क्योंकि कोड को देशी.ओ, देशी.ओडी और मूल के रूप में अलग-अलग स्थानों में उत्पन्न किया जाना चाहिए। लेकिन जाहिर है, यह करता है।

मुझे हैलो को hello.c संकलित करने का प्रयास करते समय यह पता चला। एक बार जब मैंने hello.c को main.c में बदल दिया, तो सब ठीक से संकलित हो गया।

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