您的位置:首页 > 其它

安卓APK文件结构解析 怎样去除内置广告 及修改图标和文字

2016-01-13 09:56 537 查看
先学习基础知识:

1、APK文件结构



(1).AndroidManifest.xml 

       该文件是每个应用都必须定义和包含的,它描述了应用的名字、版本、权限、引用的库文件等等信息,如要把apk上传到Google Market上,也要对这个xml做一些配置。在apk中的AndroidManifest.xml是经过压缩的,可以通过AXMLPrinter2工具解开,具体命令为:java -jar AXMLPrinter2.jar AndroidManifest.xml 
(2).META-INF目录 

       META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。在eclipse编译生成一个apk包时,会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。这就保证了apk包里的文件不能被随意替换。比如拿到一个apk包后,如果想要替换里面的一幅图片,一段代码, 或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给病毒感染和恶意修改增加了难度,有助于保护系统的安全。软件修改后需要将里面的证书文件删除(***.RSA、***.SF、***.MF三个文件)再重新签名,否则软件无法安装。

(3).res目录 

       res目录存放资源文件。包括图片,字符串等等。res文件夹里存放的大部分是软件所需的资源及布局文件(drawable存放资源、layout、xml存放布局文件***.xml),部分需要汉化的单词、语句会在这些***.xml文件里。

(4).lib目录 

       lib目录下的子目录armeabi存放的是一些so文件。这个地方多讲几句,都是在开发过程中摸索出来的。eclipse在打包的时候会根据文件名的命名规则(lib****.so)去打包so文件,开头和结尾必须分别为“lib”和“.so”,否则是不会打包到apk文件中的。其他非eclipse开发环境没有测试过。如果你是用SDK和NDK开发的话,这部分很重要,甚至可以通过把一些不是so文件的文件通过改名打包到apk中,具体能干些什么那就看你想干什么了。

(5).assets目录 
       assets目录可以存放一些配置文件,这些文件的内容在程序运行过程中可以通过相关的API获得。具体的方法可以参考SDK中的例子:在sdk的 \SDK\1.6\android-sdk-windows-1.6_r1\platforms\android-1.6\samples\ApiDemos 例子中,有个com.example..android.apis.content 的例子,在这个例子中他把一个text文件放到工程的asset目录下,然后把这个txt当作普通文件处理。处理的过程在ReadAsset.java
中。同理,asset也可以放置其他文件。 

(6).classes.dex文件 

       classes.dex是java源码编译后生成的java字节码文件。但由于Android使用的dalvik虚拟机与标准的java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。目前常见的java反编译工具都不能处理dex文件。Android模拟器中提供了一个dex文件的反编译工具,dexdump。用法为首先启动Android模拟器,把要查看的dex文件用adb push上传的模拟器中,然后通过adb shell登录,找到要查看的dex文件,执行dexdump
xxx.dex。另,有人介绍到Dedexer是目前在网上能找到的唯一一个反编译dex文件的开源工具,需要自己编译源代码。classes.dex文件是Java源码编译后的代码文件。通常该文件里都有单词、语句需要汉化。

(7).resources.arsc 

       编译后的二进制资源文件。resources.arsc文件是编译后的资源文件,大多数情况下,需要汉化的单词、语句绝大多数都在这个文件里,汉化的时候首先就要看这个文件。

       另外,一些需要汉化的***.png图片文件、***.html文件、***.txt文件可能会在assets文件夹或res/raw文件夹内。图片文件需要用Photoshop修改,html、txt文件可以直接用Notepad++ Portable文本编辑工具修改(不建议用系统自带的记事本,这东西杀伤无数...)。

2、打包、解包

       apk安装包其实就是zip格式的压缩包,只是文件扩展名改成了apk而已,所以可以直接用解/压缩软件WinRAR打开,若你的系统没有关联apk文件,请先安装WinRAR,打开WinRAR——选项——设置——综合,在“用户自定义压缩文件扩展名”处填上apk,点“确定”保存即可。之后就可以直接双击以WinRAR打开apk安装包文件。

汉化软件的时候,不需要把整个apk安装包解包,对于需要汉化的文件,如resources.arsc、classes.dex等文件,直接用鼠标拖出来,汉完后再拖进apk安装包后重新签名就行了(签名问题下面会讲到)。

3、签名

       Android的软件也需要签名,不过和Symbian相比,却要简单方便得多,首先是不需要自己去申请证书,下载个签名工具就可以签名了。另外,我们从电子市场、软件官网下载来的软件都是已经签好名的,可以直接安装,这里讲到的签名,是针对软件安装包被修改过的情况(如汉化需要修改安装包内的文件,原来的签名文件就不能用了,所以要重新签名软件才能正常安装。),正常情况下不需要签名。

现在Android可用的签名工具很多,想方便点的话可以用汉化浪子出品的AndroidResEdit,这个软件自带签名包。签名方法很简单,删除原证书文件后(META-INF 文件夹内的***.RSA、***.SF、***.MF三个文件),打开AndroidResEdit——签名——签名apk文件,选择需要签名的apk安装包后点击“立即签名”即可。

4、安装Java
        这个是最基本的,汉化相关的软件都需要用到Java,必须要安装,否则无效。

安装地址:http://www.java.com/zh_CN

怎样去除广告

