43-Android之提取所有的strings.xml文件

本文介绍了一种针对 MTK6739 Android10 平台提取所有 strings.xml 文件的方法。由于缺乏现成工具,作者通过使用 find 和 tar 命令分步骤提取了不同目录下的 strings.xml 文件,以便进行多语言翻译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

43-Android之提取所有的strings.xml文件


平台: MTK6739 Android10

客户指定需要某种小语种的语言. 但是系统里某些APP翻译不完全, 因此需要将系统的所有的strings.xml文件提取出来, 交给客户翻译.

由于MTK平台没有找到提取strings.xml文件的工具. 因此只能自己想办法, 最后通过find和tar指令完成.

开始使用的是下面的指令:

find ./           -regex '.*/res/values/.*'              -name "*strings.xml" | xargs tar zcf en_strings.tar.gz

但是发现没有提取完全, 只有部分. 猜测应该是前面find指令获取到文件路径资源, 超出了缓存限制.
最终通过分部提取完成资源的提取, 如下:

find ./build/      -regex './build/.*/res/values/.*'      -name "*strings.xml" | xargs tar zcf en_build_strings.tar.gz
find ./frameworks/ -regex './frameworks/.*/res/values/.*' -name "*strings.xml" | xargs tar zcf en_frameworks_strings.tar.gz
find ./device/     -regex './device/.*/res/values/.*'     -name "*strings.xml" | xargs tar zcf en_device_strings.tar.gz
find ./packages/   -regex './packages/.*/res/values/.*'   -name "*strings.xml" | xargs tar zcf en_packages_strings.tar.gz
find ./prebuilts/  -regex './prebuilts/.*/res/values/.*'  -name "*strings.xml" | xargs tar zcf en_prebuilts_strings.tar.gz
find ./sdk/        -regex './sdk/.*/res/values/.*'        -name "*strings.xml" | xargs tar zcf en_sdk_strings.tar.gz
find ./system/     -regex './system/.*/res/values/.*'     -name "*strings.xml" | xargs tar zcf en_system_strings.tar.gz
find ./vendor/     -regex './vendor/.*/res/values/.*'     -name "*strings.xml" | xargs tar zcf en_vendor_strings.tar.gz
<think>我们正在处理一个关于在Android Studio中使用strings.xml中定义的数组资源的问题。 根据用户的问题,我们需要解释如何在strings.xml中定义字符串数组,以及如何在Java/Kotlin代码和XML布局文件中使用这些数组。 步骤: 1.strings.xml中定义字符串数组。 2.XML布局文件中使用数组(例如,在Spinner中)。 3. 在Java或Kotlin代码中获取数组。 我们将参考提供的引用,但注意这些引用主要讨论其他主题(如翻译、CardView、迁移到AndroidX等),但我们可以从中提取与资源使用相关的信息。 引用[2]提到了如何为特定区域创建strings.xml文件,这暗示了资源文件的位置和命名规则,但我们的重点是如何使用数组。 由于引用中没有直接关于数组使用的例子,我们将根据Android开发的标准做法来回答。 回答结构: 1. 定义数组资源 2.XML布局中使用数组 3. 在代码中使用数组 4. 相关问题 注意:使用中文回答,并按照要求格式化数学公式(虽然这个问题可能没有数学公式,但如果有数学表达式,我们会用$...$或$$...$$)。</think>### 在 Android Studio 中使用 strings.xml 中的数组资源 #### 1️⃣ **定义数组资源** 在 `res/values/strings.xml` 文件中添加 `<string-array>` 标签定义数组: ```xml <resources> <!-- 字符串数组定义 --> <string-array name="fruits_array"> <item>Apple</item> <item>Banana</item> <item>Orange</item> </string-array> <!-- 整数数组定义 --> <integer-array name="numbers_array"> <item>1</item> <item>2</item> <item>3</item> </integer-array> </resources> ``` #### 2️⃣ **在 XML 布局中使用** 通过 `@array/资源名` 语法引用数组(例如在 Spinner 控件中): ```xml <Spinner android:id="@+id/spinner_fruits" android:layout_width="match_parent" <!-- 引用[4] --> android:layout_height="wrap_content" android:entries="@array/fruits_array"/> <!-- 关键引用 --> ``` #### 3️⃣ **在 Java/Kotlin 代码中使用** **Java 示例:** ```java // 获取字符串数组 String[] fruits = getResources().getStringArray(R.array.fruits_array); // 获取整数数组 int[] numbers = getResources().getIntArray(R.array.numbers_array); // 在Spinner中使用 Spinner spinner = findViewById(R.id.spinner_fruits); ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, fruits); spinner.setAdapter(adapter); ``` **Kotlin 示例:** ```kotlin val fruits = resources.getStringArray(R.array.fruits_array) val spinner: Spinner = findViewById(R.id.spinner_fruits) spinner.adapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, fruits) ``` #### 4️⃣ **多语言支持** 为不同语言创建对应资源文件(如 `values-en-rUS/strings.xml`),系统会根据设备语言自动匹配[^2]: ``` res/ ├── values/ │ └── strings.xml (默认) └── values-es/ └── strings.xml (西班牙语) ``` #### 💡 注意事项 1. 数组资源也支持动态修改,但需通过适配器更新 2. 使用 `androidx` 资源时需确保正确迁移依赖[^5] 3. 大型数组建议使用 RecyclerView 替代 Spinner --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值