Я пытаюсь перенести проект из 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, то поймете, что оба проекта включают в себя одно и то же, и включит его только один раз.Ответы:
Примечание . Этот ответ - чистый ответ Gradle, я использую его в IntelliJ на регулярной основе, но я не знаю, как происходит интеграция с Android Studio. Я верю в знание того, что происходит для меня, поэтому я использую Gradle и Android.
TL; DR Полный пример - https://github.com/ethankhall/driving-time-tracker/
Отказ от ответственности : это проект, над которым я работаю.
Gradle имеет определенную структуру (которую вы можете изменить, ссылка внизу покажет вам, как), которая очень похожа на Maven, если вы когда-либо ее использовали.
Если у вас есть только один проект, файл settings.gradle не нужен. Однако вы хотите добавить больше проектов, поэтому нам это нужно.
Теперь давайте взглянем на этот файл build.gradle. Вам это понадобится (чтобы добавить инструменты для Android)
build.gradle
Теперь нам нужно рассказать Gradle о некоторых деталях Android. Это довольно просто. Базовый (который работает в большинстве моих случаев) выглядит следующим образом. У меня есть комментарий в этом блоке, он позволит мне указать имя и код версии при создании APK.
build.gradle
Нечто, что мы хотим добавить, чтобы помочь тем, кто еще не видел свет Gradle, способ использовать проект без его установки.
build.gradle
Так что теперь у нас есть один проект для строительства. Теперь мы собираемся добавить другие. Я помещаю их в каталог, возможно, называю это deps или подпроектами. Это на самом деле не имеет значения, но вам нужно знать, куда вы положили. Чтобы сообщить Gradle, где находятся проекты, вам нужно добавить их в settings.gradle.
Структура каталогов:
settings.gradle:
Последнее , что вы должны убедиться является подпроекты / reallyCoolProject1 / build.gradle имеет
apply plugin: "android-library"
вместоapply plugin: "android"
.Как и в любом проекте Gradle (и Maven), теперь нам нужно сообщить корневому проекту о его зависимости. Это может также включать любые обычные зависимости Java, которые вы хотите.
build.gradle
Я знаю, что это кажется большим количеством шагов, но они довольно просты, если вы сделаете это один или два раза. Этот способ также позволит вам использовать CI-сервер, если на нем установлен Android SDK.
Примечание стороны NDK: Если вы собираетесь использовать NDK, вам понадобится что-то вроде ниже. Пример файла build.gradle можно найти здесь: https://gist.github.com/khernyo/4226923
build.gradle
Источники:
источник
У меня были очень похожие проблемы с сборкой / добавлением библиотеки .jar. Я получил это с помощью комбинации:
compile fileTree(dir: 'libs', include: '*.jar')}
Но что еще более важно и досадно, всего через несколько часов после того, как я начал работать, Android Studio только что выпустила 0.3.7, в которой утверждается, что она решает множество проблем, таких как добавление библиотек .jar.
http://tools.android.com/recent
Надеюсь, это поможет людям!
источник
Вот мое решение для пользователей Mac, я думаю, что это работает и для окна:
Сначала перейдите на панель инструментов Android Studio
Build> Make Project (пока вы, ребята, онлайн, дайте ему возможность скачивать файлы), а затем
Build> Compile Module «здесь отображается имя вашего приложения» (все еще в сети, пусть файлы
загружаются и заканчиваются), а затем
Запустите приложение, которое готово, оно запустит ваш эмулятор и настроит его, а затем запустит!
Вот и все !!! С Днем кодирования ребята !!!!!!!
источник
Gradle Build Tools 2.2.0+ - все просто работает
Это правильный способ сделать это
Пытаясь избежать экспериментального и откровенно сытого по горло NDK и всей его хакерской атакой, я счастлив, что вышел 2.2.x из Gradle Build Tools, и теперь он просто работает. Ключ
externalNativeBuild
и указываетndkBuild
путь аргумент наAndroid.mk
или измененияndkBuild
вcmake
и указать аргумент пути в видеCMakeLists.txt
сценария сборки.Для более подробной информации посетите страницу Google по добавлению нативного кода .
После того, как это настроено правильно, вы можете
./gradlew installDebug
и пошли. Вам также нужно знать, что NDK переходит на лязг, поскольку gcc теперь не поддерживается в Android NDK.источник