Co to są narzędzia kompilacji, narzędzia i narzędzia platformy Android SDK? I której wersji należy użyć?

331

Wiem, że to bardzo podstawowe pytanie, ale ku mojemu zaskoczeniu nie mogłem znaleźć żadnego dokumentu na temat narzędzi do budowania zestawu SDK systemu Android. Oprócz narzędzi Android SDK i narzędzi platformy Android SDK, istnieje wiele narzędzi do budowania zestawu SDK systemu Android, jak pokazano na dołączonym zrzucie ekranu. Czy ktokolwiek mógłby wskazać źródło wyjaśniające je wszystkie i pomóc w wyjaśnieniu, w jaki sposób wybrana jest określona wersja Narzędzi do budowania zestawu SDK systemu Android?

wprowadź opis zdjęcia tutaj

Edytowane (27.02.2014) :

Nadal nie do końca rozumiem wszystkie narzędzia. Oto moje ograniczone zrozumienie w oparciu o najnowsze dokumenty Google:

  • Narzędzia do budowania zestawu SDK systemu Android były kiedyś składnikami narzędzi platformy Android SDK . Zostały one oddzielone od narzędzi platformy Android SDK, dzięki czemu narzędzia do budowania mogą być aktualizowane niezależnie od komponentów zintegrowanego środowiska programistycznego (IDE).
  • Narzędzia platformy Android SDK są dostosowane do obsługi funkcji najnowszej platformy Android. Są kompatybilne wstecz, dzięki czemu zawsze korzystasz z najnowszej aktualizacji narzędzi platformy Android SDK, nawet Twoja aplikacja jest przeznaczona na starsze platformy Android.
  • Narzędzia SDK są niezależne od platformy i są wymagane bez względu na platformę Android, na której pracujesz.

Nadal nie rozumiem powodów, dla których zabranie narzędzi do budowania zestawu SDK systemu Android z narzędzi platformy Android SDK zawiera pojedynczą instancję i jest łatwe do zarządzania aktualizacją. Jedynym możliwym powodem, dla którego mogę wymyślić, jest to, że niektóre aplikacje muszą polegać na starszych komponentach do ich tworzenia. Dokument Google wspomina o tym, ale nie wyjaśnia, dlaczego. Patrząc na informacje o wersji, zauważysz, że aktualizacje narzędzi do kompilacji zestawu SDK systemu Android służą przede wszystkim do naprawiania błędów i / lub dodawania obsługi nowych platform. Jedynym powodem, dla którego mogę wymyślić, aby niektóre aplikacje korzystały ze starszych wersji narzędzi do budowania zestawu SDK systemu Android, jest to, że polegają one na pewnych błędach narzędzi do budowania zestawu SDK systemu Android.. Te aplikacje nie działałyby normalnie bez wbudowania tych błędów. Chciałbym, aby Google mógł to lepiej wyjaśnić, podając jeden lub dwa przykłady pokazujące, dlaczego te błędy w narzędziach są krytyczne dla niektórych aplikacji.

Hong
źródło

Odpowiedzi:

88

O wersji narzędzi do budowania zestawu SDK Androida odpowiedź brzmi:

Domyślnie zestaw Android SDK używa najnowszej pobranej wersji Narzędzi do budowania.

Źródło

W Eclipse możesz wybrać konkretną wersję, używając sdk.buildtoolswłaściwości w project.propertiespliku.

Wydaje się, że nie ma oficjalnej strony wyjaśniającej wszystkie narzędzia do budowania. Oto, co na ten temat mówi zespół Androida.

Narzędzia [build], takie jak aidl, aapt, dexdump i dx, są zwykle wywoływane przez narzędzia do budowania Androida lub Android Development Tools (ADT), więc rzadko trzeba bezpośrednio wywoływać te narzędzia. Zasadniczo powinieneś polegać na narzędziach do budowania lub wtyczce ADT, aby wywoływać je w razie potrzeby.

Źródło

