联系方式:
一、为什么要国际化
全球化的Internet需要全球化的软件,全球化的软件自然也就意味着软件自身能够适用于不同的地去和市场,Android应用自然也不例外。
引入国际化的目的是为了在不改变程序自身逻辑功能的前提下提供自适应的、更友好的用户界面,这样我们无需为不同语言的国家或地区单独编写一套程序,更何况同一个应用程序的代码逻辑几乎都是一模一样的,仅仅为了更改语言而单独编写编译太不值得,这种情况下就用到了我们的应用国际化。
二、为Android应用提供国际化资源
为Android提供国际化不必像Java那样需要将程序中的标签、提示信息等放在资源文件中,程序需要支持那些国家、语言环境就需要提供相应的资源文件,因为Android本身就采用了XML资源文件来管理所有的字符串消息,我们只需为各消息提供不同国家、语言对应的内容即可。
例如:如果我们希望某个应用支持简体中文、美式英语两种语言环境,那么就在Res目录下添加values-zh-rCN、values-en-rUS两个目录即可。
如果希望应用程序的图片也能随国家、语言环境改变,那么为Drawable目录添加几个不同的语言国家版本就行了。
如果还需为Drawable目录按分辨率提供文件夹,则可以再文件夹后面追加分辨率信息,比如drawable-zh-rCN-mdpi、drawable-zh-rCN-hdpi等。
如下图即是AndroidStudio中为应用进行国际化操作后的视图,甚至在这里我们可以看到该应用还为不同手机不同的Android版本、不同的分辨率提供了不同样式、不同尺寸的支持:
三、常见的国际化文件夹名称
- zh_cn: 简体中文
- zh_hk: 繁体中文(中国香港)
- zh_tw: 繁体中文(中国台湾地区)
- en-hk: 英语(香港)
- en_us: 英语(美国)
- en_gb: 英语(英国)
- en_ww: 英语(全球)
- ja_jp: 日语(日本)
- ko_kr: 韩文(韩国)
四、代码混淆
我们都知道Java是一种跨平台的、解释型语言,Java 源代码编译成中间”字节码”存储于 class 文件中。
由于跨平台的需要,Java 字节码中包括了很多源代码信息,如变量名、方法名,并且通过这些名称来访问变量和方法,这些符号带有许多语义信息,很容易被反编译成 Java 源代码。为了防止这种现象,我们可以使用 Java 混淆器对 Java 字节码进行混淆。
混淆就是对发布出去的程序进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能,而混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义。
被混淆过的程序代码,仍然遵照原来的档案格式和指令集,执行结果也与混淆前一样,只是混淆器将代码中的所有变量、函数、类的名称变为简短的英文字母代号,在缺乏相应的函数名和程序注释的况下,即使被反编译,也将难以阅读。
同时混淆是不可逆的,在混淆的过程中一些不影响正常运行的信息将永久丢失,这些信息的丢失使程序变得更加难以理解。
所以为什么需要代码混淆呢?
原因很简单,我们的apk很容易被反编译出来,我们写的代码都会被看到,因此我们需要在编译过程中对代码进行一定程度的混淆,使得别人不能反编译不出我们的代码。
另外混淆器的作用不仅仅是保护代码&#