Java android studio中的包名称与同名类冲突错误
我在尝试开发android应用程序的Udacity课程 上面是我在学习第4课时尝试创建android测试用例时遇到的错误 问题在于androidtest文件夹下的测试类被打包在 但是每当我在Androidtest配置中运行应用程序时,gradle就会用相同的包名为Androidtest构建bUildCOnfig文件,并给出错误“错误:(4,1)错误:包com.sasharma.android.sunshine.test与同名类冲突” 我还发现,课程讲师使用的软件包名称与我使用的软件包名称之间的唯一区别在于,他们有一个额外的“应用程序”到那里,src\main\java*活动类的包名(比如我的包名)也是com.sasharma.android.sunshine,但它们的包名是com.sasharma.android.sunshine.test,androidTest目录下的包名也是如此Java android studio中的包名称与同名类冲突错误,java,android,android-studio,package,Java,Android,Android Studio,Package,我在尝试开发android应用程序的Udacity课程 上面是我在学习第4课时尝试创建android测试用例时遇到的错误 问题在于androidtest文件夹下的测试类被打包在 但是每当我在Androidtest配置中运行应用程序时,gradle就会用相同的包名为Androidtest构建bUildCOnfig文件,并给出错误“错误:(4,1)错误:包com.sasharma.android.sunshine.test与同名类冲突” 我还发现,课程讲师使用的软件包名称与我使用的软件包名称之间的唯
提前感谢 更新之后,我遇到了相同的错误
我试图重建项目并解决问题
构建->重建项目 我通过更改
app\build.gradle
中的applicationId修复了相同的问题,并重建了项目。build.gradle
中的我的applicationId与package
名称与AndroidManifest.xml中的appname
连接在一起
更改前:
defaultConfig {
applicationId "com.mypackage.MyApp"
}
格雷德尔先生
defaultConfig {
applicationId "com.mypackage.MyAppName"
}
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mypackage" >
<application
android:name="MyAppName"
</application>
</manifest>
我在两个地方犯了这个错误:
MyProjectName/app/build/generated/source/BuildConfig/androidTest/debug/mypackage/MyClass/test中的BuildConfig.java
MyProjectName/app/build/generated/source/R/androidTest/debug/mypackage/MyClass/test中的R.java
两者都包含package com.mypackage.MyClass.test代码>报告的内容出错。我认为您的项目文件中有test.java文件。
将其重命名为其他名称
for android-studio click on test.java and Go to ReFactor-->Rename
转到生成-->重建项目。如果将testApplicationId
定义为与默认值相同的yourApplicationId.test
,则也会出现此错误
作为文件:
默认情况下,构建工具使用给定构建变量的应用程序ID(附加有.test)将应用程序ID应用于检测测试APK。例如,com.example.myapp.free构建变量的测试APK具有应用程序ID com.example.myapp.free.test
因此,您不应该只将.test
附加到应用程序ID
中,就使用与默认值相同的测试应用程序ID
,但您可以将其更改为任何其他内容,它将正常工作。如果您的类名称为“test”,请将其删除。
我遇到了这个问题,并重新解决了它。如果Glide库导致了这个问题,请确保“MyAppGlideModule”类不是内部类。这是一个迟来的答案,但仍然没有一个答案提供显示此错误的真正原因
当一个包名与一个类相同时,会出现此错误,如下所示:
main
java
com.yourpackage.mycoolapp
somePackage
myclass.java
class2.java
somePackage.java
正如您在上面看到的,包名somePackage
和类名somePackage.java
具有相同的名称
要解决此问题,您可以更改包名或类的名称:
右键单击包/类->重构->重命名
完成,无需重建。我在使用事件总线时面临此问题
实际上,我编写了错误的eventBusIndex,它使用和我的应用程序id相同的包名创建了文件,并且它出错了
错误代码
kapt {
arguments {
arg('eventBusIndex', 'MY_APPLICATION_ID')//E.g. "com.me.myappname"
}
}
固定代码
kapt {
arguments {
arg('eventBusIndex', 'MY_APPLICATION_ID.MyEventBus')//E.g. "com.me.myappname.MyEventBus"
}
}
您确定没有名为test
或test
的类吗?另外,为什么不响应Java命名约定;类以大写字母开头,包都是小写的。android的拼写是android
,而不是android
。感谢@PeterLawrey指出错误。我在其中一个软件包中进行了类名测试。很难找到全班同学的答案,因为我是android studio的新手。在eclipse中,简单的CTRL+SHIFT+r可以帮助我获取类,但我不知道android studio中的相应快捷方式(这篇文章似乎没有提供问题的答案。请编辑您的答案,或者将其作为问题的注释发布)。
kapt {
arguments {
arg('eventBusIndex', 'MY_APPLICATION_ID.MyEventBus')//E.g. "com.me.myappname.MyEventBus"
}
}