android 汉化

来源:互联网 发布:搜索东西的软件 编辑:程序博客网 时间:2024/05/16 11:42
apktool和签名
android软件apk的汉化。主要流程是:反编译。加入中文语言包。编译。签名。四个步骤。


谷歌有提供的反编译工具:apktool 。http://code.google.com/p/android-apktool/

官方提供的信息是(不完整翻译):重建,编译和反编译第三方,闭源,二进制 android应用程序。提供逐步调试 smali 代码。为某些重复性工作提供帮助。如批量构建app。

要求:
    1. jre 1.6 以或以上。
    2.  环境变量path中含有aapt。(aapt:android asset packaging tool 在SDK的platfomr-tools目录下。用来查看,创建,更新,zip,jar或者apk。也可以将资源文件编译成二进制文件。EclipseADT或者BuidScript都会调用这个程序创建apk)
    3. 基本要求:知道什么是SDK,aapt,PATH,smali 。

安装:
    直接下载解压就能用。不过也有安装版的,满足个别有安装癖的人。新手可以直接把解压出来的一堆扔到c:\windows目录下面,免去了配置环境变量的麻烦。

安装framework:(http://code.google.com/p/android-apktool/wiki/FrameworkFiles)
    android 应用程序需要调用一些系统的资源和代码。由于厂商都会有所改动,所以apktool 需要framework 文件来反编译或者编译程序。
apktool 默认内置标准framework框架。大部分应用程序不需要安装framework框架。但是对于某些厂商,如HTC 和三星等,需要安装他们的framework框架。

    提取framework文件:
    1.从刷机包提取:可以从刷机包里提取,用好压解压就行了。一般是 factorysfs.rfs 文件,这个文件是个镜像。对应系统 /system 分区。 用Ultra ISO 打开后,到framework文件夹下,提取framework-res.apk ,有些厂商还要提取twframework-res.apk,对这两个文件还没有深入研究。不过听说面试的时候会询问程序员对框架的理解,估计可能是对这个的理解。

    2.从手机提取: 执行命令(系统要有SDK)
adb pull /system/framework/framework-res.apk  c:\  
adb pull /system/framework/framework-res.apk  c:\  

    3.或者用ES文件管理器,RE管理器提取也行。这个最简单。推荐新手通过这个提取。要不要root权限我不记得了。

极少数个别厂商可能会把framework文件放在/data/system-framework/ 文件夹下面或者其他地方,估计是因为systm分区空间不足,这个情况在早期手机配置不高的情况下出现过,现在基本很少见。

    安装/注册 framework :
apktool if framework-res.apk
apktool if twframework-res.apk 

if 应该是 inputfiles缩写。

反编译apk:

apktool d     ***.apk     c:\app\
  
具体怎么用看手册,直接输入apktool也行。

windows下有个XDA的大牛写的批处理工具,叫apkmanager,可以直接下载下来,集成了apktool。那个用着很简单。适合新手使用。
教程也很多。教程之一:http://www.goophone.hk/bbs/forum.php?mod=viewthread&tid=3589&page=1

修改汉化:

编译完了就修改汉化吧。到res (resoures)文件夹下面 ,加入中文包,values-zh-rCN文件夹,到values文件夹下面复制一份strings.xml过来,其他的弄不弄都行。values 文件夹存放的都是系统默认值。汉化主要是把strings.xml里<string></string>标签之间的英文翻译。体力活。一般的framework得2000行左右。

还可以改一下其他的图片资源阿,布局阿什么的。

之后就是编译了:

apktool b c:\app 

编译完了就是签名。对于大部分apk可以使用自带的证书进行签名。但是如果导入了framework文件,就需要换个方式了。咱们搞不到厂商的证书。百度之,说用好压打开编译好的未签名的apk 和 原来的apk 然后全选,替换掉原版的东西,这样就能保留签名信息了。什么原理不知道。也是接下来研究的方向。mark 一下。

签名完了导入手机就行了。一般的不用重启。framework要重启一下。建议重启下比较好。

*重启的时候,个别内核可能会检查文件完整性,会报程序丢失数据等错误,有些做的好的内核特别是CM的啊等,可能会备份原来的apk,检查到系统文件被修改或者数据丢失什么的就认为文件出错,会恢复备份的apk,所以,重启时留点心。别扔那儿就不管了。


签名

    准备知识:当要发布一个软件或者自制的rom时,就需要一个使用了私钥的证书来为apk或者zip文件进行签名。
有些厂商recovery或者bootloader会检测刷机包的签名,因为密钥都是私有的,所以刷机包没法搞签名。也就无法自制民间rom。像htc和moto现在都官方宣布解锁bootloader了。三星和索爱在这个问题上还很暧昧。(还有一种常说的解锁是解网络锁。注意区别)。一般用keytool创建证书,jarsigner进行签名。

keytool:
sun提供的用户生成私有数字证书的工具。
http://docs.oracle.com/javase/1.4.2/docs/tooldocs/windows/keytool.html
jarsigner:
sun提供的用于签名jar和检测jar完整性工具。
http://docs.oracle.com/javase/1.3/docs/tooldocs/win32/jarsigner.html

了解一下就好。windows下面的apkmanager都集成了。基本用不着自己敲命令行。

好吧。先到这儿吧。

接下来工作:
1.配置linux下apktool 使用,熟悉keytool和jarsigner的使用。
2.尝试用php写个汉化xml的脚本。看看调用谷歌翻译的api
3.尝试用java写个汉化xml的小工具,要有词典什么的。