W każdym razie oto synteza różnic między narzędziami, narzędziami platformy i narzędziami do budowania:

  • Narzędzia Android SDK
    • Lokalizacja: $ANDROID_HOME/tools
    • Główne narzędzia: skrypty ant (do budowania plików APK) i ddms(do debugowania)
  • Narzędzia platformy Android SDK
    • Lokalizacja: $ANDROID_HOME/platform-tools
    • Główne narzędzie: adb(do zarządzania stanem emulatora lub urządzenia z Androidem)
  • Narzędzia do budowania zestawu SDK systemu Android
    • Lokalizacja: $ANDROID_HOME/build-tools/$VERSION/
    • Dokumentacja
    • Główne narzędzia: aapt(do generowania R.java i nieprzypisanych, niepodpisanych APK), dx(do konwersji kodu bajtowego Java na kod bajtowy Dalvik) oraz zipalign(do optymalizacji plików APK)
lakton
źródło
Bardzo się cieszę, że istnieje dziennik zmian dla różnych wersji narzędzi do budowania
Ewoks,
@lacton Użyłem starego narzędzia do kompilacji (wersja 17) do mojego projektu. Czy mogę go odbudować za pomocą najnowszego narzędzia do kompilacji?
user1156041,
Czy możemy używać tych samych narzędzi do kompilacji SDK + dla Eclipse i Studio?
Muhammad Babar
38

Narzędzia do kompilacji zestawu SDK systemu Android służą do debugowania, kompilacji, uruchamiania i testowania aplikacji na Androida.

Narzędzi do budowania systemu Android można używać do programowania i pracy z wiersza poleceń lub IDE (tj. Eclipse lub Android Studio).

Służy również do podłączania urządzeń z systemem Android i ich rootowania. (Fastboot, adb i więcej ..)

Zawsze używaj najnowszych. (Zalecane)

Więcej informacji o narzędziach i poleceniach do budowania systemu Android

mipreamble
źródło
Dzięki za informację. Czy masz na myśli to, że Android Build Tools jest „używany do łączenia urządzeń z Androidem i rootowania ich”? adbis jest częścią narzędzi platformy Android. Czy działanie adb zależy od narzędzi do budowania Androida? Jeśli tak to jak? Jestem ciekaw.
Hong
adb może być używany do wypychania i pobierania plików z wiersza poleceń. (Więcej funkcjonalności.) Fastboot może być używany do flashowania niestandardowych programów ładujących. Jednak te polecenia nie są przydatne w programowaniu Androida, chyba że używasz terminala do programowania. Wszystko jest dostępne w samym IDE.
mipreamble
1
Rozumiem, że Eclipse używa adb.exe w tle.
Hongkong
@mipreamble, więc jaka jest różnica między Android SDK: narzędzia, narzędzia platformy i narzędzia do budowania? Mogę zbudować i uruchomić aplikację bez narzędzi do budowania.
kreker
1
@CJBS Tak. Działa przyklejanie zestawu narzędzi dla wersji. Narzędzia do budowania są aktualizowane w momencie pojawienia się nowej wersji Androida. Chcesz skompilować i przetestować aplikację dla najnowszych wersji Androida.
mipreamble,
16

Omówię różnicę między Narzędziami do budowania, Narzędziami do platformy i Narzędziami innym. Z praktycznego punktu widzenia wystarczy znać odpowiedź na drugie pytanie:

Której wersji należy użyć?

Odpowiedź: Użyj najnowszej wersji.

Dla tych, którzy korzystają z Android Studio z Gradle, buildToolsVersionnależy to ustawić w build.gradlepliku (Moduł: aplikacja).

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    ...
}

Gdzie mogę uzyskać najnowszy numer wersji Narzędzi do budowania?

Otwórz Menedżera zestawu SDK systemu Android.

  • W Android Studio wybierz Narzędzia > Android > SDK Manager > Wygląd i zachowanie > Ustawienia systemu > Android SDK
  • Wybierz kartę Narzędzia SDK .
  • Wybierz Narzędzia do budowania zestawu SDK systemu Android z listy
  • Zaznacz opcję Pokaż szczegóły pakietu .

