我的公司运送Android设备来控制我们制造的工业设备。我们只发布一台运行Android 2.36的特定设备,我们大量购买并加载我们自己的应用程序,所以我们不必担心适应不同的布局,分辨率等。
我们在以色列有一个客户,他希望我们的按钮上有希伯来语的图例。Android 2.36对希伯来语(或一般的RTL语言)没有很好的支持,所以我们认为我们要做的是用希伯来语文本的图像替换这些按钮的文本。
由于希伯来语不是这些设备上支持的语言,我不能只是把整个设备放在希伯来语中,让Android选择在运行时使用图像而不是文本的布局XML文件,所以我想我可能不得不在构建时这样做,换句话说,有某种开关或设置说使用这些布局资源而不是那些布局资源当构建我们的希伯来语版本的产品。
我的问题:做这件事的好方法是什么?是否有一种简单的方法可以强制它在构建时使用一组特定的布局XML文件,或者我认为这是错误的?
如果你正在使用Android Gradle for Android和Android Studio,这里将是使用产品口味的好地方:
- 让您的大部分代码和资源作为正常的
main
源代码集 - 在
build.gradle
文件中定义standard
和hebrew
产品口味 - 将正常(非希伯来语)资源放在
standard
源集中 - 将希伯来语资源放在
hebrew
源集中
然后,hebrew
构建将使用希伯来语布局,而standard
构建将使用正常布局。
如果Gradle for Android不是一个选项,因为你控制硬件,你可以在设备上的某个特殊位置放置一些文件,并在你的进程开始时检查是否应该在希伯来语兼容模式下。这假定Android设备的用户没有任意访问它(因此外部存储将是安全的),或者您在安装应用程序后将文件注入内部存储( adb shell run-as
应该处理这个,尽管我只使用它进行读操作,而不是写操作)。
我想说您可以使用layout-LANG来指定基于区域的布局,但我认为如果那里不支持该语言,您就不能这样做。https://developer.android.com/guide/topics/resources/localization.html
你的应用程序有设置界面吗?您可以简单地设置在运行时更改所有布局。
你使用Android Studio吗?Android studio允许不同的构建配置文件用于调试、发布等。你可以为以色列设立一个。