Я пытаюсь перенести проект из Eclipse, но ничего из того, что я пробовал, не работает. В Eclipse у меня есть 3 проекта (2 проекта приложений для Android и 1 проект библиотеки для Android). 2 проекта приложения зависят от проекта библиотеки. Когда я делаю экспорт gradle, я получаю 3 проекта, которые не работают. Я открыт для реструктуризации проекта, но не нашел документации о том, как это сделать.
Есть ли способ заставить работать вместе 3 проекта, которые экспортирует Eclipse? Я лучше перестроить вещи, и если да, то документация о том, как это должно быть сделано?
Обновить
Я загрузил весь проект на GitHub https://github.com/respectTheCode/android-studio-library-example
Обновление 1
Основываясь на предложениях Падмы Кумар, это то, что я попробовал.
- Создать новый проект под названием
MyApp
- Нажмите
File > New Module
, выберитеAndroid Library
и назовите егоMyLib
- щелчок
Build > Make Project
Сбой сборки с этой ошибкой
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.
Затем я добавил package
атрибут в манифест, делающий его
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mylib" >
После сборки я получаю эту ошибку
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
Добавление зависимости, похоже, не влияет на ошибку. Продолжая сверху
- щелчок
File > Project Structure > Modules > MyApp-MyApp
- Переключиться на
Dependencies
вкладку - Нажмите
+ > Module Dependency
и выберитеMyLib
- Нажмите
Apply
иOK
- щелчок
Build > Make Project
Обновление 2
Основываясь на предложениях Итана, это то, где мы получаем
build.gradle
Похоже, что в подпроекте 2 есть все правильные части, и единственная разница заключается в том, что плагин ниже MyApp/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
}
}
Корневой проект build.gradle
был пуст, поэтому я добавил два таких проекта
dependencies {
compile project(":MyLib")
compile project(":MyApp")
}
Теперь я получаю эту ошибку при сборке
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.
Обновление 3
Большое спасибо Итану за решение этого.
- Добавить
compile project(':SubProjects:MyLib')
кMyLib/build.gradle
- Удалить
compile files('libs/android-support-v4.jar')
изMyLib/build.gradle
- Закройте проект и импортируйте корневой проект из gradle
Обновление 4
Начиная с версии 0.1.2 вы можете включить compile "com.android.support:support-v4:13.0.0"
вместо compile files('libs/android-support-v4.jar')
. Поскольку это исходит от Mavin, теперь вы можете включить это в несколько проектов без проблем.
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')
}
Обновление 5
Начиная с версии 0.1.3 на панели инструментов теперь есть кнопка «Синхронизировать проект». Вы можете щелкнуть это вместо повторного импорта проекта после внесения изменений в .gradle
файлы.
compile 'com.google.android:support-v4:r6'
в каждый из своих проектов плагин maven (как в примере build.gradle ниже) вместо compile files('libs/android-support-v4.jar')
gradle, то поймете, что оба проекта включают в себя одно и то же, и включит его только один раз.