前面有人写过了,我就直接引用了,大家就不乱找了。以后有问题再继续更新。 
一.混淆打包、编译 
1.Android 代码混淆。http://blog.csdn.net/zjclugger/article/details/41700041 
2.Android 混淆代码总结。http://blog.csdn.net/lovexjyong/article/details/24652085 
3.代码混淆详解。http://blog.csdn.net/z157794218/article/details/40039785 
4. Android开发把项目打包成apk。http://blog.csdn.net/luoyin22/article/details/7862742 
二.反编译及处理 
1. Android APK反编译。http://blog.csdn.net/vipzjyno1/article/details/21039349/ 
2. apk反编译获取完整源码 及 apk反编译后的处理 http://blog.csdn.net/wh_19910525/article/details/7915738/

 
 

1) 汉化apk应用程序

汉化apk就是 把 反编译之后apk 下的res/values文件夹内string.xml文件的内容 汉化(注意:我们的例子里 只有一个string.xml,有时候 可能 不止 一个 *xml 文件,那么 我们 需要把 相应的 位置 都汉化)。

一个apk应用在汉化后应该能在英文和中文系统下都能使用。/values目录下的是英文语言包。为了建一个中文语言包,与/values并行创建一个子文件夹:/values-zh-rCN(必须用这个文件名!)。这里values-zh是中国地区语言包(包含港澳台及内地),values-zh-rCN是中文简体语言包(只包含内地),values-zh-rTW是中文繁体语言包(港澳台)。
把/values文件夹里的strings.xml等语言文件复制进/values-zh-rCN。在我们的例子中,只有strings.xml一个文件。
进入/values-zh-rCN,用文本编辑器打开strings.xml,然后你就翻译吧,把英文描述译成相应的中文。

高级内容:以上的汉化是修改string.xml,把英文译成相应的中文就好了,然后打包和签名。但是,在有些apk文件里,所显示的字符文字并不都在xml文件里。apk原作者把某些字符写在代码中。反编译后,存放在/smali文件夹里。一层一层地找下去,最后你会看到一大堆Dalvik码文件,都是以.smali为文件扩展名。举一个例子,用文本编辑器打开某个.smali文件,看到:
const-string v5, "ServiceMode"
“ServiceMode”会在apk执行时显示为英文。因此,需要汉化。在I897 ROM里,用工程模式特殊代码看到的多半属于这一类。汉译起来非常花时间。我们要把ServiceMode译成“服务模式”。怎么处理呢?你不能把const-string v5, "ServiceMode"直接改成const-string v5, "服务模式"。打包会失败的。正确的做法是把相应的中文字符用16进制的unicode来表示。例如:把“服务模式”用16进制的unicode表示就是\u670d\u52a1\u6a21\u5f0f 。每一个汉字用4个字符表示,\u表示为16进制的unicode码。好了,正确的汉译是:
const-string v5, "\u670d\u52a1\u6a21\u5f0f "
网上有中文字符与16进制unicode码的对照表或转换工具。

2) 修改图标标签

每一个apk文件都有一个“图标标签”。将apk程序安装进手机后,在图标下面显示图标标签文字。这个图标标签的内容是可以修改的。在\res\values下找到strings.xml,修改其中的一行:
<string name="app_name">图标标签</string>
例如:<string name="app_name">静音启动</string>
同理,如果是窗口小插件,要修改widget_name。

3) 去掉apk中的广告

有很多apk应用都带有广告。为了去掉程序中的广告,要修改main.xml文件与广告有关的内容。在/res目录下找到文件main.xml。通常在/layout目录下,有时也被放在其它目录下。甚至,有时不存在main.xml文件,广告行被放在其它xml文件内。只能细心逐个文件进行查找。无论哪一种情况,查看其内容,你会看到有一项类似的命令如下。这就是广告显示。
<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” /> 
可以看到,关键是要把fill_parent改为0.0dip,把wrap_content改为0.0dip,其它内容保持不变即可。这种改法就是不给广告显示空间,当然你就看不到广告了。

最新文章

  1. 关于for循环中,定义的i的作用域的问题。
  2. LINQ to SQL语句(16)之对象标识
  3. MFC CEdit 自动换行功能
  4. C++矢量图形库系列(1)——矢量图形库乱谈(转)
  5. UEditor上传图片被压缩得模糊的解决方法
  6. Android 滑动效果入门篇(二)—— Gallery
  7. usaco 打扫食槽
  8. SPSS与聚类分析
  9. Lucene.Net 2.3.1开发介绍 —— 三、索引(四)
  10. Mybatis分页插件更新
  11. EZOJ 网同14(蛋蛋与北大信科-Splay的颜色分离,寻找结点所在子树)
  12. Y1E001 HDI二阶板、三阶板
  13. SQL 2016 正式版 安装过程
  14. Flask-ORM-数据库的对象关系映射模型-备忘
  15. 【BZOJ5019】[SNOI2017]遗失的答案(FWT,动态规划)
  16. win10 +python3.6环境下安装opencv以及pycharm导入cv2有问题的解决办法
  17. oracle合并语句
  18. Android 开发工具类 20_DOMPersonService
  19. 0, \0, NULL
  20. 【Android】10.5 滚动视图(RecyclerView)

热门文章

  1. ggplot2笔记
  2. EL表达式简单总结
  3. 【转载】GAWK AWK工具使用手册
  4. JS 的私有成员为什么钦定了 #?
  5. AcWing95. 费解的开关 枚举+位运算
  6. @codeforces - 1209H@ Moving Walkways
  7. oracle函数 INSTRB(C1,C2[,I[,J]])
  8. es6 默认参数、rest参数、扩展运算符
  9. 模板—tarjan求割边
  10. iptables 防止DoS攻击