Android Studio w / gradle: пакет r не существует

Окончательное редактирование:

Это был довольно длинный вопрос с несколькими правками, и я нене обязательно делать правильные вещи на каждом этапе пути. Для тех, кто сталкивается с этим вопросом и испытывает затруднения при преобразовании проекта в gradle в Android Studio, я 'буду предлагать проверитьэтот репозиторий упоминается ввопрос # 16718026 и пытается импортировать это и скомпилировать и запустить его. Как только у вас что-то работаетПроще понять, что может быть не так с вашим собственным проектом.

Подводя итог, здесьЭто то, что я сделал, чтобы превратить не-Gradle проект Android Studio в работающий Gradle, используя Android Studio .2.5, которая автоматически установила Gradle 1.6 и Gradle Plugin .5 для меня.

(1) Создан новый пустой проект Android Studio с иконкой и активностью. ПРИМЕЧАНИЕ: я неПоначалу я не осознавал этого, потому что я изучал Android и Gradle одновременно, но Android Studio (в любом случае, в этой версии) фактически настраивает вас на установку нескольких проектов, что меня смущало. Мульти-проект означает тамs другая папка над вашим проектом в иерархии, где указано место для хранения настроек для всех проектов. Как сделалне создайте файл build.gradle в папке подпроекта (в моем случае FrontlineSMS), несмотря на видео-руководство, указывающее, что это будет. Поэтому мне пришлось создать этот подпроект build.gradle, а также создать очень простой файл settings.gradle (см.Обновление 2 ниже.)

(2) Скопировал src /, res /, .git /, lib /, .gitignore и AndroidManifest.xml в корневой каталог нового проекта.

(3) Используетсяgit mv переместить эти элементы в соответствующие места в соответствии с соглашениями, изложенными в Руководстве пользователя модуля Gradle, заменив или удалив некоторые существующие файлы или папки в пустом проекте, где это необходимо.

(4) создалbuild.gradle в моей папке подпроекта и дал ему некоторые основные настройки (см. ниже или в вопросе, связанном выше)

(5) Импортировал проект, как описано вОбновление 4

Оригинальный вопрос: я

Я начинающий разработчик Android, пытающийся преобразовать проект Android Studio, который в настоящее время не использует Gradle (и компилируется и работает нормально), в проект, который использует Gradle в OS X.Я застрял в ошибке ресурса, которая, я думаю, может быть связана либо со структурой моего проекта, настройками в IDE, настройками в файлах build.gradle, либо с их сочетанием.

Для преобразования я сначала создал новый проект в Android Studio, скопировал файлы в соответствующие места, затем добавил некоторые параметры в файлы IDE и build.gradle. Моя итоговая структура проекта,

├── 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
           │                   ├── ...

Наиболее заметно, может быть, я поместил папку res / на тот же уровень, что и java / и AndroidManifest.xml. Я'я стараюсь следовать соглашениям, упомянутым в руководстве пользователя Gradle Plugin, поэтому я нене нужно слишком много настраивать в файлах build.gradle.

Я также отметил папку FrontlineSMS / src / main / java / net как источник, потому что если я нет тогда ничего не пытается компилировать. Я создал новый файл build.gradle в FrontlineSMS / build.gradle, потому что он не существовал, когда я создавал новый проект, хотя в учебном видео на веб-сайте Gradle об этом говорилось.

В IDE я также устанавливаю зависимости для внешних библиотек в / lib.

Когда я пытаюсь скомпилировать через IDE, я получаю многоPackage r does not exist ошибки, указывающие на то, что автоматически сгенерированный класс R не генерируется и не распознается. Это определяется в проекте как,

import net.frontlinesms.android.R;

в нескольких файлах. Что я могу сделать, чтобы Android Studio / Gradle распознал ресурсы, которые я определил в src / main / res?

Чтение на чужих вопросы, я заметил, что некоторые решения этой ошибки связаны с пометкой "ген /» папка в качестве исходного корня или "чистка» проект. Я попытался создать папку gen / в корневом каталоге и пометить ее как источник, но это нет работа. И перестройка проекта просто дает мне те же ошибки.

Мой корневой файл build.gradle имеет следующее,

dependencies {
   compile project(':FrontlineSMS')
}

И тот, что в FrontlineSMS / build.gradle имеет,

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
    }
}

