2011-12-09 16 views
11

(मूल्य 'TOP_LEFT' के साथ 'पाठ' में) मैं निम्नलिखित Android.mk फ़ाइल का उपयोग एंड्रॉयड स्रोत संकलन कर रहा हूँ:त्रुटि कैसे हल करें त्रुटि: यह विशेषता स्थानीयकृत होनी चाहिए।

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 

LOCAL_MODULE_TAGS := optional 

LOCAL_STATIC_JAVA_LIBRARIES := libarity 

LOCAL_SRC_FILES := $(call all-java-files-under, src) 

LOCAL_PACKAGE_NAME := TouchPanelTest 

include $(BUILD_PACKAGE) 
################################################## 
include $(CLEAR_VARS) 


# Use the folloing include to make our test apk. 
include $(call all-makefiles-under,$(LOCAL_PATH)) 

लेकिन यह दे देंगे त्रुटि:

main.xml:19: error: Error: This attribute must be localized. (at 'text' with value 'TOP_LEFT').

mail.xml के रूप में है इस प्रकार है:

<RelativeLayout 
    android:id="@+id/top_left" 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:background="#000" 
    android:orientation="vertical" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TOP_LEFT" /> 
</RelativeLayout> 

<RelativeLayout 
    android:id="@+id/top_right" 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:background="#000" 
    android:orientation="vertical" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TOP_RIGHT" /> 
</RelativeLayout> 

<RelativeLayout 
    android:id="@+id/bottom_left" 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:background="#000" 
    android:orientation="vertical" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="BOTTOM_LEFT" /> 
</RelativeLayout> 

उत्तर

8

एंड्रॉइड ऐप्स के लिए सबसे अच्छा अभ्यास संसाधन फ़ाइलों में सभी गैर-गतिशील सामग्री को परिभाषित करना है। यह आपको विभिन्न भाषाओं के लिए विभिन्न संसाधन फ़ाइलों को परिभाषित करने देता है, उदाहरण के लिए। आम तौर पर, यह सिर्फ एक सिफारिश है और एंड्रॉइड एसडीके शिकायत नहीं करता है अगर आप अपने लेआउट xml में हार्ड-कोड मान करते हैं। एंड्रॉइड स्रोत बिल्ड सिस्टम, हालांकि, सभी तारों को "मान" संसाधन में परिभाषित किया जाना आवश्यक है। यह शायद सिस्टम बिल्डरों को गलती से सिस्टम छवि में सामग्री छोड़ने से बचाने के लिए है जो उपयोगकर्ता की चुनी भाषा में प्रदर्शित नहीं होगा।

आपको क्या करने की आवश्यकता है उन स्ट्रिंग मानों को लेआउट से बाहर ले जाएं और उन्हें res/values/ में परिभाषित करें। स्ट्रिंग मानों के लिए सामान्य स्थान res/values/strings.xml में है, लेकिन वास्तविक फ़ाइल को तब तक नामित किया जा सकता है जब तक कि वह उस निर्देशिका में न हो।

उदाहरण के लिए, में res/values ​​/ string.xml:

<string name="topLeftContent">TOP_LEFT</string> 

और अपने main.xml लेआउट में, नाम से सामग्री का संदर्भ लें: कैसे पर

android:text="@string/topLeftContent" 

अधिक जानकारी के लिए और इसका क्यों, Localization in Android पर Google के दस्तावेज़ देखें।

+0

हां, यह पकड़ने के लिए एक बहुत ही सूक्ष्म त्रुटि है। धीरे-धीरे बिना, हम इन त्रुटियों से निपटेंगे। –

14

आप Android.mk में

LOCAL_MODULE_TAGS := tests 

का उपयोग स्थानीयकरण जांच को छोड़ देता है कर सकते हैं।

एक और तरीका बिल्ड सिस्टम में स्थानीयकरण जांच को अक्षम करना है। build/core/package.mk

#LOCAL_AAPT_FLAGS := $(LOCAL_AAPT_FLAGS) -z 
+0

** package.mk ** कैसा दिखता है? –

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