在Android Studio中导入的模块找不到导入的类

43
我最近下载了ViewPagerIndicator库并将其导入到Android Studio中。将其添加到我的项目后,我遇到了一个渲染错误:“找不到以下类:”,然后指向com.viewpagerindicator.IconPageIndicator。
我所采取的步骤是文件->导入模块->'库名称'项目结构 -> 依赖项 -> + 导入的模块。然后在我的布局XML文件中添加了<com.viewpagerindicator.IconPageIndicator />,之后我遇到了缺少类的问题。
它可以编译得很好,我检查了所有build.gradle和settings.gradle文件,并将它们与在线上应有的进行了比较。 MyApp->build.gradledependencies下有compile project(':library')settings.gradle没有出现构建错误,其中包括include ':library'

我无法重现这个问题。这是我在我的布局XML中的代码: - Eugene
在你的项目中,类的路径会是什么样子? - user1971
你是在问.java文件的位置吗?它在${project}/library/src/main/java/com/viewpagerindicator/IconPageIndicator.java中。 - Eugene
1
дҪ зҡ„еә”з”ЁзЁӢеәҸжЁЎеқ—жҳҜеҗҰеңЁbuild.gradleж–Ү件дёӯзҡ„дҫқиө–йЎ№дёӯжңүcompile project(':library')пјҹжҲ‘зңӢеҲ°дҪ дҪҝз”ЁдәҶUIж·»еҠ жЁЎеқ—дҫқиө–пјҢдҪҶеҸӘжҳҜжғізЎ®и®ӨдёҖдёӢгҖӮ - Eugene
离开电脑一段时间;我可能会在这个周末回来,但很可能不是。我使用了UI进行导入。 - user1971
9个回答

56

首先,您必须按照以下路径导入您的库项目:

File --> New --> Import Module
在成功导入库项目后,您必须检查项目文件夹内的build.gradle文件是否在“dependencies”部分中存在以下行:
implementation project(':NameOfTheLibProject')

那么你的项目必须成功构建。


10
请查看 settings.gradle 文件并像这样包含库:include ':app', ':mylib' - Bheid
4
compile 已被弃用,请使用 implementationapi 替代。 - user1300214
此外,为了让您更好地理解,注意到您新导入的模块的 build.gradle 文件顶部有一行代码,内容为 apply plugin: 'com.android.library',而您的应用程序的 build.gradle 文件则有一行代码,内容为 apply plugin 'com.android.application'。这只是一个表面层次的洞察力,展示了IDE为您的方便所做的工作! :P - varun

13

我发现我的问题在于项目结构--> 项目下的Android插件版本与我所有插件使用的版本不同。一旦我将它们对齐到相同版本,我就能看到从我导入的模块中继承来的所有类。

花了我好几个小时 :(


你需要检查项目和导入模块的Android插件版本是否相同。 - Quintin Balsdon
3
这似乎是 Android 模块的限制。如果我们想要使用 gradle 插件 com.android.tools.build:gradle:2.1.0 的主项目和 com.android.tools.build:gradle-experimental:0.7.0 的库模块怎么办?在这种情况下,主项目无法看到库模块的类 :-(。+1 给你的答案。 - Abc.Xyz
这也救了我的一天:我的主要项目(android-gradle-plugin 2.4.0-alpha7)正在重用外部模块(来自另一个项目,其android-gradle-plugin为2.3.3)。 通过对齐所有插件,一些代码(在IDE中可见但对于Gradle不可见)突然变得对Gradle可见。 - Lakedaemon
这听起来像是我遇到的问题,但当我进入“项目结构>项目”时,“Android插件版本”字段为空白。只有“Gradle版本”被填充。如果我在该字段中键入任何内容,它似乎会被重置。有什么想法吗?这让我非常苦恼。 - Dan

12

我曾经遇到过同样的问题。 我只是执行了:使无效/重新启动..


卡在这里差不多一个小时了,但是这个解决了我的问题。我登录到 so 只是为了点赞这个答案。 - Yawar

6

我也遇到了导入模块的问题,因为它没有出现在模块列表中。对我起作用的方法是手动将其输入到settings.gradle中,方法如下:

include ':app', 'module_name'

并且在 build.gradle 文件中

compile project(':module_name')

5
在我的情况下,我在app gradle中添加了以下内容:
// Nearly deprecated.
compile project(':NameOfTheLibProject')
// Or
implementation project(':NameOfTheLibProject')

但是只有当我改变时它才有效。
compileSdkVersion 
minSdkVersion 
targetSdkVersion 

app和其他模块是相同的。


我曾经遇到过非常类似的问题。我的库已经成功添加了,而且我可以看到从我的项目中可以访问这些类。然而,如果在库中创建了一个新类,即使重新构建/清理+构建也无法使新类可用。我改变了我的库build.gradle中的minSdkVersion,然后就解决了问题(只是因为我记得最近更新了我的项目中的minSdkVersion)! - xarlymg89
很高兴它能帮到你。加油! - Nguyen Tan Dat
1
虽然这个方法可以运行,但我知道我们应该遗漏了什么。有效地重新编译 Android 库不应该那么难。要么是这里有一个烦人的 bug。 - xarlymg89

1
以下解决方案对我有用,只需两个步骤。
在Android Studio中打开项目结构,从左侧选择项目。将Android插件版本更改为Gradle版本并按确定。
如果同步后出现错误,请再次打开项目结构并选择项目。像之前一样撤销Android插件版本。Gradle会对库进行对齐,并使类对XML文件可见。

0
如果您刚刚在“pubspec.yaml”文件中更改了项目名称,请确保同时更改导入名称,因为它们将保持不变,因此无法找到新命名的目录。
例如,将此更改为:
import 'package:previousName/backend/connector/userConnector.dart';

转换为:

 import 'package:newName/backend/connector/userConnector.dart';

据我所知,没有终端命令可以做到这一点,只能使用“在文件中查找和替换”的功能 :(

0
在我的情况下,问题是由于主应用模块和你添加的库模块中编译和目标SDK版本不同所导致的。 一旦我将它们匹配起来,就完美解决了。 所以只需打开应用级别的build.gradle文件和库模块级别的文件,检查SDK版本即可。

0

settings.gradle

dependencies {

implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation project(':wheel') // "Wheel" - you're project path name

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接