Termux:根据 appfilter.xml 生成 drawable.xml 的可执行脚本及使用指南
以下是一个在 Termux 环境下,根据 `appfilter.xml` 文件在同目录下生成对应的 `drawable.xml` 文件的 Bash 脚本: ```bash #!/bin/bash # 定义输入文件为 appfilter.xml input_file="appfilter.xml" # 定义输出文件为 drawable.xml output_file="drawable.xml" # 检查 appfilter.xml 文件是否存在 if [ ! -f "$input_file" ]; then echo "appfilter.xml 文件不存在,请检查。" exit 1 fi # 开始生成 drawable.xml 文件,添加文件开头的 XML 声明和资源标签 echo '<?xml version="1.0" encoding="utf-8"?>' > "$output_file" echo '<resources>' >> "$output_file" # 从 appfilter.xml 文件中提取 icon 名称,并写入 drawable.xml 文件 grep -o '<item component=".*" drawable="[^"]*"/>' "$input_file" | while read -r line; do # 提取 drawable 属性的值 drawable_name=$(echo "$line" | grep -o 'drawable="[^"]*"' | cut -d'"' -f2) # 生成 drawable.xml 中的一行内容 echo " <item name=\"$drawable_name\" type=\"drawable\" />" >> "$output_file" done # 添加文件结尾的资源标签 echo '</resources>' >> "$output_file" echo "drawable.xml 文件已成功生成。" ``` 代码说明 1. 输入输出文件定义:脚本开始时,定义了输入文件为 `appfilter.xml`,输出文件为 `drawable.xml`。 2. 文件检查:检查 `appfilter.xml` 文件是否存在,如果不存在则输出错误信息并退出脚本。 3. 文件开头部分生成:向 `drawable.xml` 文件中写入 XML 声明和 `<resources>` 标签。 4. 提取 drawable 名称:使用 `grep` 命令从 `appfilter.xml` 文件中提取包含 `drawable` 属性的 `<item>` 标签,然后使用 `cut` 命令提取 `drawable` 属性的值。 5. 生成 drawable.xml 内容:将提取的 `drawable` 名称格式化为 `<item>` 标签,并写入 `drawable.xml` 文件。 6. 文件结尾部分生成:向 `drawable.xml` 文件中写入 `</resources>` 标签。 使用方法 1. 将上述脚本保存为一个文件,例如 `generate_drawable.sh`。 2. 给脚本添加执行权限: ```bash chmod +x generate_drawable.sh ``` 3. 在包含 `appfilter.xml` 文件的目录下运行脚本: ```bash ./generate_drawable.sh ``` 需要小心的地方 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 文件路径问题:确保 `appfilter.xml` 文件和脚本在同一目录下,或者根据实际情况修改脚本中的文件路径。 2. XML 格式问题:如果 `appfilter.xml` 文件的格式不符合预期,例如 `<item>` 标签的属性顺序或格式不同,可能会导致脚本无法正确提取 `drawable` 名称。 3. 文件覆盖问题:运行脚本时,`drawable.xml` 文件会被覆盖,如果该文件已经存在且包含重要内容,请提前备份。 ######[AI写代码神器 | 766点数解答 | 2025-08-27 07:59:45]
- 代码填空挑战:完成正态分布、随机数生成及数据处理代码(阿里通义 | 506点数解答 | 2025-03-23 14:32:14)326
- 挑战!完成代码填空解锁数据处理奥秘(字节豆包 | 116点数解答 | 2025-03-26 22:22:15)344
- 挑战填空!完成这段 NumPy 代码实现数据生成与保存(DeepSeek | 178点数解答 | 2025-03-26 22:26:30)408
- 易语言模拟POST请求抓包内容:代码示例及注意要点揭秘(字节豆包 | 1131点数解答 | 2025-06-02 12:46:09)192
- 5条新春贺语,开启龙年吉祥团圆新篇章!(字节豆包 | 135点数解答 | 2025-01-15 14:43:34)321
- 揭秘成都治水管水改革:五大机制闭环管理,技术报告助力供排水智能化优化(GPT | 372点数解答 | 2023-12-04 09:49:06)305
- 2020 年成都治水管水改革多管齐下:建“五大机制”、管网体检,编制报告提效供水排水 (讯飞星火 | 251点数解答 | 2023-12-04 09:49:34)292
- 用 Pandas 深度剖析数据:从读取到统计分析全流程实战(GPT | 642点数解答 | 2024-06-30 15:39:49)366
- 用 Pandas 深入分析招聘数据:从数据读取到可视化全流程解析(GPT | 1539点数解答 | 2024-06-30 15:56:50)378
- Java:实现图书馆管理系统功能及功能验证代码详解(讯飞星火 | 948点数解答 | 2024-07-03 15:59:02)654
- Java 图书馆管理系统功能设计与验证:增删改查全实现(GPT | 434点数解答 | 2024-07-03 16:23:46)405
- Java 实现图书馆功能:图书增删改查及功能验证全解析(阿里通义 | 759点数解答 | 2024-07-03 16:24:21)381