Вопрос по android, obfuscation, adt, proguard – Экспорт проекта Android с использованием proguard на adt & sdk 20

4

Я обновился до новогоADT & SDK 20и у меня возникли проблемы с новым способом использования Proguard в Eclipse. Я вообще не профессионал в Proguard, но я всегда использовал его, и он работал довольно легко. Я просто отредактировал & quot; project.properties & quot; добавили туда файл "proguard.config = proguard.cfg", и все заработало.

К сожалению, некоторые изменения были внесены, и я не могу найти никакой информации о том, как с ними работать. Официальный сайт, который говорит о Proguard (на сайте Android), все еще говорит о старом пути.

Они написали в "Project.properties" раскомментировать следующую строку:

#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

Это не сработало, это выдает мне следующие ошибки при попытке экспорта:

Proguard returned with error code 1. See console
java.io.IOException: The output jar is empty. Did you specify the proper '-keep' options?
at proguard.shrink.Shrinker.execute(Shrinker.java:159)
at proguard.ProGuard.shrink(ProGuard.java:275)
at proguard.ProGuard.execute(ProGuard.java:101)
at proguard.ProGuard.main(ProGuard.java:492)

Кто-нибудь может мне с этим помочь? Мне никогда не приходилось менять файл proguard.cfg, и все было полностью автоматически. Это было очень редко, что я должен был сделать такую вещь.

Они также добавили файл "proguard-project.txt" который, вероятно, заменяет proguard.cfg и "extends" из файла папки sdk, поэтому я задаюсь вопросом: будет ли нормально вместо этого ссылаться на файл в проекте (и поместить в файл содержимое файла & quot; parent?)? Если да, то как мне это сделать?

Ваш Ответ

5   ответов
0

я решил скопировать proguard-project.txt из $ {sdk.dir} / tools / proguard / в рабочую область моего проекта.

Если вы посмотрите на project.properties, вы увидите, что он ссылается${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt.

Он нашел $ {sdk.dir} просто отлично, но искал proguard-project.txt в каталоге проекта.

2

решение в том, что по какой-то причине у меня было неправильное расположение для переменной sdk.dir в eclipse.

Итак, что я сделал, чтобы:

Go to eclipse's preferences Searched for variables And went to java->build path->classpath variables And added "sdk.dir" variable with the value of the directory of android sdk .
1

adt до 21, используйте proguard v4.8 или 4.9 и не забудьте запустить Android Lint перед экспортом APK

это было давно, и я даже не помню проблему, и я ответил на нее. однако, возможно, ваш ответ поможет кому-то еще, так что спасибо. android developer
3

просто измените эту строку:

 proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

к этой строке:

 proguard.config=proguard.cfg

тогда вы вернете старую настройку Proguard, но я рекомендую обновить, но она должна работать, если вы не используете какие-нибудь сторонние фляги? Это то, что, по его словам, отсутствует, и вы должны использовать флаг -keep, чтобы Proguard не удалял их, когда он запутывает.

Я проверил его на новой установке Linux, и он работал хорошо, но на оригинальной ОС Linux я все еще получаю эти ошибки. подскажите, пожалуйста, в чем дело? android developer
я также попробовал ваше решение, и оно говорит что-то странное: "путь к файлу конфигурации proguard invlid ... / proguard.cfg не существует или не является обычным файлом" android developer
нет, их новый способ использования proguard не работал даже с совершенно новым проектом для Android (привет, мир). Странно, но теперь в Windows все работает нормально, а в Linux - нет. мне нужно будет проверить это снова. android developer
0

$ {} Sdk.dir /tools/proguard/proguard-android-optimize.txt

Нашел его в моем проекте project.properties.
не ответ на вопрос (который уже получил ответ), но полезно знать, так что спасибо. android developer
Так как я могу сообщить Proguard об изменении имени?

Похожие вопросы