2015-01-13 12 views
7

Jako że Gradle nie obsługuje zależności apklib, w jaki sposób można migrować zależności od apklib do zależności aar? Czy możliwe jest ręczne lub automatyczne przekonwertowanie zależności apklib na aar? Jeśli tak - w jaki sposób, jeśli nie - dlaczego nie?Jak przekonwertować apklib na aar

W tym pytaniu zakładam, że nie mam oryginalnego projektu dla apklib, ale raczej sam plik.

Odpowiedz

11

apklib nie zawiera plików obiektowych, tylko pliki źródłowe, więc jedynym sposobem może być zawarte w każdy projekt jest przez rekompilację go. Według niektórych docs można przeczytać pod adresem:

Android dependencies : apklib vs aar files i https://plus.google.com/+ChristopherBroadfoot/posts/7uyipf8DTau

Format apklib został wynaleziony jako sposób dzielenia kodu Androida + zasobów. Jest to w zasadzie skompresowany projekt biblioteki Androida, który był już status quo dla udostępniania kodu i zasobów.

I można zobaczyć w poście Chris Broadfoot, że zadanie, które generuje apklib prostu suwakami zapasową pliku AndroidManifest.xml i src i res katalogach:

task apklib(type: Zip) { 
    appendix = extension = 'apklib' 

    from 'AndroidManifest.xml' 
    into('res') { 
     from 'res' 
    } 
    into('src') { 
     from 'src' 
    } 
} 

Zauważ, że jego stanowisko jest o tworzeniu apklib z Gradle, co jest nieco dziwną rzeczą do zrobienia, ale daje całkiem jasne wyobrażenie o strukturze jednej z tych rzeczy.

Dobrą wiadomością jest to, że jest to "standardowa" struktura projektu Androida od momentu, gdy Eclipse był podstawowym IDE, a Android Studio wie, jak importować moduły, które wyglądają tak. Wykonaj następujące kroki:

  1. Rozpakuj apklib do katalogu tymczasowego. Jest w formacie zip, więc powinno działać coś takiego jak unzip library.apklib.

  2. Sprawdź, co się nie rozpakowało. Powinieneś zobaczyć katalog zawierający foldery AndroidManifest.xml, src i res.

  3. W Android Studio, wewnątrz istniejącego projektu, wybierz polecenie Plik> module import i skierować go w katalogu z kroku 2.

  4. Android Studio powinien zarządzać importu poprzez kopiowanie plików do projektu w nowym moduł, układając je w preferowanej strukturze katalogów i dodając do modułu plik build.gradle.

  5. W tym momencie jesteś gotowy do pracy. Jeśli rzeczywiście chcesz plik .aar, sprawdź, czy twój nowy moduł jest skonfigurowany jako moduł biblioteczny lub moduł aplikacji.W swoim build.gradle, jeśli masz apply plugin: 'com.android.library', to jest to moduł biblioteczny, a Gradle wygeneruje .aar jako część kompilacji: po pomyślnej kompilacji znajdzie się w katalogu build/outputs/aar.

  6. Jeśli moduł importowane jako moduł aplikacji, a nie biblioteki (apply plugin: 'com.android.application', a następnie zmienić ten apply plugin oświadczenie, a może trzeba także usunąć oświadczenie applicationId z pliku kompilacji. Teraz należy go skompilować jako biblioteka i generować .aar.

  7. Szczęśliwy kodowania!

0

Nie można przekonwertować apklib na aar. Musisz zaktualizować zależności ręcznie, aby wskazać plik aar. Zestaw aar jest skompilowany i zawiera reguły dotyczące kłaczków i progu, których apklib niekoniecznie musi określać automatycznie.

można przeczytać trochę więcej na różnicach tutaj:

Android dependencies : apklib vs aar files

+0

Dziękuję. do tej pory wiem, że nie ma out-of-the-box rozwiązanie, aby to zrobić, ale nadal szukam wszelkich pomysłów na jak przeprowadzić migrację z 'apklib' na' aar' bez ręcznej rekompilacji każdej z bibliotek (biorąc pod uwagę, że nie są jeszcze wdrożone jako 'aar'). –