APK 本地化

一个APK反编译利器Apktool(android汉化)
2010-07-19 18:52
转载自: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罢了

转载于:https://www.cnblogs.com/moonvan/archive/2011/04/15/2017039.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/275542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux manjaro系统安装后无法连接wifi,解决方案

2019独角兽企业重金招聘Python工程师标准>>> 笔记本为联想 thinkpad E480 首先通过命令lspci -k看一下原因是否为缺少wifi驱动&#xff0c;如下&#xff0c;如果没有Kernel driver in use&#xff0c;说明缺少驱动。05:00.0 Network controller: Realtek Semiconduc…

检测输入路径是否存在错误_为什么存在用户输入错误

检测输入路径是否存在错误Errors are a fact of life when using almost any type of software. Forms are the worst though. Nothing is more frustrating than filling out a form and getting a robotic message from the computer telling you that you have failed, plea…

若川邀你进 源码共读 群~长期交流学习

大家好&#xff0c;我是若川。这是一个愉快的周六~估计还是有很多读者不知道我。若川名字由来是取自&#xff1a;上善若水&#xff0c;海纳百川。顺便放两篇文章。我读源码的经历&#xff0c;跟各位读者朋友分享下公众号运营策略加我微信进 源码共读 群最近组织了近200人每周源…

2005 打开 2010 项目经验总结

下面是网上的直接复制粘贴&#xff1a;网址为 http://hi.baidu.com/zealot886/blog/item/7364d4266a2a1555ac34dea6.html/cmtid/65ff140a660e02246159f3db 这里是我自己的总结 &#xff08; 1、用vs2010 将该解决方案的所有 项目都改为 net 2.0&#xff08;方法&#xff0c;右击…

读取linux的运行状态,Linux下安装使用sar工具来获取系统运行状态

sar 找出系统瓶颈的利器sar是System Activity Reporter(系统活动情况报告)的缩写。sar工具将对系统当前的状态进行取样&#xff0c;然后通过计算数据和比例来表达系统的当前运行状态。它的 特点是可以连续对系统取样&#xff0c;获得大量的取样数据&#xff1b;取样数据和分析的…

说说 Spring 的事务同步管理器

Spring 将 JDBC 的 Connection、Hibernate 的 Session 等访问数据库的连接或者会话对象统称为资源&#xff0c;这些资源在同一时刻是不能多线程共享的 。 为了让 DAO 或 Service 类可以实现单例模式&#xff0c; Spring 的事务同步管理类 org.springframework.transaction.supp…

错过校招_我们在用户测试中容易错过的事情

错过校招What makes a tool well designed? As a designer, I’ve thought about this question for a long time, and over the past few years I’ve developed a system that I now use with every new project I approach, from small startups to large companies like L…

这些 JS 中强大的操作符,总有几个你没听说过

大家好&#xff0c;我是若川。今天推荐一篇相对简单些的文章。大家应该都知道了我最近组织了源码共读活动&#xff0c; 有小伙伴表示读源码上瘾&#xff0c;也很有收获。工作0-5年都可以参与。感兴趣可以加我微信 ruochuan12 私信 源码 进群。1. 数值分割符 _2. 逗号运算符 ,3.…

Class 创建性能大比拼(反射,泛型反射,泛型创建,缓存Emit,非缓存Emit)

一说到反射&#xff0c;很多人都想到了性能&#xff0c;更有甚者直接说“慎用反射&#xff0c;遗患无穷”&#xff0c;“用反射&#xff0c;感觉怎么像是退步啊&#xff5e;”&#xff0c;看到这种言论&#xff0c;直接把反射妖魔化了&#xff0c;如果这种言论长此以往&#xf…

es6冲刺01

1、let/const 1)作用域&#xff1a;es5中有全局作用域、函数作用域。es6中新增了块级作用域 2&#xff09;let定义的变量在所在块级作用域外失效&#xff0c;严格模式下失效后直接报错&#xff0c; 且不允许重复声明同名变量 3)const用于声明常量&#xff0c;声明时必须赋值&am…