一:首先会用到几个软件,一个是dex解包、打包工具、Notepad++ Portable(dex文本编辑工具)、以及签名工具和JAVA运行环境安装,其他软件可以到这个地址下载:http://yunpan.cn/lk/sVkRQBi4HAJhu?sid=301
二:把需要去广告的软件,右键用7-zip解压方式打开,把classes.dex拉出来。



三:用dex工具解压classes.dex文件(具体方法看包里面说明)。打开Notepad++ Portable搜索 http:// (注意复制)



四:如图双击搜索到的网址,在上面改为无效网址就可以了。或直接删除引号里的网址,然后保存“全部”文件(这个修改时要注意,有的软件如果修改错误的话可能不能安装,可以网上搜一些是广告的连接。我只是提供一个方法,具体大家多练习研究吧)

引用:

还有ads字样文件

都可能是广告

但schemas.android.com开头的不是



去广告步骤:

1、去除广告下载源

解包classes.dex(方法上面已讲过),用Notepad++ Portable搜索广告下载源地址(若不知道软件用的是哪个供应商的广告的话,最好两家的下载源都搜索下)

2、去除广告界面

① 将刚刚已经替换了classes.dex文件的apk安装包用反编译。

② 用Notepad++ Portable搜索广告代码(上面已列出)

如图,将搜索路径定位到res文件夹(就是反编译后的res文件夹),代码只搜索开头就行了,如:com.admob.android.ads.AdView 和 com.google.ads.GoogleAdView。

如图:



搜索结果:



③ 双击黄颜色区域,修改下图上方的代码 

android:layout_width="fill_parent" 修改为 android:layout_width="0.0dip"

android:layout_height="wrap_content" 修改为 android:layout_height="0.0dip"



修改后:



将所有搜索到的代码按照上面修改,完成后保存
五:封包classes文件夹(见包里说明),然后把classes.dex文件再次拖动到用解压方式打开的APK文件内。删除图下2个或3个文件,签名安装即可。



修改更换安卓软件图标

        一个安卓程序的图标有时候并不见得每个人都喜欢而且,某些APK程序不具备高分辨率的程序图标,造成在程序在高分辨率的屏幕下图标显示效果较差,所以有必要的时候是可以更改一下以满足个性化需求的,下面说说具体怎么做。

工具

7-zip
DoAPk.exe(或AndroidResEdit选择签名)
Java环境

步骤/方法
        1.首先,把要更改图标的APK程序用7-zip进行解压
        2.解压出来,看到如下文件和目录,其中看到一个名为res的目录,这个目录中存放的就是安装程序的资源文件,包括各种图片素材和声音素材,当然,我们需要的程序图标就包含在里面,双击打开res这个目录



       3.之后在系统上方的搜索栏搜索带有"icon"字样的文件。通过基本判断可以得知,app_icon.png就是程序的图标,或找程序的图标(你懂得).
       4.找一个自己喜欢的程序图标,需要注意的是,替换后的程序图标的名字,格式,分辨率大小都要和原图标一致,然后才把原来的app_icon.png替换.
       5.替换完成之后,我们需要重新打包程序。回到程序解压之后的目录,删除原来的图标文件。拖动新的图标到里面。搞定!
       6.打开AndroidResEdit选择签名.或打开Doapk.exe点击“单独制作ROM和APK签名”这一按钮,之后会弹出一个窗口,这里让用户选择自己需要签名的APK文件.


 
   


       7.弹出窗口中选择好自己改好图标的APK文件,然后点击制作签名,这样就完成了对APK程序的签名,这样的APK程序在手机上安装才不会弹出错误提示 
注意事项:DOAPK需要java环境的支持,使用前得先安装。更改前备份好源程序文件

文字修改

       相信很多机友(特别是有强迫症的童鞋,比如我)遇到过这个问题,甚至可以说是困扰;
很喜欢一款软件,全身上上下下就一个看不顺眼 —— 软件名字;
下面介绍如何修改软件名称。
             别告诉重命名可以通过第三方桌面解决,那个没有技术含量!!而且改的只是皮毛哦。
一、准备工作:
      软件ArscEditor.exe
二、修改 APK 软件名称:
      1、右击 APK 安装包,用压缩软件解压到当前文件夹;(如下图所示)
      2、解压后找到文件“resources.arsc”; 
      3、打开将文件“resources.arsc”直接拖入ARSC编辑器的空白处中;(如下图所示)


     4、选择“string”标签,并找到键值“app_name”;
     5、将“区域”切为CN(有的不用切换),然后在“区域值”中修改你想要的软件名字,修改好后点击“保存当前值”;
     6、点击“文件”,选择“保存”,并覆盖保存;
     7、右击 APK 安装包,用压缩软件打开;(注:无需解压)

     8、将修改好的“resources.arsc”文件直接拖入进安装包内并确认覆盖原文件;(如下图所示)

三、重新签名:

     1、打开所得到的文件夹,并打开签名工具“AndroidResEdit.exe”;

     2、选择“签名” - “签名 apk 文件”;签名后生成的新安装包名为“XXX-SignFile.apk”,安装到手机。

本教程仅供交流学习,内容来自互联网。不得用于其他用途 ,支持开发者!

软件包下载地址:http://yunpan.cn/lk/sVkRQBi4HAJhu?sid=301 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: