Android Studio w/gradle:包 r 不存在

2023-11-22

最终编辑:

这是一个很长的问题,需要进行多次编辑,而且我不一定在每一步都做正确的事情。对于任何偶然发现这个问题并且在 Android Studio 中将项目转换为 gradle 时遇到困难的人,我建议检查一下这个存储库中提到的问题#16718026并尝试导入它并编译并运行它。一旦你有了一些东西,你就可以更容易地看到你自己的项目可能存在什么问题。

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

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

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

(3) 使用过的git mv根据 Gradle 插件用户指南中的约定将这些项目移动到适当的位置,必要时替换或删除空白项目中的一些现有文件或文件夹。

(4)创建了一个build.gradle在我的子项目文件夹中,并给它一些基本设置(见下文或上面链接的问题)

(5) 按照中所述导入项目Update 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 标记为源,因为如果我不这样做,则不会尝试编译。我在 FrontlineSMS/build.gradle 中创建了一个新的 build.gradle 文件,因为当我创建新项目时它不存在,尽管 Gradle 网站上的教学视频说它存在。

在 IDE 中,我还设置了 /lib 中的外部库的依赖关系。

当我尝试通过 IDE 编译时,我得到了很多Package r does not exist错误,表明自动生成的 R 类未生成或识别。这在项目中定义为,

import net.frontlinesms.android.R;

在几个文件中。我该怎么做才能让 Android Studio / Gradle 识别我在 src/main/res 下定义的资源?

阅读其他人的问题,我注意到此错误的一些解决方案涉及将“gen/”文件夹标记为源根目录或“清理”项目。我尝试在根目录中创建一个 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)

除了我之前的问题之外,如果您能提供有关如何构建该项目的任何建议,我将不胜感激。这并不意味着是一个多项目设置。感谢您的帮助。

Update 1

我能够从命令行生成 APK。我的主要问题是我正在打电话gradle clean来自错误的目录。从 FrontlineSMS 调用它成功了。我猜当我只有一个项目时,Android Studio 为我设置了多项目设置,并且我没有输入该项目的所有设置,即我没有创建 settings.gradle 文件。

Update 2

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

include ':FrontlineSMS'

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

Gradle version 1.6 is required. Current version is 1.7

在网上搜索此错误似乎表明 Android 目前不支持 1.7,仅支持 1.6(也许它总是落后一两个版本),但这是我创建新版本时 Android Studio 安装的版本项目!

Update 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,生成 apk。所以它似乎可以从命令行工作,但我也希望它可以从 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.

Android Studio gradle 插件和 gradle 版本是否绑定在一起?如果是这样,我想要什么,gradle 插件 .4 + gradle 1.6 还是 gradle 插件 .5 和 gradle 1.7?我该如何正确安装这些?

Update 4

我终于通过命令行编译了这个andIDE。诀窍是在创建基本 Gradle 文件后使用 Gradle 导入项目。谢谢伊森!在导入项目过程中,您可以选择“从现有源创建项目”或“从外部模型导入项目”。当我应该选择后者并选择 Gradle 时,我一直选择前者。之后,我选择“使用 gradle-wrapper(推荐)”并选中“使用自动导入”并单击“完成”。它警告我一些必须更改的事情,例如使用最新的 gradle 插件,为此我在我的build.gradle file,

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

这是在 android gradle 插件的已知问题中建议的。


看起来您缺少项目根目录中的 settings.gradle 文件。

您将需要 settings.gradle 文件来访问位于源存储库内的子项目。

