apktool собрать apk не удается

Я испытываю очень неприятные проблемы с проблемой приложения apktool. Я не понимаю, что я делаю неправильно, или в чем проблема. Я пробовал это на debian и на linux mint. Я использовал разные версии apktool,

в результате та же ошибка:

I: Checking whether sources has changed...
I: Checking whether resources has changed...
I: Building resources...
Exception in thread "main" brut.androlib.AndrolibException: brut.common.BrutException: could not exec command: [aapt, p, -F, /tmp/APKTOOL3630495287059303807.tmp, -I, /home/awesomename/apktool/framework/1.apk, -S, /home/awesomename/out/./res, -M, /home/awesomename/out/./AndroidManifest.xml]
    at brut.androlib.res.AndrolibResources.aaptPackage(Unknown Source)
    at brut.androlib.Androlib.buildResourcesFull(Unknown Source)
    at brut.androlib.Androlib.buildResources(Unknown Source)
    at brut.androlib.Androlib.build(Unknown Source)
    at brut.androlib.Androlib.build(Unknown Source)
    at brut.apktool.Main.cmdBuild(Unknown Source)
    at brut.apktool.Main.main(Unknown Source)
Caused by: brut.common.BrutException: could not exec command: [aapt, p, -F, /tmp/APKTOOL3630495287059303807.tmp, -I, /home/windows/apktool/framework/1.apk, -S, /home/windows/out/./res, -M, /home/windows/out/./AndroidManifest.xml]
    at brut.util.OS.exec(Unknown Source)
    ... 7 more
Caused by: java.io.IOException: Cannot run program "aapt": error=2, No such file or directory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
    at java.lang.Runtime.exec(Runtime.java:617)
    at java.lang.Runtime.exec(Runtime.java:485)
    ... 8 more
Caused by: java.io.IOException: error=2, No such file or directory
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:135)
    at java.lang.ProcessImpl.start(ProcessImpl.java:130)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)
    ... 10 more

Кажется, он не может использовать aapt, но я читал об apktool. И кажется, что aapt встроен в apktool, почему он не работает?


person user3046636    schedule 26.04.2014    source источник
comment
См. также apktool - Как исправить brut.androlib. AndrolibException: brut.common.BrutException: не удалось выполнить (код выхода = -1073741515) - Stack Overflow по другой причине того же сообщения об ошибке.   -  person user202729    schedule 15.12.2020


Ответы (12)


Кажется, есть некоторая проблема в создании ресурсов при перекомпиляции apk. что вы можете сделать, когда вы декомпилируете свой apk, используйте эту команду

apktool d -f -r apkfilename.apk

здесь -f заменяет код предыдущего декомпилированного apk, а -r игнорирует декомпиляцию ресурсов.

это предотвратит декомпиляцию ресурсов и просто скопирует те же ресурсы при перекомпиляции apk.

person Ravinder Bhandari    schedule 18.05.2014
comment
Проблема в том, что это не позволит мне увидеть папки значений. Это единственная причина, по которой я декомпилирую apk. - person so5user5; 14.03.2016

Если вы использовали v1 и теперь обновились до v2, попробуйте вручную удалить файл фреймворка.

В Windows 8 это обычно C:\Users\YourName\apktool\framework\1.apk.

Файл должен быть перегенерирован, как только вы попытаетесь что-то построить.

person Michael Litvin    schedule 08.10.2014
comment
В OS X (macOS) это /Users/<username>//Library/apktool/framework/1.apk. - person nimrodm; 06.08.2016
comment
В GNU/Linux это .local/share/apktool/framework/1.apk, хотя вы можете изменить его в любой операционной системе с --frame-path <dir>. -- также вместо ручного удаления файла apktool empty-framework-dir следует сделать то же самое. - person user202729; 15.12.2020

Моя проблема была решена путем удаления \framework\1.apk, создания резервной копии файлов, которые я изменил, удаления каталога и повторной декомпиляции *.apk и т. д. (в Linux путь home/ [пользователь]/apktool/...). После обновления apktool всегда загружал старую таблицу ресурсов. Н

person Ferenc    schedule 07.01.2015

Определенно похоже на проблему aapt PATH, которая у меня была некоторое время назад. Вы добавили aapt в PATH? Если у вас все еще есть проблемы, я сделал хороший набор apk в bash, чтобы избежать всех этих проблем с зависимостями. Он поддерживает apktool, signapk, zipalign, adb, fastboot и heimdall. Проверьте это. Все, что вам нужно, это текущая установка Java.

