Как решить ошибку: этот атрибут должен быть локализован. (В «тексте» со значением «TOP_LEFT»)

Я компилирую исходный код Android, используя следующий файл 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: Ошибка: этот атрибут должен быть локализован. (В «тексте» со значением «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> 

Solutions Collecting From Web of "Как решить ошибку: этот атрибут должен быть локализован. (В «тексте» со значением «TOP_LEFT»)"

Вы можете использовать

 LOCAL_MODULE_TAGS := tests 

В Android.mk, чтобы исключить проверку локализации.

Другой способ – отключить проверку локализации в системе сборки. Прокомментируйте строку 81 в build/core/package.mk

 #LOCAL_AAPT_FLAGS := $(LOCAL_AAPT_FLAGS) -z 

Лучшей практикой для Android-приложений является определение всего нединамического содержимого в файлах ресурсов. Это позволяет, например, определять различные файлы ресурсов для разных языков. Как правило, это всего лишь рекомендация, и Android SDK не жалуется, если вы скорректируете значения в вашем макете xml. Однако система сборки Android-устройств требует, чтобы все строки были определены в ресурсе «values». Вероятно, это предназначено для защиты системных сборщиков от случайного оставления контента в системном образе, который не будет отображаться на выбранном пользователем языке.

Что вам нужно сделать, это переместить эти строковые значения из макета и определить их в res/values/ вместо. Обычное место для строковых значений находится в res/values/strings.xml , но для фактического файла можно назвать все, что угодно, пока оно находится в этом каталоге.

Например, в res / values ​​/ string.xml:

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

И в макете main.xml обратитесь к контенту по имени:

  android:text="@string/topLeftContent" 

Подробнее о том, как и почему, см. В документации Google по локализации в Android .