当您导入项目时,请务必选择 Gradle 作为源!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Studio w/gradle:包 r 不存在 的相关文章

  • 在旋转时从错误的资源文件夹中提取可绘制对象

    在这里拉我的头发 因此 我正在使用一个具有多种类型的可绘制对象的应用程序 并且它们的结构如下 res Portrait resources drawable mdpi drawable hdpi drawable xhdpi Landsca
  • 具有 java XSLT 扩展的数组

    我正在尝试使用 java 在 XSLT 扩展中使用数组 我收到以下错误 Caused by java lang ClassCastException org apache xpath objects XObject cannot be ca
  • 将 SignedHash 插入 PDF 中以进行外部签名过程 -workingSample

    遵循电子书第 4 3 3 节 PDF 文档的数字签名 https jira nuxeo com secure attachment 49931 digitalsignatures20130304 pdf 我正在尝试创建一个工作示例 其中 客
  • 很好地处理数据库约束错误

    再一次 它应该很简单 我的任务是在我们的应用程序的域对象中放置一个具有唯一约束的特定字段 这本身并不是一个很大的挑战 我刚刚做了以下事情 public class Location more fields Column unique tru
  • Javafx过滤表视图

    我正在尝试使用文本字段来过滤表视图 我想要一个文本字段 txtSearch 来搜索 nhs 号码 名字 姓氏 和 分类类别 我尝试过在线实施各种解决方案 但没有运气 我对这一切仍然很陌生 所以如果问得不好 我深表歉意 任何帮助将不胜感激 我
  • Java整数双除法混淆[重复]

    这个问题在这里已经有答案了 方案1 int sum 30 double avg sum 4 result is 7 0 not 7 5 VS 方案2 int sum 30 double avg sum 4 0 Prints lns 7 5
  • 如何在JSTL中调​​用java方法? [复制]

    这个问题在这里已经有答案了 这可能是重复的问题 我只想调用不是 getter 或 setter 方法的方法例如 xyz 类的 makeCall someObj stringvalue Java类 Class XYZ public Strin
  • 如何修改 Skobbler 注释而不重新添加它

    我必须修改 SKAnnotation 的图像 注释生成器代码 private SKAnnotation getAnnotationFromView int id int minZoomLvl View view SKAnnotation a
  • 哪些 Flutter 插件或功能可以利用外部 iOS/Android 显示器来显示与主显示器不同的内容

    我正在构建一个跨平台应用程序 需要在外部显示器上显示不同的视图 通常通过连接到 LCD 投影仪的 HDMI 适配器电缆连接 Flutter 是否能够在内置的外部显示器上显示不同的屏幕 在现有的 Flutter 插件中还是使用现有的 Flut
  • 测试弱引用

    在 Java 中测试弱引用的正确方法是什么 我最初的想法是执行以下操作 public class WeakReferenceTest public class Target private String value public Targe
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • 模块中的类无法加载

    我正在开发一个 2D Unity android 游戏 其中我最近添加了 Firebase Beta SDK 但添加后FirebaseAnalytics unitypackage我面临的错误是 无法加载模块中的类 当我删除文件夹时Fireb
  • Android:RecyclerView 不显示片段中的列表项

    有人可以帮我尝试让我的 RecyclerView 出现吗 如果我不在片段中实现它 就会出现这种情况 然而 当我尝试将其实现到片段中时 CarFront 中的其他 XML 代码与 RecyclerView 分开显示 我的日志中收到此错误 E
  • Android 中循环事件的星期几和时间选择器

    我想创建一个控件 允许用户在我的 Android 活动中选择一周中的某一天 星期一 和一天中的某个时间 下午 1 00 找不到任何关于此的好帖子 好吧 我想我已经明白了 我只是不喜欢这个解决方案 因为我在一周中的某一天使用的微调器与时间选择
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • 尝试将 SQLite DB 从数据复制到 SD 卡

    我正在使用以下代码 该代码发布在 Stack Overflow 上的某个位置 并根据我的目的进行了修改 try File sd Environment getExternalStorageDirectory File data Enviro
  • 使用单选按钮更改背景颜色 Android

    我试图通过从单选组中选择单选按钮来更改应用程序选项卡的背景 但是我不确定如何执行此操作 到目前为止我已经 收藏夹 java import android app Activity import android os Bundle publi
  • ServletContainer 类未找到异常

    我无法再编译我的球衣项目 并且出现以下异常 GRAVE Servlet Project API threw load exception java lang ClassNotFoundException com sun jersey spi
  • 调整添加的绘制组件的大小和奇怪的摆动行为

    这个问题困扰了我好几天 我正在制作一个特殊的绘画程序 我制作了一个 JPanel 并添加了使用 Paint 方法绘制的自定义 jComponent 问题是 每当我调整窗口大小时 所有添加的组件都会 消失 或者只是不绘制 因此我最终会得到一个
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import