http://forum.xda-developers.com/android/development/toolkit-apk-munky-rench-t3026757/post58747626#post58747626

person mike the inkman    schedule 15.02.2015

попробуйте поместить каталог, который включает файл aapt, в ваш PATH. например, экспортируйте PATH=$PATH:./ ./apktool b

person xiangrong    schedule 27.09.2014

попробуйте установить ia32-libs и обновить последнюю версию apktool. (по возможности перезапустить)

apktool требует «ia32-libs», которые недоступны после Ubuntu 12.04. установить ia32-libs

sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6

Загрузите последнюю версию apktools.jarhttps://bitbucket.org/iBotPeaches/apktool/downloads

Полное руководство по установке apktool — http://ibotpeaches.github.io/Apktool/install/

person Aha    schedule 25.05.2016

Есть некоторая причина вашей ошибки. Попробуйте следующее, чтобы решить вашу проблему.

1. Загрузите новый (модифицированный) файл jar отсюда http://onephin.com/fix-apktool-dont-compile-dont-build-error/ 1.1 Извлеките его. 1.2 Переименуйте его в Apktool.jar 1.3 Поместите этот файл в папку Apktool.

2. Убедитесь, что ваша папка Apktool находится в /usr/local/bin (требуется root)

3. Убедитесь, что файл Apktool.jar является исполняемым (chmod +x)

4. Убедитесь, что вы правильно установили java, или если вы установили java правильно, ваш путь к переменной может быть неправильным. Чтобы устранить эту проблему, переустановите java, а затем правильно установите путь к переменной.

Для получения дополнительной информации об устранении этой проблемы посетите http://onephin.com/fix-apktool-dont-compile-dont-build-error/

person Kuldeep Makwana    schedule 27.01.2017

Я просто сталкиваюсь с той же проблемой при запуске apktool d foo.apk (успешная декомпиляция), а затем apktool b foo (сбой повторной компиляции с аналогичной ошибкой).

Инструмент apktool выше был установлен через sudo apt-get install apktool в Kali Linux.

Итак, решением было посещение официального сайта apktool, например. https://connortumbleson.com/2017/01/23/apktool-v2-2-2-released/ (это последняя версия на данный момент), загрузите его, md5sum, например. md5sum apktool_2.2.2.jar для проверки, затем переименуйте этот apktool_2.2.2.jar в apktool.jar.

Затем выполните java -jar ./apktool.jar b foo для перекомпиляции, все пройдет без ошибок (сгенерированный apk находится в ./foo/dist/foo.apk).

person Fruit    schedule 04.02.2017

Основная проблема в том, что нужная вам версия apktool 2.4.0

Вы должны вручную установить его из ibotpeaches git hub.

вот хорошая информация

https://www.youtube.com/watch?v=kB6s10Uwpcs

и автоматизированный скрипт для kali https://github.com/catenatedgoose?tab=repositories

person goose goose    schedule 21.04.2019

Недостаточно информации, чтобы дать вам точный ответ.

Как бы вы ни упоминали об использовании разных версий, но проблема с aapt была решена в версии 2.4. Зависимости были уменьшены до версии java 1.8 или выше и framework.

Я использую Debian и имею следующее:

  • Апктул 2.4
  • джава версия 11
  • Android-фреймворк

Это все, что потребовалось, чтобы избавиться от ошибки aapt path.

Последняя ошибка, с которой я столкнулся, не была связана с aapt, но была связана с фреймворком, поэтому я выполнил эту команду.

apktool empty-framework-dir

И это решило это.

person Goos3    schedule 14.05.2019

Для меня я решил эту проблему, сначала очистив каталог фреймворка apktool, набрав в терминале.

apktool пустой-фреймворк-каталог

После этого я удалил apktool и связанные с ним файлы, набрав

sudo apt очистить apktool

Затем я перешел на https://bitbucket.org/iBotPeaches/apktool/downloads/, чтобы получить последний файл jar для apktool (apktool_2.5.0.jar на момент написания этого).

При первом запуске

java -jar apktool_2.5.0.jar b ‹MyAPP.apk› #Без ›‹

оно работает.

так как я работаю с apktool в большинстве случаев, мне нужна была ситуация, когда я могу запустить apktool из любого места, поэтому я дал разрешения на выполнение файла jar, набрав

sudo chmod +x apktool_2.5.0.jar

После этого я переместил его в /usr/bin/, набрав

судо apktool_2.5.0.jar /usr/bin/

person Cyber_Bear    schedule 14.03.2021

Решение состоит в том, чтобы включить ваш каталог apktool в системный PATH.

person clasnake    schedule 28.10.2014