Android 正在使用.aar NoClassDefFoundError,但类存在并已编制索引

Android 正在使用.aar NoClassDefFoundError,但类存在并已编制索引,android,android-studio,android-gradle-plugin,dex,aar,Android,Android Studio,Android Gradle Plugin,Dex,Aar,我有几个创建.aar的项目。然后我将这个.aar导入到Android Studio的/libs下。此依赖项的build.gradle文件如下所示: repositories{ flatDir{ dirs 'libs' } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.0.

我有几个创建.aar的项目。然后我将这个.aar导入到Android Studio的/libs下。此依赖项的build.gradle文件如下所示:

repositories{
    flatDir{
        dirs 'libs'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile 'com.google.android.gms:play-services:7.0.0'
    compile 'com.android.support:multidex:+'
    compile(name: 'customApi-debug', ext:'aar')
}
由于库相当大,我将multiDexEnabled设置为true。Android Studio可以找到库并自动完成工作。构建也可以正常工作,但运行应用程序会出现以下错误:

java.lang.NoClassDefFoundError: com.companyx.android.api.ui.vision.metaio.MetaIoView
            at com.companyx.android.api.ui.vision.metaio.MetaIoView$$InjectAdapter.<init>(MetaIoView$$InjectAdapter.java:29)
java.lang.NoClassDefFoundError:com.companyx.android.api.ui.vision.metaio.MetaIoView
位于com.companyx.android.api.ui.vision.metaio.MetaIoView$$InjectAdapter.(MetaIoView$$InjectAdapter.java:29)
我分别解压和反汇编了.aar和dex文件,并验证了它所抱怨的类确实存在。我已经尝试过现有的方法来处理这个问题,但没有一种有效


还有其他人经历过吗?提前谢谢

我遇到了同样的问题。修复方法是首先将AAR文件部署到本地maven(我在上使用了插件)。然后我引用了本地maven,如中所述。最后,我用一个可传递选项声明了依赖项,如下所示:

dependencies {
  compile('com.myapp.awesomelib:awesomelib:0.0.1@aar') {
    transitive = true
  }
}

然后错误就会消失。

仅供参考,您可以使用更简单的语法,这也是有效的

 compile 'com.myapp.awesomelib:awesomelib:0.0.1'

不要忘记省略库名称末尾的@aar内容

类可能存在验证错误。安装应用程序后,在对其进行ODEX/OAT时,查看logcat中的日志,查看该类是否存在任何验证错误。安装期间似乎没有错误。我注意到的是,当我点击进入使用该资源的活动时,我得到了I/art﹕ 在我得到异常之前,多次拒绝在以前失败的类java.lang.class上重新初始化。是的,这意味着在安装时出现了一些验证错误。在安装过程中再看一下logcat:)我似乎找不到任何验证错误,因为它们与这个特定类相关。我发现了一些看起来可疑的东西,但我不确定它们是否与这个问题有关:W/PackageParser﹕ 未知元素位于/data/local/tmp/com.companyx.pilot.noclassdeffoundtest.app二进制XML文件行#22,未知元素位于/data/app/vmdl58152644.tmp/base.apk二进制XML文件行#22。我应该在logcat中查找什么关键字?我现在遇到了同样的问题。遗憾的是仍然没有答案。@thuy-trihn是的,我很好奇为什么图奥哈人!!!我为此浪费了我的一天,谢谢!!:)