linux网卡固件名,修改CentOS7网卡名称为传统名称eth0格式

使用CentOS7以前系统的小伙伴装完CentOS7以后发现了一个问题&#xff0c;那就是网卡名改变为了“en016777736”&#xff0c;而不是以前的eth0的简易模式了&#xff0c;如图&#xff1a;以往的CentOS7以前的系统网卡命名虽然简单方便&#xff0c;但也会带来一些问题&#xff0c;…

Baymard Institute:基于UX的最佳实践的光荣的,循证的工具

重点 (Top highlight)I realized I wanted to write this piece when I mentioned the Baymard Institute to a User Researcher with 10 years of experience and they had no idea what I was talking about. They aren’t alone! I’ve gotten plenty of raised eyebrows on…

Vue 3.2 发布了,那尤雨溪是怎么发布 Vue.js 的?

1. 前言大家好&#xff0c;我是若川。最近组织了源码共读活动&#xff0c;感兴趣的可以加我微信 ruochuan12&#xff0c;长期交流学习。之前写的《学习源码整体架构系列》 包含jQuery、underscore、lodash、vuex、sentry、axios、redux、koa、vue-devtools、vuex4十篇源码文章。…

wireshark使用教程 linux,Linux入门教程:ubuntu下安装wireshark(以及配置非root),这个强大的工具可以捕...

Linux入门教程:ubuntu下安装wireshark(以及配置非root),这个强大的工具可以捕Wireshark是世界上最流行的网络分析工具。这个强大的工具可以捕捉网络中的数据&#xff0c;并为用户提供关于网络和上层协议的各种信息。与很多其他网络工具一样&#xff0c;Wireshark也使用pcap net…

IronPython和C#执行速度对比

其实我自己对执行速度这个问题本来并没有什么兴趣&#xff0c;因为以前的经验告诉我&#xff1a;除非是运算密集型的程序&#xff0c;否则脚本语言和编译型语言使用起来速度没有多大差别。但是我们公司有个人知道我的想法以后&#xff0c;天天在我耳边嚷嚷脚本运行速度太慢&…

基于超级账本Fabric的供应链跟踪解决方案【开源】

2019独角兽企业重金招聘Python工程师标准>>> 本项目为基于Hyperledger Fabric区块链的供应链资产跟踪解决方案&#xff0c;项目主要包括链码和Web应用两部分。Fabric链码采用GOLANG开发&#xff0c;负责维护资产的状态&#xff0c;后台为采用Node.js开发的Web应用&a…

同理心案例及故事分享_神经形态,视觉可及性和同理心

同理心案例及故事分享“A good UX designer has empathy”.“优秀的UX设计人员具有同理心”。 This is something every UX designer has heard at some point in their career. Empathy helps us get into the mindset of the user and build solutions that solve real probl…

纯CSS实现beautiful按钮

大家好&#xff0c;我是若川。邀你进源码共读群学习交流。今天分享一篇好文。可收藏&#xff5e;近期工作中遇到一个需求——实现一些酷炫的按钮&#xff0c;看到效果图之后&#xff0c;按钮确实漂亮&#xff0c;有弹跳、颜色渐变、扫光、霓虹灯&#xff0c;瞬间激起了我的好奇…

linux的内核有多小,Linux 内核有小bug?

今天读着读着Linux代码&#xff0c;竟然无意中发现Linux 0.11内核有个小bug&#xff0c;呵呵&#xff0c;人非圣贤孰能无过。// 在目录项数据块中搜索匹配指定文件名的目录项&#xff0c;首先让de 指向数据块&#xff0c;并在不超过目录中目录项数// 的条件下&#xff0c;循环执…

菜单窗口_菜单

菜单窗口The Hamburger Menu widget is on every other site nowadays. It has become synonymous with the web and, perhaps even more so, with web development. Have, for instance, a look at Dribbble or Codepen. There you’ll find a fair share of examples. They c…