Android多语言国际化适配

一、6.0及以下语言设置界面

在Android 6.0及以前的语言设置都是单一的语言,只能选一种语言

二、7.0及以下多国语言设置界面

在Android 7.0开始允许用户在设置的语言配置中选择多个语言设置

从上面测试种我们可以得出在Android 7.0中资源加载的结论有:

App资源的加载首先会去寻找系统语言对应的资源(简体中文),如果找不到会去找系统语言所属的语言(中文),如果没找到就会去找在设置中的其他语言(美国英语)看看有没有对应的资源,如果也没有就会去加载默认资源。

App资源的加载首先会去寻找系统语言对应的资源(英国英文),如果没找到的话,会去寻找系统语言所属的语言(英文),如果也没找到的话,就会去寻找系统语言所属的语言的其他分支(美国英文)。

结合以上两条结论可以推出:首先App会去寻找与系统设置的第一语言最匹配的资源,如果没找到就会去寻找系统语言所属的语言的资源,也没找到的话就去找系统语言所属的语言的其他分支资源,如果第一语言的资源都没有找到,就会去看看有没有设置多个语言,如果有就看看有没有和第二语言最匹配的资源,如果没有就会去寻找第二语言所属的语言的资源,还没有的话就去寻找第二语言所属的语言的其他分支的资源,如果也没有,就去找第三语言、第四语言等等语言的资源,如果都没有就去加载默认资源,如果默认资源也没有就异常了。

三、简繁语言

不同国家或地区可能采用不同类型的中文 (语言)。一般情况而言简繁可以按照地区区分

然而我们通过设备可以对香港地区、澳门地区设置简体中文

当应用启动的时候,系统会根据当前的语言环境自动去匹配对应的values文件夹,匹配规则如下:
7.0之前,先匹配与当前应用Configuration语言一致的资源(language,country相同),如没有再匹配language一致的资源(命名中只有language,如values-en),如无则使用默认资源。
7.0之后,系统语言设置中可添加多个语言,优先匹配规则与上述一样,不过添加了可匹配同一语言不同国家的资源,即language与country都没匹配上,也可匹配同一个language但不同country的资源,即是同一父项下的不同子项。
如果第一语言没有对应资源匹配,可继续查找匹配第二位的语言,这就是语言列表的作用。如果列表中的语言都没匹配上,则使用默认资源。
特别注意点:简体中文与繁体中文不是同一体系的.
示例1:语言设置为简体中文,没有values-zh-rCN的资源,即使有values-zh-rTW或者values-zh-rHK的资源也不会使用,而会使用默认的资源。
示例2:语言设置为繁体中文,没有values-zh-rTW的资源,即使有values-zh或values-zh-rCN的资源也不会使用,而会使用默认资源。

参考:
Android多语言国际化适配(兼容7.0):https://blog.csdn.net/pigdreams/article/details/81277110
Android 7.0多语言支持开发浅析:https://blog.csdn.net/cekiasoo/article/details/53012646
保留指定语言:https://developer.android.com/studio/build/shrink-code


快速查找可执行文件内部信息

iOS App提交审核后,有时被拒是因为某个方法有问题,或者调用了某些私有API,有时使用私有API不是自己的业务代码而是其他第三方SDK所致,为了快速定位问题点,可以用命令stringsotool

主要用法:

快速查找字符串

strings是可以查看任意文件的任意字符串,strings在文件中查找可打印的字符串。字符串是4个或更多可打印字符的任意序列,以换行符或空字符结束。 strings命令对识别随机对象文件有用。

strings {file}  | grep -i {keyword}

快速查找方法或类

otool: 针对目标文件的展示工具(object file displaying tool)。

使用otool可以对指定的目标文件(object file)或库文件中的特定部分以特定的形式展现出来。otool能够理解Mach-O格式和任何通用文件格式。

赖库查询

otool -L {file}

可以看到应用运行所需要的系统库,这样依赖了哪些系统库,版本号分别是多少一目了然。

汇编码

查看依赖系统库仅仅是其中的一小功能。otool命令配上不同的参数可以发挥很强大的功用。(慎用,耗CPU)

otool -tV {file}

则整个ARM的汇编码就都显示出来了,能看到ARM的汇编码。

Mach-O headers

otool -h {file}

类的继承结构和引用关系

 otool -ov {file} 

可以根据结构来分析调用关系和继承关系。

Class Dump

使用class-dump-xx.dmg 链接:http://stevenygard.com/projects/class-dump/

使用方法:https://www.jianshu.com/p/c4272fce6703