• Apktool.jar common errors and solutions


    https://forum.xda-developers.com/t/apktool-jar-common-errors-and-solutions.4185443/


    Since many got apktool.jar errors and don't know how to search or solve themself, I decided to explain and provide solutions here with links to Github. I have a friend who sometime can help me with this.
    I will do my best to get much info. Feel free to post your thoughts
    Know your error:
    There’s a wide range of error messages you may encounter when decompiling and compiling your app. Depending on the kind of error you encounter, apktool.jar will always display the error message. Spotting error messages is easy
    For example this log:

    Code:

    I: Using Apktool 2.4.1
    I: Smaling smali folder into classes.dex...
    I: Smaling smali_classes2 folder into classes2.dex...
    I: Building resources...
    W: D:\xxx\AndroidManifest.xml:15: Tag <uses-permission> attribute name has invalid character ' '.
    brut.androlib.AndrolibException: brut.common.BrutException: could not exec (exit code = 1): [C:\Users\evildog1\AppData\Local\Temp\brut_util_Jar_2200487015856364895.tmp, p, --forced-package-id, 127, --min-sdk-version, 19, --target-sdk-version, 28, --version-code, 19227, --version-name, 4.1.1, --no-version-vectors, -F, C:\Users\evildog1\AppData\Local\Temp\APKTOOL3877124333918122178.tmp, -e, C:\Users\evildog1\AppData\Local\Temp\APKTOOL2736431752124554942.tmp, -0, arsc, -I, C:\Users\evildog1\AppData\Local\apktool\framework\1.apk, -S, D:\xxx\res, -M, D:\xxx\AndroidManifest.xml]

    If you think could not exec is your error, it's actually not, the real error is actually a 'warning'

    Code:

    W: D:\APK Easy Tool\1-Decompiled APKs\xxx\AndroidManifest.xml:15: Tag <uses-permission> attribute name has invalid character ' '

    The good thing it tells you which line it occured AndroidManifest.xml:15:. it's line 15 in AndroidManifest.xml
    This was caused by a space in a permission tag. Removing it will fix the compiling error

    lUKlm6W.png

    It's not always a simple fix. This always depending
    Check the APK file:
    Sometimes APK is obfuscated in many ways.
    Open the APK using 7-zip and WinRar and see if the first classes.dex is smaller than 500 KB or way bigger than 10 MB. If so, it a sign it's encrypted. Decompiling and compiling the big dex file will result in a smaller size and it will fail to decrypt due to missing encrypted block
    Decompile and check if smali files and codes are obfuscated. This is an example of Netflix app that is obfuscated

    yfNlWuK.png

    Don't ask me how to break protected APK, I'm not a reverser so I can't help you with it.
    Troubleshooting:
    Sometime those troubleshooting tricks helps fixing errors. Please try one or more of the following below
    - If you are using any 3rd party GUI tools, please try the actual apktool.jar with CMD first
    - Use latest version of apktool.jar: https://ibotpeaches.github.io/Apktool/ and test
    - If you are using latest version, try use older version of apktool.jar. Sometimes it can mitigate the issue
    - Clear framework apktool empty-framework-dir --force and decompile the APK again.
    - Decompile APK with --only-main-classes (Only disasemble dex classes in root (classes[0-9].dex). Prevents disasemble dex from assets folder) (apktool 2.4.1 and up only)
    - Decompile APK with --no-res if you are only editing Java (smali) (--no-res will prevent the decompile of resources. This keeps the resources.arsc intact without any decode.)
    - Decompile APK with --no-src if you are only editing the resources (xml) (--no-src will prevent the disassembly of the dex file(s). This keeps the apk dex file(s) and simply moves it during build.)
    - Compile with --use-aapt2 (Use the aapt2 binary instead of appt)

    Last edited: Nov 18, 2020

    • Like
    Reactions:Raiz, kevintm78 and fosefx

    evildog1

    evildog1
    Senior Member

    Errors list:
    Tip: Press CTRL + F and find the words :)
    If there is no error you are looking for, search it on following Github issue pages
    Apktool: https://github.com/iBotPeaches/Apktool/issues
    Baksmali/smali: https://github.com/JesusFreke/smali/issues
    Deompile errors:
    * Exception in thread "main" java.lang.NullPointerException (XML related)
    This is an issue with apktool 2.4.1. Downgrade to 2.4.0 or below (2.3.4 is better)
    * Exception in thread "main" org.jf.dexlib2.dexbacked.DexBackedDexFile$NotADexFile: Not a valid dex magic value: (xx xx xx xx xx xx xx xx)
    Rare issue, it usally caused if it tries to decompile encrypted dex from assets folder
    Decompile APK with --only-main-classes
    * Exception in thread "main" brut.androlib.AndrolibException: brut.directory.DirectoryException: Error copying file: res
    This is a trick to prevent decompiling on Windows. Open the APK file using 7zip or Winrar and delete the unnamed file from res folder

    1613057396839.png

    Or use Mac/Linux until then
    See: https://github.com/iBotPeaches/Apktool/issues/1460
    * Invalid debug offset
    These are legitimate warnings about inconsistencies in the dex file. The invalid debug offset is otherwise ignored and the classes are successfully disassembled.
    Compile errors:
    * brut.androlib.AndrolibException: brut.common.BrutException: could not exec (exit code = -1073741515)
    This was an issue with Java 8 32-bit on Apktool 2.4.0. Install 64-bit of Java or switch to other version
    See: https://github.com/iBotPeaches/Apktool/issues/2141
    * Cant find 9patch chunk in file: (...). Renaming it to *.png.
    APK is Obfuscated
    See: https://forum.xda-developers.com/showpost.php?p=81088145&postcount=619
    * Cannot run program "aapt": CreateProcess error=2, The system cannot find the file specified
    Not a bug. This means the default application that is copied to tmp and executed, could not be done. Therefore it relied on the aapt binary being accessible in the $PATH variable.
    * Class (...) has already been interned
    Decompile APK with --only-main-classes (apktool 2.4.1 and up only)
    * Exception in thread "main" brut.androlib.AndrolibException: brut.directory.PathNotExist: apktool.yml
    apktool.yml does not exist, because APK did not decompiled completely. Decompile again
    * Float types not allowed
    Remove the decimal from version number maybe?
    Reported issue: https://forum.xda-developers.com/showpost.php?p=82840671&postcount=699
    * Invalid resource directory name
    Currently unknown. Try clear framework if you don't work with system apps
    * Invalid file name: must contain only (...). Ignoring...
    See: https://github.com/iBotPeaches/Apktool/issues/2282
    * JAXP 1.5 Support is required to validate XML
    Update apktool.jar to the latest version
    * No resource identifier found for attribute 'isSplitRequired' in package 'android'
    Split APK is not supported yet. See https://github.com/iBotPeaches/Apktool/issues/2218
    If you are following some tutorials how to merge split apks into one, then remove the attribute android:isSplitRequired="true" from AndroidManifest.xml, save and compile again
    * No resource identifier found for attribute (...) in package (...)
    There are many reasons why. Please refer to these issues for more infomation: https://github.com/iBotPeaches/Apktool/issues?q=No+resource+identifier+found+for+attribute+
    Try clear framework if you don't work with system apps
    Sometimes, removing the attribute will fix the error and the app would run fine without it. Always test if the app is working fine or not
    * No resource found that matches the given name
    There are many reasons why. This is not always easy to fix
    See issues
    https://github.com/iBotPeaches/Apktool/issues/2365
    https://github.com/iBotPeaches/Apktool/issues/2362
    https://github.com/iBotPeaches/Apktool/issues/2339
    https://github.com/iBotPeaches/Apktool/issues/2422
    Try clear framework if you don't work with system apps
    If you are working with system apps, you may need framework installed.
    * Tag (...) missing required attribute name.
    Not an easy fix, but you can try --use-aapt2 or don't decode resources (-r, --no-res) if you don't need
    https://github.com/iBotPeaches/Apktool/issues/1880
    Tag <uses-permission> attribute name has invalid character ' '
    This was caused by a space in an attribute name. Removing it will fix the compiling error
    Example, change:

    Code:

    <uses-permission android:name="com.google.android.finsky.permission.CHECK_LICENSE "/>

    to

    Code:

    <uses-permission android:name="com.google.android.finsky.permission.CHECK_LICENSE"/>

    * Unsupported res type name for bags
    See: https://github.com/iBotPeaches/Apktool/issues/1719
    * Unsigned short value out of range: 65536
    You have too many methods. The method index can't fit into an unsigned 16-bit value each dex
    Simply move your codes to smali_classes(X) or create new one. For example if smali_classes2 is the latest, move code to smali_classes3
    Full error log:

    * warning: found plain 'id' attribute; did you mean the new 'android:id' name?
    See: https://github.com/iBotPeaches/Apktool/issues/2188
    * warning: string (...) has no default translation.
    Those are warnings, they are fine.
    * WARNING: Could not write to (C:\Users\(username)\AppData\Local\apktool\framework), using C:\Users\(username)\AppData\Local\Temp\ instead...
    Use the --frame-path [folder] parameter and describing the folder you want the framework resources to reside.
    This warning can be ignored if you don't use framework
    Others:
    * 'java' is not recognized as an internal or external command
    Install/Re-install latest version of Java 8 https://java.com/en/download/ or set the enviorment path manually
    * APKTOOL_DUMMY
    If you get APKTOOL_DUMMY that's generally because apktool can't decode some of the information in the original APK and creates a 'dummy' value instead. Because there's no things called APKTOOL_DUMMY in public.xml, the APK can't be recompiled. It's likely because you try to compile splitted APK with some missing infomation
    * Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    Increase the java heap size like:
    java -Xmx4096m -jar apktool.jar
    java -Xmx4g -jar apktool.jar
    If your system is Windows and is 64-bit, please uninstall 32-bit version and install 64-bit version (Windows Offline (64-bit)) https://java.com/en/download/manual.jsp
    * Unsupported major.minor version (...)
    Upgrade java to the latest version https://java.com/en/download/

  • 相关阅读:
    微信第三方平台开发之代小程序实现业务
    解决Chrome网页编码显示乱码的问题
    .Net Core 使用 System.Drawing.Common 在CentOS下报错
    CentOS安装nmap端口查看工具
    解决Nginx反向代理不会自动对特殊字符进行编码的问题 如gitblit中的~波浪线
    Centos7最小安装化后安装图形界面
    手把手教您在 Windows Server 2019 上使用 Docker
    windows10下安装docker报错:error during connect
    git删除远程分支
    linux下shell显示git当前分支
  • 原文地址:https://www.cnblogs.com/cute/p/16473625.html
Copyright © 2020-2023  润新知