〖Android〗Android App项目资源字符串检查(检查是否缺少对应的翻译,导致系统切换语言后崩溃)
Android项目开发过程中,容易出现缺少对应中英文翻译的情况,这个Python脚本是用于检查字符串是否缺少了对应的翻译
- #!/usr/bin/env python
- # encoding: utf-8
- import os, sys, getopt
- import xml.dom.minidom
- import subprocess
- from xml.dom.minidom import Node
- # 判断是否是App项目依据
- Axml='AndroidManifest.xml'
- res_en_string="res/values/strings.xml"
- res_cn_string="res/values-zh-rCN/strings.xml"
- # 检查资源文件列表
- res_string_files=[res_en_string, res_cn_string]
- # Java调用字符串资源列表
- find_string_called_by_java='''find . -name .repo -prune -o -name .git -prune -o -type f -name "*\.java" -print0 | xargs -0 grep --color -n -o 'R.string[0-9A-Za-z_.-]\+'|awk -F':' '{print $3}'|sort|uniq|xargs echo'''
- def _check_string_res(path):
- """检查字符串资源调用情况
- :path: TODO
- :returns: TODO
- """
- os.chdir(path)
- if not os.path.exists(Axml):
- return
- # 输出提示
- print "\n### Processing Project: %s ..\n" % path
- # 获得字符串资源调用情况
- find_string_called_by_java_array = subprocess.Popen(find_string_called_by_java, shell=True, stdout=subprocess.PIPE).stdout.read().split(' ')
- # 逐个检查资源文件(目前检查中文、英文)
- for res_string_file in res_string_files:
- print ">>> Checking %s file .." % res_string_file
- # 解析xml文件,并保存已有资源到 names_had
- doc = xml.dom.minidom.parse(res_string_file)
- strings = doc.getElementsByTagName('string')
- names_had = []
- for string in strings:
- name = string.getAttribute('name')
- names_had.append(name)
- # 逐个检查被调用的字符串资源,不存在此资源时报Warning
- for check in find_string_called_by_java_array:
- c=check[9:].strip()
- if c not in names_had:
- print " - Warning: string name '%s' not found!!!" % c
- def usage(exitval=0):
- print "\nUsage: %s project_dir1 project_dir2 ..\n" % sys.argv[0]
- if __name__ == '__main__':
- if len(sys.argv) == 1:
- if os.path.isfile(Axml):
- _check_string_res(os.path.abspath('.'))
- else:
- usage()
- elif len(sys.argv) > 1:
- for path in sys.argv[1:]:
- if os.path.isdir(path):
- _check_string_res(os.path.abspath(path))
- else:
- print "### %s Not a directory, ignored." % path
- else:
- usage()
使用方法:
./check_string_res.py packages/apps/Settings/
./check_string_res.py packages/apps/Settings/ packages/apps/QuickSearchBox/ ..
把对应缺少的字符串补上翻译就OK,避免缺少翻译导致Android在切换语言之后出现崩溃的问题;
〖Android〗Android App项目资源字符串检查(检查是否缺少对应的翻译,导致系统切换语言后崩溃)的更多相关文章
- Android hybrid App项目构建和部分基本开发问题
1.首先是选型:Cordova+Ionic Framework,调试测试环境是Ripple Emulator.开发环境其实可以随便选,我个人选择了Eclipse,当然Android SDK+ADT也是 ...
- 包括后台的Android美食APP项目开源代码
项目简介 小食光定位为一款集美食,社交,LBS服务于一体的美食推荐APP.为你发现周边美食的同时提供一个吃货分享的平台. APP截图 功能模块 美食推荐 :提供基础的美食信息查询: 商家推荐 ...
- 9个完整android开源app项目
一.photoup 介绍: photoup 是一款开源的相册类app,主要功能是将本地图片提交到facebook上去,虽然他的功能和facebook的远程服务相关,但是本身是可以被当作一款 相册应用的 ...
- 【Android端APP 安装包检查】安装包检查具体内容及实现方法
一.安装包检查的具体包含内容有哪些? 1.安装包检查的一般内容包括: 安装包基本信息检查: 文件大小: xx MB 包名: com.xx 名称: xx 本次安装包证书与外网证书对比一致性:是 版本号 ...
- android 中的一些资源注解,让编译器帮你检查代码
android 中的一些资源注解,让编译器帮你检查代码 写方便的时候可以用注解来声明一些参数,以明确的指示参数的类型,让代码更安全.我们看到,在android源代码里大量使用了注解.我整理了一些注解如 ...
- (Android UI)Android应用程序中资源:图片、字符串、颜色、布局等
Android系统设计采用代码和布局分离的设计模式,因此在设计Android应用程序时需要遵循该设计模式. “把非代码资源(如图片和字符串常量)和代码分离开来始终是一种很好的做法.”---<An ...
- Android studio教程:[1] 创建app项目
Android studio作为面市不久的安卓开发工具,越来越受到大家的喜爱,这里我将介绍如何在Android studio中创建一个APP项目,并在以后经验中介绍其他有关Android studio ...
- android适配全机型悬浮框、视频APP项目、手势操作、Kotlin妹子App、相机图片处理等源码
Android精选源码 图片滤镜处理,相机滤镜实时处理,相机拍照录制 android仿爱壁纸App更换壁纸效果源码 基于Kotlin+MVP+Retrofit+RxJava+Glide 等架构实现短视 ...
- Android开源工具项目集合
最近因为要去外派了,工欲善其事,必先利其器!所以又回顾了一下自己github上所收藏的项目,也算是温故而知新吧. 最流行的Android组件大全 http://www.open-open.com/li ...
随机推荐
- 【Algorithm | 链表】单链表“环”、“环的起点”、“环的长度”问题
参考资料 • Floyd判圈算法 { 链接 } • 单链表“环”.“环的起点”.环的长度”问题 { 链接 } 链表环的问题 一.判断链表有换 使用两个指针slow和fast.两个指针开始时均在头节点处 ...
- Emmet Cheat Sheet(Sublime编辑)
快捷创建html标签 官网的Emmet Cheat Sheet :http://docs.emmet.io/cheat-sheet/ https://files.cnblogs.com/files/t ...
- Pig和Hive的对比
Pig Pig是一种编程语言,它简化了Hadoop常见的工作任务.Pig可加载数据.表达转换数据以及存储最终结果.Pig内置的操作使得半结构化数据变得有意义(如日志文件).同时Pig可扩展使用Java ...
- 最长上升序列 LCS LIS
子序列问题 (一)一个序列中的最长上升子序列(LISLIS) n2做法 直接dp即可: ;i<=n;i++) { dp[i]=;//初始化 ;j<i;j++)//枚举i之前的每一个j ) ...
- 093实战 Nginx日志切割,以及脚本上传nginx的切割日志
一:日志切割步骤 命令都在root下进行 1.创建目录 mkdir -p /etc/opt/modules/bin ## 创建文件夹 2.上传cut 3.观察目录 4.修改的cut文件 5.检测 需要 ...
- fmod()函数 (对浮点数取模)
头文件:#include <math.h> fmod() 用来对浮点数进行取模(求余),其原型为: double fmod (double x); 设返回值为 ret,那么 x = ...
- 从源码看Spring Boot 2.0.1
Spring Boot 命名配置很少,却可以做到和其他配置复杂的框架相同的功能工作,从源码来看是怎么做到的. 我这里使用的Spring Boot版本是 2.0.1.RELEASE Spring Boo ...
- js数据结构之hash散列的详细实现方法
hash散列中需要确定key和value的唯一确定关系. hash散列便于快速的插入删除和修改,不便于查找最大值等其他操作 以下为字符和数字的hash散列: function HashTable () ...
- python数据分析之pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
1 引言 Pandas是作为Python数据分析著名的工具包,提供了多种数据选取的方法,方便实用.本文主要介绍Pandas的几种数据选取的方法. Pandas中,数据主要保存为Dataframe和Se ...
- vue 如何拿到后台传回的富文本中的img,进行9宫格排列展示以及相关处理
描述: res.data.list 返回的数组, 数组中的每个对象有一个 content,就是传回来的富文本的内容,要拿到这里面的所有的img,进行9宫格排列处理: 1.let img = this. ...