końcowy EDIT:Android Studio w/Gradle: Pakiet R nie istnieje
To był rodzaj długiej pytanie z kilkoma modyfikacjami, a ja nie zawsze postępuje właściwie na każdym etapie drogi . Dla każdego, kto natknie się na to pytanie i ma problemy z konwersją projektu na gradle w Android Studio, sugeruję wypróbowanie this repository wspomnianego w question # 16718026 i spróbowanie zaimportować to i skompilować i uruchomić. Gdy już coś wykonasz, łatwiej będzie zobaczyć, co może być nie tak z twoim projektem.
Podsumowując, oto, co zrobiłem, aby przekonwertować projekt inny niż Gradle Android Studio na działający Gradle jeden, używając Android Studio .2.5, który automatycznie zainstalował Gradle 1.6 i Gradle Plugin .5 dla mnie.
(1) Utworzono nowy pusty projekt Android Studio z ikoną i działaniem. UWAGA: Początkowo nie zdawałem sobie z tego sprawy, ponieważ uczyłem się jednocześnie Androida i Gradle, ale Android Studio (i tak w tej wersji) faktycznie ustawia cię w konfiguracji z wieloma projektami, co było dla mnie kłopotliwe. Multi-Project oznacza, że w hierarchii znajduje się inny folder nad projektem, podając lokalizację do przechowywania ustawień dla wszystkich projektów. AS zrobił nie utworzyć plik build.gradle w folderze podprojektu (w moim przypadku, FrontlineSMS), mimo że przewodnik wideo wskazuje, że będzie. Więc musiałem stworzyć ten plik podprojektem build.gradle a także stworzyć bardzo prosty settings.gradle (patrz Aktualizacja 2 poniżej.)
(2) Skopiowane src/res /, .git /, lib /, .gitignore i AndroidManifest.xml do katalogu głównego nowego projektu.
(3) Używane git mv
do przenoszenia tych elementów do odpowiednich miejsc zgodnie z konwencjami w Podręczniku użytkownika wtyczki Gradle, zastępując lub usuwając niektóre istniejące pliki lub foldery w pustym projekcie, w razie potrzeby.
(4) Utworzony build.gradle
w moim folderze podprojektu i dał kilka podstawowych ustawień (patrz poniżej lub w kwestii związanej powyżej)
(5) Importowana projekt jak opisano w Update 4
Oryginalne pytanie:
Jestem początkującym Android deweloper próbuje przekształcić projekt Android Studio, które obecnie nie korzystać Gradle (i kompiluje i działa dobrze) do jednego, który używa Gradle na OS X. jestem utknęły w błędzie Resource, co prawdopodobnie może mieć związek albo z moją strukturą projektu, ustawieniami w IDE, ustawieniami w plikach build.gradle, albo z pewną ich kombinacją.
Sposób, w jaki zrobiłem konwersję polegał na utworzeniu nowego projektu w Android Studio, skopiowaniu plików do odpowiednich lokalizacji, a następnie dodaniu niektórych ustawień w plikach IDE i build.gradle. My powstała struktura projektu jest
├── frontlinesms-for-android
├── build.gradle
├── gradle
├── gradlew
├── gradle.bat
├── settings.gradle (added in update 2)
├── local.properties
├── lib
└── lib1.jar
└── lib2.jar
└── ...
├── frontlinesms-for-android.iml
├── FrontlineSMS
└── build.gradle
└── src
├── main
│ └── res
│ └── AndroidManifest.xml
│ └── java
│ └── net
│ └── frontlinesms
│ └── android
│ ├── FrontlineSMS.java
│ ├── ...
Przede wszystkim, być może, to kładę RES/folderu na tym samym poziomie jak Java/i AndroidManifest.xml. Próbuję postępować zgodnie z konwencjami wymienionymi w Podręczniku użytkownika wtyczki Gradle, więc nie muszę dostosowywać zbyt wiele w plikach build.gradle.
Również oznaczyłem folder FrontlineSMS/src/main/java/net jako źródło, ponieważ jeśli tego nie zrobię, nic nie będzie próbowało się skompilować. Stworzyłem nowy plik build.gradle w FrontlineSMS/build.gradle, ponieważ nie istniało, gdy robiłem nowy projekt, mimo że film instruktażowy na stronie internetowej Gradle powiedział, że tak.
W środowisku IDE ustawiam również zależności dla bibliotek zewnętrznych, które mam w/lib.
Kiedy próbuję skompilować przez IDE, otrzymuję wiele błędów Package r does not exist
, wskazując, że automatycznie generowana klasa R nie jest generowana ani rozpoznawana. Jest to zdefiniowane w projekcie jako,
import net.frontlinesms.android.R;
w kilku plikach. Co mogę zrobić, aby Android Studio/Gradle rozpoznawał zasoby zdefiniowane w src/main/res?
Odczytując inne pytania, zauważam, że niektóre rozwiązania tego błędu polegały na oznaczeniu folderu "gen /" jako źródłowego katalogu źródłowego lub "wyczyszczeniu" projektu. Próbowałem stworzyć gen/folder w katalogu głównym i oznaczać go jako źródło, ale to nie zadziałało. A przebudowa projektu powoduje po prostu te same błędy.
Mój plik korzeń build.gradle ma następującą,
dependencies {
compile project(':FrontlineSMS')
}
a jeden pod FrontlineSMS/build.gradle ma,
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'
dependencies {
compile file('../lib/acra-3.1.1.jar')
compile file('../lib/activation.jar')
compile file('../lib/additionnal.jar')
compile file('../lib/annotations.jar')
compile file('../lib/libGoogleAnalytics.jar')
compile file('../lib/mail.jar')
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 16
}
}
Kiedy próbuję zbudować z wiersza poleceń za pomocą
./gradlew clean
otrzymuję ten błąd,
(removed error)
Oprócz mojego poprzedniego pytania, doceniam wszelkie wskazówki, które możesz pożyczyć, jak ten projekt powinien być skonstruowany. To nie ma być konfiguracja wielu projektów. Dzięki za pomoc.
Update 1
byłem w stanie wygenerować plik APK z wiersza poleceń. Mój główny problem polega na tym, że wywołałem gradle clean
z niewłaściwego katalogu. Dzwonienie z FrontlineSMS działało. Zgaduję, że Android Studio ustawił mnie z konfiguracją wielu projektów, kiedy miałem tylko jeden projekt, i nie wprowadziłem wszystkich ustawień dla tego, tj. Nie utworzyłem pliku settings.gradle.
Aktualizacja 2
Utworzono następujące settings.gradle plik, który pozwala mi uruchomić gradle clean && gradle build
od katalogu głównego (gdzie rezyduje settings.gradle):
include ':FrontlineSMS'
Uwaga: Wersja z gradle Używam tutaj jest ten zainstalowany przez homebrew, 1.6. Jeśli używam gradlew opakowanie, które zostało zainstalowane mówi,
Gradle version 1.6 is required. Current version is 1.7
wyszukiwanie w sieci dla tego błędu wskazuje na to, że Android nie obsługuje 1.7 w tym momencie, tylko 1.6 (a może to jest zawsze wersja lub dwa z tyłu), ale jest to wersja, która została zainstalowana przez Android Studio, kiedy stworzyłem nowy projekt!
Update 3 (edit: to w zasadzie wszystko jest złe, nie wykonuj tego)
Próbując zbudować projekt z Android Studio daje ten sam błąd jak wyżej w odniesieniu 1.6 są wymagane. Próbowałem ponownie zaimportować projekt, chociaż powiedział, że nie może znaleźć żadnych plików źródłowych. Myślę, że to oznacza albo (1) mam złą wersję gradle i muszę to naprawić i może (2) będę musiał zdefiniować pliki źródłowe w pliku build.gradle mimo wszystko, chociaż myślałem, że podążam za konwencje z przewodnika.
Próbowałem skopiować gradle-wrapper-1.6.jar
w celu zastąpienia gradle/wrapper/gradle-wrapper.jar
, ale to właśnie dało błąd klasy lub metody, która nie została znaleziona, gdy uruchomiłem ją przez ./gradlew clean
.
próba rozwiązanie: W gradle/wrapper/gradle-wrapper.properties
istnieje linia distributionUrl=
i zmieniłem to zwrócić się do wersji 1.6,
distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
Wtedy następnym razem wpadłem ./gradlew clean
go pobrać nową wersję z Gradle do mojego domu katalog ~/.gradle
(który do tej pory nie zdawałem sobie sprawy, że istnieje) i teraz, gdy wpisuję ./gradlew --version
, mówi, że jest na 1.6, a wszystko buduje się za pomocą wiersza poleceń, używając ./gradlew clean && ./gradlew build
, co powoduje apk. Wygląda więc na to, aby pracować z wiersza polecenia, ale również chcę to do pracy z IDE
w IDE to teraz mówi
Project is using an old version of the Android Gradle plug-in. The minimum supported version is 0.5.0
więc zaktualizować plik build.gradle
powiedzieć
classpath 'com.android.tools.build:gradle:0.5'
i ponownym otwarciu IDE, który mówi mi,
Could not find com.android.tools.build:gradle:0.5.
Are Android Studio Gradle plu wersje gin i gradle powiązane razem? Jeśli tak, czego chcę, gradle plugin .4 + gradle 1.6 lub gradle plugin .5 i gradle 1.7? A jak właściwie je zainstalować?
Aktualizacja 4
I wreszcie to do kompilowania zarówno poprzez linię poleceń i IDE. Sztuką było zaimportowanie projektu za pomocą programu Gradle po utworzeniu podstawowych plików Gradle. Dzięki Ethan! Podczas procesu importowania projektu jest krok, w którym wybierasz "Utwórz projekt z istniejących źródeł" lub "Importuj projekt z zewnętrznego modelu". Wybrałem ten pierwszy, kiedy powinienem wybrać to drugie i wybrać Gradle. Potem wybrałem "use gradle-wrapper (recommended)" i zaznacz "use auto-import" i kliknij Finish. To ostrzegł mnie o paru rzeczach musiałem zmienić, takich jak przy użyciu najnowszych Gradle wtyczki, dla którego zrobiłem tę zmianę w moim pliku build.gradle
,
classpath 'com.android.tools.build:gradle:0.5.+'
która jest sugerowane w znanych problemów dla android wtyczki Gradle .
Czy możesz opublikować swój plik settings.gradle? – Ethan