• apk工具mark


    最近工作中用到了apktool解包修改xml文件,当时找了一下发现之前并没有记录文档,用法有点忘了又到网上查了一遍,这里记录一下,以后也方便查吧。

    apktool-打包解包工具

    用于查看apk中的资源和修改一些配置文件

    下载网址:https://ibotpeaches.github.io/Apktool/

    安装配置apktool:(官网里很详细,我这里就只简单说一下Windows下的)

    下载apktool.bat和apktool.jar(下载的apktool.jar重命名成这样),放在一起在Windows下配置path就可以了。

    使用:

    1.解包:

    $ apktool d foo.jar
    // decodes foo.jar to foo.jar.out folder
    
    $ apktool decode foo.jar
    // decodes foo.jar to foo.jar.out folder
    
    $ apktool d bar.apk
    // decodes bar.apk to bar folder
    
    $ apktool decode bar.apk
    // decodes bar.apk to bar folder
    
    $ apktool d bar.apk -o baz
    // decodes bar.apk to baz folder
    

    2.打包

    $ apktool b foo.jar.out
    // builds foo.jar.out folder into foo.jar.out/dist/foo.jar file
    
    $ apktool build foo.jar.out
    // builds foo.jar.out folder into foo.jar.out/dist/foo.jar file
    
    $ apktool b bar
    // builds bar folder into bar/dist/bar.apk file
    
    $ apktool b .
    // builds current directory into ./dist
    
    $ apktool b bar -o new_bar.apk
    // builds bar folder into new_bar.apk
    
    $ apktool b bar.apk
    // WRONG: brut.androlib.AndrolibException: brut.directory.PathNotExist: apktool.yml
    // Must use folder, not apk/jar file

    打完包之后一般需要重签:

    删除apk包中的签名文件:META-INF

    使用重签命令重签apk。

    偷个懒,转个博客:https://www.jb51.net/article/141954.htm

    dex2jar

    将apk反编译成java源码

    下载网址:https://sourceforge.net/projects/dex2jar/

    apk中的dex文件转为jar:

    将需要反编译的文件放到dex2jar的同目录,运行:d2j-dex2jar.bat xxxx.classes.dex

    反编译出来的是个jar文件,解压可以看到源码

    jd-gui

    查看.class文件

    下载网址:http://java-decompiler.github.io/

    直接用这个工具打开.class文件即可。

    进阶知识:(下面的东西我也是在其他地方看到的,自己并没有实际研究过源码,以后看过源码,再来修正,所以有什么问题还请见谅)

    apktool对于xml的格式解析是自己实现的(在AXmlResourceParser里面),并结合xpp3库读取解析后的xml信息。再回编译的时候使用了Android的aapt工具。

    xpp3:XmlPullParser,流的方式解析xml

    常见问题:

    No resource identifier found for attribute 'compileSdkVersion' in package 'android'

    打包前执行:apktool empty-framework-dir

    原因:官方文档表示apktool和framework是绑定在一起的。这个文件在使用的时候会被copy到apktool/frame/1.apk。如果你本地有两种版本的apktool,先用了旧版本,再用新版本的工具就可能导致apk的framework和新版本的工具不匹配,从而导致上面的问题。

  • 相关阅读:
    跟踪spring MVC的请求
    spring的Java注解方式
    spring IOC理解
    spring aop
    spring mvc开发过程中的乱码问题
    springmvc的Controller里实现转发的同时弹出提示对话框
    C++程序加速的12个方法
    VSCode官方配置C/C++
    VSCode配置C/C++环境
    Numba 0.44 中文文档
  • 原文地址:https://www.cnblogs.com/yeqluofwupheng/p/14198520.html
Copyright © 2020-2023  润新知