Nowa dokumentacja dotycząca ProGuard dla systemu Android mówi o dodaniu wiersza do pliku default.properties w katalogu domowym projektu. Jednak po otwarciu tego pliku przeczytałem u góry:
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
Czy coś mi brakuje?
Czy jest również sposób, aby włączyć ProGuard tylko dla wersji produkcyjnej z Eclipse (tj. Podczas eksportowania gotowego produktu)?
android
eclipse
proguard
obfuscation
Ted Hopp
źródło
źródło
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
, czy potrzebujesz niestandardowych ustawień dla konkretnego projektu.Odpowiedzi:
tylko kontynuacja, ponieważ szukałem tego samego - a odpowiedzi tutaj są nieaktualne - ostatnio podstawowa konfiguracja proguard jest tutaj w katalogu sdk - więc musisz tylko umieścić to w swoim projekcie. właściwości:
jeśli chcesz wprowadzić modyfikacje specyficzne dla projektu, utwórz plik proguard-project.txt i zmień wiersz na:
źródło
Android SDK (r20 lub nowszy)
Sprawdź predefiniowany proguard.config, o którym mowa w project.properties
Więcej informacji: http://proguard.sourceforge.net/manual/examples.html#androidapplication
W Gradle:
Tutaj możesz sprawdzić „domyślny” plik proguard, który ciągle aktualizuję: https://medium.com/code-procedure-and-rants/android-my-standard-proguard-ffeceaf65521
Android SDK (r19 lub niższy)
Możesz dodać go do pliku default.properties. Do tej pory dodawałem ręcznie bez problemu.
Jeśli dodasz linię:
Jak powiedziano, będzie używać ProGuard tylko podczas eksportowania podpisanej aplikacji (Android Tools => Export Signed Application)
Jeśli uruchomisz projekt z SDK przed Androidem 2.3,
proguard.cfg
plik nie zostanie utworzony (obokdefault.properties
jak w 2.3>).Aby włączyć automatyczne tworzenie go, po prostu zaktualizuj do SDK systemu Android 2.3 i utwórz nowy projekt z istniejącymi źródłami (które są źródłami projektu, który obecnie masz).
Automatycznie
proguard.cfg
zostanie utworzone wypełnienie.Jeśli nadal chcesz go utworzyć ręcznie, oto co powinien zawierać:
Myślę, że odpowiedziałem na wszystkie powyższe pytania.
AKTUALIZACJA :
Wyjaśnienie wiersz po wierszu:
AKTUALIZACJA 2:
W najnowszym użyciu ADT / Proguard
-keepclasseswithmembers
zamiast-keepclasseswithmembernames
źródło
proguard.config=proguard.cfg
ale nigdzie nie widać pliku proguard.cfg ... Pomimo wielokrotnego eksportowania, ponownego uruchamiania Eclipse itp. Masz jakiś pomysł, dlaczego? i jak to naprawić? Dzięki.Przynajmniej od ADT 16 możesz rzeczywiście dodać linię
project.properties
i zostanie ona zachowana. Możesz spróbować zmienić docelową wersję SDK i sprawdzić, czyproject.properties
jest ona odpowiednio aktualizowana, ale dodana linia nadal tam jest. Więc myślę, że ostrzeżenie jest po prostu źle sformułowane; oznacza to, że ustawienia w pliku, takie jak,target
zostaną nadpisane ustawieniami projektu, a nie odwrotnie.źródło
Zmiany w konfiguracji ProGuard pojawiły się w ADT w wersji 17. ProGuard został zaktualizowany z 4.4 do 4.7 i wprowadzono różnicę w odwołaniu do pliku konfiguracyjnego. Zauważ, że istniejące projekty pozostaną niezmienione, pozostawiając je bez nowszego zestawu reguł zawartego w tej i nowszych wersjach ADT. Odpowiednie DOC z nowszej układzie konfiguracyjnym już wspomniano o ligach powyżej, są dostępne na stronie: -
http://tools.android.com/recent/proguardimprovements „Po drugie, zmieniliśmy sposób obsługi plików konfiguracyjnych”.
źródło
Możesz dodać linię do
build.properties
, jak wspomniano wdefault.properties
.źródło