“获取运行时”;java.lang.NoClassDefFoundError“;对于在";中编写/定义的活动类;。aar“;文件Android Studio
我创建了一个库项目,其中我创建了一个媒体播放器。现在我的目的是让这个媒体播放器在任何Android应用程序中都可以重用,我的意思是我将向任何Android开发人员提供“.aar”文件,然后他/她将其作为依赖项添加到Android项目中,只需在他们的代码中调用MediaPlayerActivity,他们就可以使用它 现在,问题是,如果我使用这个媒体库项目作为项目模块(例如实现项目(“:mymediaplayer”)),那么一切都正常,但当我创建该媒体库的“.aar”文件并尝试将其用作依赖项时(例如实现(名称:'mymediaplayer',ext:'aar')),然后,我将获得MediaActivity.class的运行时“java.lang.NoClassDefFoundError”,该MediaActivity.class编写在我从单独的Android项目调用的同一个库中 下面是我如何使用.aar的步骤-- 1] 我将“mymediaplayer.aar”文件复制到android项目的“libs”文件夹中 2] 在项目级build.gradle文件中写入以下代码“获取运行时”;java.lang.NoClassDefFoundError“;对于在";中编写/定义的活动类;。aar“;文件Android Studio,android,aar,Android,Aar,我创建了一个库项目,其中我创建了一个媒体播放器。现在我的目的是让这个媒体播放器在任何Android应用程序中都可以重用,我的意思是我将向任何Android开发人员提供“.aar”文件,然后他/她将其作为依赖项添加到Android项目中,只需在他们的代码中调用MediaPlayerActivity,他们就可以使用它 现在,问题是,如果我使用这个媒体库项目作为项目模块(例如实现项目(“:mymediaplayer”)),那么一切都正常,但当我创建该媒体库的“.aar”文件并尝试将其用作依赖项时(例如
allprojects {
repositories {
google()
flatDir {
dirs 'libs'
}
jcenter()
}
}
3] 下面是App-level build.gradle文件中的依赖项--
4] 下面是我在Android项目中调用MediaActivity.class的方式--
5] 结果:
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/my_package/MediaActivity;
我希望提供的信息足以理解我的问题,但如果你们需要更多细节,请告诉我
我发现之前在StackOverflow上针对同一个问题提出了几个问题,但不幸的是,我发现其中没有一个对我有用,这就是为什么我需要你们专家的建议。谢谢我用传递选项声明了依赖项,如下所示:
dependencies {
implementation(name: 'mymediaplayer', ext: 'aar') {
transitive = true
}
}
然后错误就会消失。谢谢你的回答,我尝试过,但不幸的是得到了同样的错误。你是否尝试过像这样包含
实现文件树(dir:'libs',include:['*.aar'])
并且你可能必须添加组和版本@Vall0n在这种情况下我得到了“重复类”在我的“mymediaplayer”库中编写的所有类都出现错误。是否尝试从库生成梯度文件中删除实现文件树(dir:'libs',include:['*.aar'])
。还有flatDir{dirs'libs'}
从repository
部分,或者您可以尝试像这样添加依赖项实现(groupValue:mymediaplayer:versionValue)
。在您的示例中,您仅依赖于依赖项解析的名称
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/my_package/MediaActivity;
dependencies {
implementation(name: 'mymediaplayer', ext: 'aar') {
transitive = true
}
}