Java Android Studio w/gradle:包r不存在

Java Android Studio w/gradle:包r不存在,java,android,gradle,android-studio,Java,Android,Gradle,Android Studio,最终编辑: 这是一个很长的问题,经过多次修改,我不一定在每一步都做了正确的事情。对于任何在Android Studio中将项目转换为gradle时遇到问题的人,我建议查看中提到的内容,并尝试导入、编译和运行该项目。一旦你有了工作,就更容易看出你自己的项目有什么问题 总而言之,以下是我使用Android Studio.2.5将一个非Gradle Android Studio项目转换为一个工作Gradle项目所做的工作,它为我自动安装了Gradle 1.6和Gradle插件.5 (1) 创建了一个新

最终编辑:

这是一个很长的问题,经过多次修改,我不一定在每一步都做了正确的事情。对于任何在Android Studio中将项目转换为gradle时遇到问题的人,我建议查看中提到的内容,并尝试导入、编译和运行该项目。一旦你有了工作,就更容易看出你自己的项目有什么问题

总而言之,以下是我使用Android Studio.2.5将一个非Gradle Android Studio项目转换为一个工作Gradle项目所做的工作,它为我自动安装了Gradle 1.6和Gradle插件.5

(1) 创建了一个新的带有图标和活动的空白Android Studio项目。注意:一开始我没有意识到这一点,因为我同时在学习Android和Gradle,但Android Studio(无论如何在这个版本中)实际上为您设置了一个多项目设置,这让我感到困惑。“多项目”表示在层次结构中,项目上方有另一个文件夹,为所有项目提供存储设置的位置。AS没有在子项目文件夹(在我的例子中是FrontlineSMS)中创建build.gradle文件,尽管视频指南指出它会创建。因此,我必须创建子项目build.gradle文件,并创建一个非常简单的settings.gradle(请参见下面的更新2)

(2) 已将src/、res/、.git/、lib/、.gitignore和AndroidManifest.xml复制到新项目的根目录中

(3)使用代码> Git MV 将这些项目按GADLE插件用户指南中的约定移动到适当的位置,在需要时替换或删除空白项目中的一些现有文件或文件夹。 (4) 在我的子项目文件夹中创建了一个

build.gradle
,并为其提供了一些基本设置(请参见下面或上面链接的问题)

(5) 按照更新4中的说明导入项目

原始问题:

我是一名Android新手,正在尝试将当前不使用Gradle(并且编译和运行良好)的Android Studio项目转换为在OS X上使用Gradle的项目。我遇到了一个资源错误,我认为这可能与我的项目结构、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插件用户指南中提到的约定,这样我就不必在build.Gradle文件中自定义太多内容

我还将文件夹FrontlineSMS/src/main/java/net标记为source,因为如果我不这样做,那么就不会尝试编译。我在FrontlineSMS/build.gradle中创建了一个新的build.gradle文件,因为在我创建新项目时它并不存在,尽管gradle网站上的一个教学视频说它会存在

在IDE中,我还为/lib中的外部库设置依赖项

当我试图通过IDE编译时,我得到许多
包r不存在
错误,表明自动生成的r类没有生成或识别。这在项目中定义为:

import net.frontlinesms.android.R;
在几个文件中。我该怎么做才能让Android Studio/Gradle识别我在src/main/res下定义的资源

在阅读其他人的问题时,我注意到这个错误的一些解决方案包括将“gen/”文件夹标记为源根目录或“清理”项目。我尝试在根目录中创建一个gen/文件夹,并将其标记为source,但没有成功。而且,重建项目只会给我同样的错误

我的root 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
从命令行构建时,我得到了这个错误

除了我前面的问题,我很感激你能提供关于这个项目应该如何组织的任何建议。这并不意味着是一个多项目设置。谢谢你的帮助

更新1

我能够从命令行生成APK。我的主要问题是我从错误的目录调用了
gradleclean
。从前线呼叫成功了。我猜Android Studio在我只有一个项目的时候就为我设置了一个多项目设置,而我并没有为此输入所有设置,也就是说,我没有创建settings.gradle文件

更新2

创建了以下settings.gradle文件,允许我从根目录(settings.gradle所在的目录)运行
gradle clean&&gradle build

注意:我在这里使用的gradle版本是由homebrew 1.6安装的版本。如果我使用安装的gradlew包装,它会说

Gradle version 1.6 is required. Current version is 1.7
在网上搜索这个错误似乎表明Android目前不支持1.7,只支持1.6(可能总是落后一两个版本),但这是我创建新项目时Android Studio安装的版本

更新3(编辑:这基本上都是错的,不要遵循这个)

尝试从AndroidStudio构建项目会产生与上述相同的错误,即需要1.6版本。我尝试重新导入该项目,尽管它说找不到任何源文件。我想这意味着要么(1)我有错误的gradle版本,需要修复它,要么(2)我需要在build.gradle文件中定义源文件,尽管我认为我遵循了指南中的约定

我试图复制
gradle-wrapper-1.6.jar
来替换
gradle/wrapp
include ':FrontlineSMS'
Gradle version 1.6 is required. Current version is 1.7
distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
Project is using an old version of the Android Gradle plug-in. The minimum supported version is 0.5.0
classpath 'com.android.tools.build:gradle:0.5'
Could not find com.android.tools.build:gradle:0.5.
classpath 'com.android.tools.build:gradle:0.5.+'
Could not find com.android.tools.build:gradle:0.5.