Когда я пытаюсь собрать из командной строки, используя./gradlew clean Я получаю эту ошибку,

(removed error)

В дополнение к моему предыдущему вопросу яБуду признателен за любые советы о том, как этот проект должен быть структурирован. Это не предназначено, чтобы быть установкой мультипроекта. Спасибо за вашу помощь.

Обновление 1

Я смог сгенерировать APK из командной строки. Моя главная проблема - я звонюgradle clean из неправильного каталога. Звонок из FrontlineSMS сработал. Я'Я предполагаю, что Android Studio настроила меня на установку нескольких проектов, когда у меня был только один проект, и у меня не былоЯ ввел все настройки для этого, то есть я не имелt создал файл settings.gradle.

Обновление 2

Создан следующий файл settings.gradle, который позволяет мне запускатьgradle clean && gradle build из корневого каталога (где находится файл settings.gradle):

include ':FrontlineSMS'

Примечание: версия Gradle I 'м здесь используется тот, который установлен homebrew, 1.6. Если я использую установленную упаковку Gradlew, она говорит:

Gradle version 1.6 is required. Current version is 1.7

Поиск в Интернете этой ошибки, кажется, указывает на то, что Android неt поддерживает 1.7 на данный момент, только 1.6 (и, возможно, этоЭто всегда одна или две версии), но эта версия была установлена Android Studio, когда я создавал новый проект!

Обновление 3 (редактировать: это в принципе все неправильно, неследовать этому)

Попытка собрать проект из Android Studio приводит к той же ошибке, что и выше, касательно 1.6. Я попытался повторно импортировать проект, хотя он сказал, что не может найти никаких исходных файлов. Я думаю, это означает, что либо (1) у меня неправильная версия gradle, и мне нужно ее исправить, и, возможно, (2) яВ конце концов мне нужно будет определить исходные файлы в файле build.gradle, хотя я думал, что следую соглашениям из руководства.

Я пробовал копироватьgradle-wrapper-1.6.jar заменитьgradle/wrapper/gradle-wrapper.jar но это просто дало ошибку классу или методу не найден, когда я его запустил../gradlew clean

Попытка решения: Вgradle/wrapper/gradle-wrapper.properties есть линияdistributionUrl= и я изменил это, чтобы указать на версию 1.6,

distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip

Тогда в следующий раз я побежал./gradlew clean он загрузил новую версию Gradle в мой домашний каталог~/.gradle (который до сих пор я нет понял, существовал) и теперь, когда я печатаю./gradlew --version он говорит, что это на 1.6, и все собирается через командную строку, используя./gradlew clean && ./gradlew build, в результате чего в apks. Так что, похоже, работает из командной строки, но я также хочу, чтобы это работало из IDE

В IDE сейчас написано

Project is using an old version of the Android Gradle plug-in. The minimum supported version is 0.5.0

Поэтому я обновляюbuild.gradle файл, чтобы сказать

classpath 'com.android.tools.build:gradle:0.5'

И снова откройте IDE, которая говорит мне,

Could not find com.android.tools.build:gradle:0.5.

Связаны ли плагин Gradle для Android Studio и версии Gradle? Если так, что я хочу, плагин Gradle .4 + Gradle 1.6 или плагин Gradle .5 и Gradle 1.7? И как мне правильно установить эти?

Обновление 4

Я наконец получил это для компиляции через командную строкуа также IDE. Хитрость заключалась в том, чтобы импортировать проект с использованием Gradle после создания основных файлов Gradle. Спасибо, Итан! Во время процесса импорта проекта тамэто шаг, на котором вы выбираетеСоздать проект из существующих источников » или же "Импортировать проект из внешней модели », Я'выбирал первое, когда мне следоваломы выбрали последнее и выбрали Gradle. После этого я выбралиспользовать gradle-обертку (рекомендуется) и проверилиспользовать авто-импорт " и нажал Готово. Он предупредил меня о паре вещей, которые мне пришлось изменить, таких как использование последнего подключаемого модуля Gradle, для которого я сделал это изменение в своемbuild.gradle файл,

classpath 'com.android.tools.build:gradle:0.5.+'

что предлагается в известных проблемах для плагина Android Gradle.

Ответы на вопрос(3)

Ваш ответ на вопрос