Я пытаюсь перенести проект из Eclipse, но ничего, что я пробовал, работает. В Eclipse у меня есть 3 проекта (2 проекта приложений для Android и 1 проект библиотеки Android). Проекты из двух приложений зависят от проекта библиотеки. Когда я делаю экспорт 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
Основываясь на предложениях от Этана, мы получаем
У 2-подпроекта build.gradle
, кажется, есть все правильные части, и единственная разница в том, что строка плагина ниже 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
файлы.