Ostatni element pokaże najnowszą wersję.

wprowadź opis zdjęcia tutaj

Upewnij się, że jest zainstalowany, a następnie wpisz ten numer jako ( buildToolsVersionw build.gradle: Moduł: aplikacja).

Suragch
źródło
1
Jeśli jest 24.0.2, dlaczego 24.0.1 i 24 nie są oznaczone jako przestarzałe (samodzielny menedżer pozwala pokazywać / ukrywać przestarzałe pakiety)?
user1803551,
3
@ user1803551, nie zawsze jest pożądane automatyczne używanie najnowszej wersji narzędzi do kompilacji. Załóżmy na przykład, że już gruntownie przetestowałeś swoją aplikację w określonej wersji narzędzi do budowania. Jeśli zaktualizujesz narzędzia do kompilacji, możliwe, że wprowadzona zmiana może spowodować uszkodzenie aplikacji. Zezwalanie programistom na używanie starych wersji narzędzi do budowania pozwala im mieć pewność, że ich kompilacja będzie działać zgodnie z oczekiwaniami. Jeśli spojrzysz na wzór tego, co zostało uznane za przestarzałe, zobaczysz, że 24 i 24.0.1 ostatecznie zostaną uznane za przestarzałe.
Suragch,
13

Możesz znaleźć szczegółowe informacje na ten temat w tym Androidzie - Narzędzia wiersza poleceń


tl; dr:

Narzędzia SDK:

  1. Menedżer SDK Androida (sdkmanager)
  2. AVD Manager (avdmanager)
  3. Serwer monitorowania debugowania Dalvik (ddms)

Narzędzia do budowania:

  1. sygnatariusz
  2. proGuard
  3. zipalign
  4. Jobb

Narzędzia platformy:

  1. adb
  2. aidl, aapt, dexdump i dx
  3. bmgr
  4. logcat
Suhaib
źródło
1
aidl, aapt, dexdump i dx są to składniki narzędzi do budowania, a nie narzędzi platformowych
Masum
9

Prawidłowa odpowiedź to

Oddzielono komponenty zestawu SDK systemu Android od komponentu platforma-narzędzia, dzięki czemu narzędzia kompilacji można aktualizować niezależnie od komponentów zintegrowanego środowiska programistycznego (IDE).

link (rozwiń wersję 17)

kreker
źródło
4
Dziękuję za informację. Jeśli nowsze wersje są tylko ulepszonymi starszymi wersjami, dlaczego Google nie ma tylko jednego narzędzia do budowania i aktualizuje je tak jak narzędzia SDK i narzędzia platformy? Innymi słowy, jaki jest powód, aby mieć tam starsze wersje?
Hong
2
Właśnie próbowałem głosować za odpowiedzią, ale okazało się, że głosowałem już za nią w zeszłym roku! @Hong, zachowują stare narzędzia do budowania, ponieważ podczas aktualizacji narzędzi niektóre funkcje stają się przestarzałe. Jednak programiści aplikacji mogą mieć kod źródłowy, który opiera się na tych funkcjach, dzięki czemu starsze wersje są dostępne, aby obsługiwać te stare bazy kodu.
kolega
1
Czy w takim przypadku powinni mieć listę przestarzałych funkcji, aby programiści mogli dokładnie wiedzieć, czy nadal muszą używać starych wersji?
Hong
@Hong: Właśnie tego szukałem. Teraz ... odszukaj odpowiedź :)
DerpyNerd
2

Narzędzia do budowania zestawu SDK systemu Android są dokładnie takie, jak sama nazwa wskazuje; narzędzia do budowania aplikacji dla systemu Android. Bardzo ważne jest, aby używać najnowszej wersji narzędzi do budowania (wybieranych automatycznie przez IDE za pośrednictwem zestawu SDK systemu Android), ale przyczyną pozostawienia starych wersji jest kompatybilność wsteczna, to znaczy, jeśli projekty zależą od starsze wersje Narzędzi do budowania.

Ojonugwa Jude Ochalifu
źródło