随机推荐

  • CSS3 Box 阴影到 div 的一半

    我想将盒子阴影应用到 div 的一半 我在谷歌上搜索了很多 但都失败了 这是简单盒子阴影的代码 div Sometimes by losing a battle you find a new way to win the war div
  • AttributeError:部分初始化的模块“pandas”没有属性“DataFrame”[重复]

    这个问题在这里已经有答案了 我想运行此代码 但我不能运行并收到此错误 我还下载了 pandas 包 import pandas data Day 1 2 3 4 5 6 7 8 9 10 Visitors 18 26 18 18 9 9 2
  • 为什么 dotmemory 在尝试附加到实时进程时无法收集内存流量和堆栈跟踪信息

    我有一个asp net应用程序 在应用程序提供服务之前 它需要构建一个非常大的本地缓存 我想分析代码的特定部分 我的应用程序非常庞大 我不想完整地分析它 我只想分析服务请求的代码路径 我开始使用dotMemory跟踪我的应用程序内存使用情况
  • 在 Java 的 if 块中使用逻辑运算符或按位运算符有区别吗?

    应执行以下两个 if 块的内容 if booleanFunction otherBooleanFunction if booleanFunction otherBooleanFunction 那么使用有什么区别 或使用 注意 我对此进行了研
  • 如何在 iOS 10 中处理 UserNotifications 操作

    所以我可以像这样安排通知 iOS 10 Notification if available iOS 10 0 var displayDate String let dateFormatter DateFormatter dateFormat
  • Java 正则表达式不区分大小写不起作用

    我正在尝试使用下面的程序使用正则表达式删除字符串中的一些单词 它可以正确删除 但只考虑大小写 如何使其不区分大小写 我保留了 1 in replaceAll方法但是没有用 package com test java public class
  • 如何从 Google Glass 中的卡片开始意图

    我试过这个应用程序 Crystal Shopper https crystalshopper herokuapp com 这似乎能够从卡启动应用程序 正如您在此屏幕截图中看到的 https crystalshopper herokuapp
  • php:file_get_contents编码问题

    我的任务很简单 向translate google com 发出发布请求并获取翻译 在下面的示例中 我使用 hello 一词翻译成俄语 header Content Type text plain charset utf 8 optiona
  • 在不使用 Ghostscript 且仅使用 ImageMagik 的情况下压缩文本较多的 PDF 会导致文本模糊

    我正在尝试使用代码压缩校报的 PDF 版本 并创建了以下完美运行的脚本 gs dNOPAUSE dBATCH sDEVICE pdfwrite dCompatibilityLevel 1 4 dPDFSETTINGS ebook sOutp
  • 在目标 c 中将数字转换为单词

    我需要写下这样的数字 1 gt 耶克 123 gt 我的朋友 1 123 gt 耶克 赫扎尔 耶克萨德 比斯特 奥塞 3 002 001 gt Se milion o do hezar o yek 我是目标 c 的初学者 我用 c 编写它
  • java for 循环不工作

    我希望这不是一个愚蠢的问题 但我已经查找了我能找到的每个示例 但似乎我的代码仍然正确 但它仍然无法正常工作 我输入一个数字 然后它会转到下一个数字一行代码而不是循环 我用它来用用户输入的数字填充数组 我很感激任何帮助 谢谢 for i 0
  • 如何使用 talend 和 sql server 更快地加载数据

    我使用 Talend 将数据加载到 sql server 数据库中 看来我的工作最薄弱的地方不是数据处理 而是数据库中的有效负载 其速度不超过 17 行 秒 有趣的是 我可以同时启动 5 个作业 它们都将以 17 行 秒的速度加载 什么可以
  • Double.ToString() 何时返回科学计数形式的值?

    我认为它与前导零或尾随零的数量有关 但我在 msdn 中找不到任何可以给我具体答案的内容 在什么时候Double ToString CultureInfo InvariantCulture 开始以科学记数法返回值 从文档中Double To
  • 使用 IOS 8.3 的 Safari 上的 Angular ng-click 问题

    这是一个奇怪的问题 很难产生和探索 在使用 Angular 构建 Web 应用程序时 我的老板发现应用程序上的所有按钮都使用ng click指令不起作用 现在 这个问题只发生在iphone 6 with IOS 8 3 and using
  • 使用nodejs gcloud api移动/重命名Google Cloud Storage中的文件夹

    我正在尝试使用 gcloud api 重命名或移动 google 云存储中的文件夹 类似的问题解释了如何删除文件夹 使用nodejs gcloud api删除Google Cloud Storage中的文件夹 但是如何重命名文件夹呢 或转向
  • 使用C#从USB读取数据?

    我不想读取串行端口或其他可能的简单快捷方式 我想知道如何使用 C 读取笔记本电脑中的 USB 端口 无论您是否可以推荐一个网站或解释一下流程的流程 我将非常感谢您的帮助 如果你想做 USB 开发 Jan Axelson 的 USB Comp
  • Combobox Cascading 需要更具体的cascadeFrom 选项

    我想使用 Kendo UI ComboBox 的 CascadeFrom 功能 但令我沮丧的是 该选项似乎只接受 ID 现在我无法使用该 ID 因为组合框是动态添加的 并且可能多次添加 从而导致多个控件具有相同的 ID 有谁知道如何将特定的
  • hprof 中“无引用”的对象

    我正在调查一个hprofVisualVM 中的文件 服务器运行 JDK 1 4 2 30 并具有 1 GB 堆 NewSize 为 200 Mb hprof 显示 56000 个实例占用了 71 的堆int 在 VisualVM 中查看时
  • 现在允许使用 Instagram API 上传视频吗?

    据 Instagram 报道文档 Instagram 仅允许 API 上传图像 JPG PNG 一款名为 Cinamatic 的新 iPhone 应用程序允许用户通过 Cinamatic 登录 Instagram 后将视频上传到 Insta
  • Android Studio w/gradle:包 r 不存在

    最终编辑 这是一个很长的问题 需要进行多次编辑 而且我不一定在每一步都做正确的事情 对于任何偶然发现这个问题并且在 Android Studio 中将项目转换为 gradle 时遇到困难的人 我建议检查一下这个存储库中提到的问题 16718