Jak zbudować bibliotekę Android z Android Studio i gradle?
Próbuję migrować projekt z Eclipse, ale nic, czego próbowałem, nie działa. W Eclipse mam 3 projekty (2 projekty aplikacji na Androida i 1 projekt biblioteki Android). Projekty 2 aplikacji zależą od projektu biblioteki. Kiedy wykonuję eksport stopniowy, otrzymuję 3 projekty, które nie działają. Jestem otwarty na restrukturyzację projektu, ale nie znalazłem żadnej dokumentacji dotyczącej tego, jak należy to zrobić.
Czy istnieje sposób, aby trzy projekty, które eksportują Eclipse, współpracowały ze sobą? Czy jestem lepszy od restrukturyzacji, a jeśli tak, to jak to zrobić?
Aktualizacja
Przesłałem cały projekt do GitHubhttps://github.com/respectTheCode/android-studio-library-example
Aktualizacja 1
Na podstawie sugestii Padmy Kumara próbowałem tego.
Utwórz nowy projekt o nazwieMyApp
KliknijFile > New Module
, wybierzAndroid Library
i nazwij toMyLib
KliknijBuild > Make Project
Kompilacja kończy się niepowodzeniem z tym błędem
Module "MyLib" was fully rebuilt due to project configuration/dependencies changes
Compilation completed with 1 error and 0 warnings in 19 sec
1 error
0 warnings
/.../MyApp/MyLib/build/bundles/debug/AndroidManifest.xml
Gradle: <manifest> does not have package attribute.
Potem dodałempackage
atrybut do manifestu, który go tworzy
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mylib" >
Po zbudowaniu otrzymuję ten błąd
Module "MyApp" was fully rebuilt due to project configuration/dependencies changes
Compilation completed with 2 errors and 0 warnings in 13 sec
2 errors
0 warnings
/.../MyApp/MyLib/src/main/java/com/example/mylib/MainActivity.java
Gradle: package R does not exist
Gradle: package R does not exist
Dodanie zależności nie wydaje się mieć żadnego wpływu na błąd. Kontynuacja z góry
KliknijFile > Project Structure > Modules > MyApp-MyApp
Przełącz naDependencies
PatkaKliknij+ > Module Dependency
i wybierzMyLib
KliknijApply
iOK
KliknijBuild > Make Project
Aktualizacja 2
Na podstawie sugestii Ethana właśnie tam się znajdujemy
Podprojekt 2build.gradle
wydają się mieć wszystkie poprawne części, a jedyną różnicą jest linia wtyczek poniżejMyApp/build.gradle
.
buildscript {
repositories {
maven { url 'http://repo1.maven.org/maven2' }
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'
dependencies {
compile files('libs/android-support-v4.jar')
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 16
}
}
Projekt głównybuild.gradle
było puste, więc dodałem dwa takie projekty
dependencies {
compile project(":MyLib")
compile project(":MyApp")
}
Teraz otrzymuję ten błąd podczas budowania
Gradle:
FAILURE: Build failed with an exception.
* Where:
Build file '/Users/kevin/GitHub/AppPress/MyApp/build.gradle' line: 2
* What went wrong:
A problem occurred evaluating root project 'MyApp'.
> Could not find method compile() for arguments [project ':MyLib'] on root project 'MyApp'.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
Aktualizacja 3
Wielkie dzięki Ethan za rozwiązanie tego problemu.
Dodajcompile project(':SubProjects:MyLib')
doMyLib/build.gradle
Usunąćcompile files('libs/android-support-v4.jar')
zMyLib/build.gradle
Zamknij projekt i zaimportuj projekt główny z poziomuAktualizacja 4
Od 0.1.2 możesz teraz dołączyćcompile "com.android.support:support-v4:13.0.0"
zamiastcompile files('libs/android-support-v4.jar')
. Ponieważ teraz pochodzi od mavina, możesz bez problemu włączyć go do wielu projektów.
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4.2'
}
}
apply plugin: 'android'
dependencies {
compile "com.android.support:support-v4:13.0.0"
compile project(':SubProjects:MyLib')
}
Aktualizacja 5
Od wersji 0.1.3 na pasku narzędzi znajduje się teraz przycisk „Synchronizuj projekt”. Możesz go kliknąć, zamiast ponownie importować projekt po wprowadzeniu zmian.gradle
pliki.