转载自: http://blog.sina.com.cn/s/blog_5752764e0100kv34.html

APK 本地化

[ http://www.andmoto.com/viewthread.php?tid=3873 ] 说起APK的汉化,目前大部分教程都是让用Hex Workshop或者Android ResEdit来做。但是实际操作后,就会发现:
1、Hex Workshop操作繁琐,经常出现搜不到想要修改的字符的情况;
2、Android ResEdit简单用用可以,修改稍微复杂一点就会出现整条整条丢字符串的情况;并且新内容不能比原内容长——谁能保证我的本地化语言就一定比原来的短 呢?

现在好了,老外写的《android-apktool》软件,可以帮助我们把APK反编译,生成程序的源代码和图片、XML配置、语言资源等文件。我们对 图片和语言资源等文件修改后,可以再把它们编译打包成APK,签名后就是手机可以安装的本地化/修正版APK了。

《android-apktool》软件软件可以访问它的主页http://code.google.com/p/android-apktool/ 下 载获得,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip两个包都要下。下载 后解开,为了方便使用,按作者的推荐把得到的4个文件复制到C:/Windows文件夹里。

这个工具是Java写的,需要你的电脑安装了JRE或者JDK,并在系统环境变量Path里加入java.exe所在路径。

以上准备工作做好后,就可以用它来反编译APK了。这里我用动态壁纸的APK来做示范。

如果用过动态壁纸,你也许会发现在设置壁纸时,界面的显示有点问题:“动态壁纸”,在手机上中文显示为“当前壁纸”。这是“动态壁纸选择 器”LiveWallpapersPicker.apk的翻译错误造成的。

(假设LiveWallpapersPicker.apk放在C盘根目录)

开始 > 运行,输入cmd,回车。
  1. apktool d "C:/LiveWallpapersPicker.apk" "C:/LiveWallpapersPicker"
复制代码 (命令行解释:apktool d 要反编译的文件 输出文件夹)

这样,LiveWallpapersPicker.apk就被反编译了,输出内容在C:/LiveWallpapersPicker文件夹里。

打开C:/LiveWallpapersPicker文件夹,我们发现里面有一些XML文件和一些文件夹。绝大部分情况下,语言和图片资源都在res文件 夹里,我们这个例子当然不例外。

打开res文件夹,可以其中又是很多文件夹。(又是)绝大部分情况下,语言资源都放在values*文件夹里。比如说values放默认语言(英语居 多),values-de放德语,values-fr放法语等等。一般我们关心的是values-zh-rCN(简体中文)和values-zh- rTW(繁体中文)。

打开values-zh-rCN文件夹,其中有个strings.xml。打开看看:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="application_name">动态壁纸选择器</string>
<string name="live_wallpaper_picker_title">当前壁纸</string>
<string name="live_wallpaper_preview_title">当前壁纸预览</string>
<string name="configure_wallpaper">设置...</string>
<string name="wallpaper_instructions">设置壁纸</string>
<string name="live_wallpaper_empty">无当前壁纸。</string>
<string name="set_live_wallpaper">设置壁纸</string>
<string name="wallpaper_title_and_author">%1$s提供者:%2$s</string>
<string name="live_wallpaper_loading">正在载入当前壁纸…</string>
</resources>


很好,就是它了。把“当前壁纸”都改为“动态壁纸”,再检查和修正标点——中文内容用中文标点 (强烈呼吁大家注意标点问题,目前马大哈太多了) 后, 保存。

本例改这么多就够了。其它复杂的APK建议把res文件夹里的内容都检查下,至少你关心的语言文件夹里的内容都检查下。

改完后,就可以重打包了。还是在cmd命令行里,输入:
  1. apktool b "C:/LiveWallpapersPicker"
复制代码 (命令行解释:apktool b 要打包内容所在文件夹)
就可以了。生成的APK在C:/LiveWallpapersPicker/dist文件夹里,叫out.apk。

这个out.apk是没有签名的,所以不能直接装到手机里。签名工具和方法见 http://www.hiapk.com/bbs/thread-21261-1-1.html , 这里不说了。

签名后得到的APK,就是可以装到手机里的了。

操练:去掉免费版软件的广告条
[ http://bbs.ophone8.net/viewthread.php?tid=18082 ]
打开google code发现Apktool更新了,居然支持win了。。。。
那本文就是一篇介绍在windows环境下使用Apktool的笔记。
安装

1.先装JAVA环境,JDK/JRE都行,官网下载 装过的就跳过吧

2.下载apktool.jar及相关文件,这里apktool-1.0.0.tar.bz2 apktool-install-windows-2.1_r01-1.zip


3.解压apktool.jar到 C:/Windows 解压apktool-install-windows.zip到任意文件夹(例如E盘根目录)
4.Win+R 运行CMD,用cd命令转到apktool-install-windows所在文件夹,输入apktool看看。会列出一些帮助的话就成功了。 Apktool 命令

apktool d XXX.apk ABC 反编译 XXX.apk到文件夹ABC
apktool b ABC 从文件夹ABC重建APK,输出到ABC/dist/out.apk
然后我们反编译一枚软件玩玩…
AutoMemoryManager的免费版底部有一条广告,去掉它吧。
把com.lim.android.automemman.apk放到同文件夹(我的就是E盘根目录)
Win+R 运行CMD
E:<回车>
E:/>apktool d com.lim.android.automemman.apk AMM <回车>
I: Baksmaling…
I: Decoding resource table…
I: Decoding resources…
I: Copying assets and libs…
现在文件被decode到E:/AMM了,打开E:/AMM/res/layout/main.xml看,所有都可见了吧~
编辑第59行

<com.admob.android.ads.AdView android:id=”@id/ad” android:layout_width=”fill_parent” android:layout_height=”wrap_content” admobsdk:backgroundColor=”#ff000000″ admobsdk:textColor=”#ffffffff” admobsdk:keywords=”Android application” />

改为

<com.admob.android.ads.AdView android:id=”@id/ad” android:layout_width=”0.0dip” android:layout_height=”0.0dip” admobsdk:backgroundColor=”#ff000000″ admobsdk:textColor=”#ffffffff” admobsdk:keywords=”Android application” />

然后CMD输入
E:/>apktool b AMM
I: Checking whether sources has changed…
I: Smaling…
I: Checking whether resources has changed…
I: Building resources…
I: Building apk file…
用Auto-sign签名E:/AMM/dist/out.apk 安装
这样广告就不见了

再看,嘿嘿~很帅吧…
这其实就是改了AndroidManifest.xml里的ADmob广告ID罢了

更多相关文章

  1. Android(安卓)开发环境入门
  2. 读取android手机流量信息
  3. Android中删除常用联系人(下)
  4. Android(安卓)Studio sdk tools文件夹下文件缺失问题以及解决方
  5. Android中xml文件解析 SAX方式 与 PULL方式
  6. android的各种*.img 文件
  7. Android常用命令
  8. Android学习笔记(九) Android文件读写操作
  9. NPM 和webpack 的基础使用

随机推荐

  1. SSL 证书选择指南
  2. 一文带你理解java中的同步工具类CountDow
  3. 你应该要理解的java并发关键字volatile
  4. android通过服务实现消息推送
  5. 一个同步工具类CyclicBarrier的详解(干货
  6. java中一个重要的原子类AtomicInteger详
  7. Docker Swarm 下搭建 MongoDB 分片+副本+
  8. 微服务初级设计指南
  9. 基于角色的访问控制
  10. java并发编程CAS机制原理分析