我正在使用以下Android.mk文件编译android源代码:
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))
Run Code Online (Sandbox Code Playgroud)
但它会给出错误:
main.xml:19:错误:错误:必须本地化此属性.(在'text'处,值为'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>
Run Code Online (Sandbox Code Playgroud)
dul*_*vic 14
您可以使用
LOCAL_MODULE_TAGS := tests
Run Code Online (Sandbox Code Playgroud)
在Android.mk中省略了本地化检查.
另一种方法是在构建系统中禁用本地化检查.评论第81行 build/core/package.mk
#LOCAL_AAPT_FLAGS := $(LOCAL_AAPT_FLAGS) -z
Run Code Online (Sandbox Code Playgroud)
小智 9
Android应用程序的最佳实践是定义资源文件中的所有非动态内容.例如,这允许您为不同的语言定义不同的资源文件.通常情况下,这只是一个推荐,如果您在布局xml中对值进行硬编码,则Android SDK不会抱怨.但是,Android 源代码构建系统要求在"值"资源中定义所有字符串.这可能是为了保护系统构建者不会意外地将内容留在系统映像中,而不会以用户选择的语言显示.
您需要做的是将这些字符串值移出布局并res/values/改为定义它们.字符串值的通常位置是res/values/strings.xml,但实际文件可以命名为您喜欢的任何内容,只要它在该目录中即可.
例如,在res/values/string.xml中:
<string name="topLeftContent">TOP_LEFT</string>
Run Code Online (Sandbox Code Playgroud)
在您的main.xml布局中,请按名称查看内容:
android:text="@string/topLeftContent"
Run Code Online (Sandbox Code Playgroud)
有关此方法和原因的详细信息,请参阅Google关于Android中本地化的文档.