代码之家  ›  专栏  ›  技术社区  ›  Rafael T

本地aar的ClassDefNotFoundError

  •  0
  • Rafael T  · 技术社区  · 8 年前

    我知道这个问题似乎已经被问过了,但它们略有不同,我无法找到解决我问题的方法。

    然而,对于部署,我们有本地aar文件,其中已经在其内部包含了它们的jar依赖项 libs 文件夹在部署的构建中。gradle我们定义了以下条目来包括它们:

    repositories {
        jcenter()
        flatDir {
            dirs '../../libs'
        }
    
         maven {
            url "https://maven.google.com"
        }
    }
    
    dependencies {
    
        compile 'com.android.support:appcompat-v7:26.1.0'
        compile ":NameOfAarFile:1.0.0@aar"
        compile ":NameOfAnotherAar:1.0.0@aar"
    
        compile fileTree(include: ['*.jar'], dir: 'libs')
    }
    

    如果我在android studio中打开该项目,gradle会进行检查并让我构建它。它打开了,但是当你试图使用aar中的jar中的功能时,我得到了 NoClassDefFoundError .

    所以我从输出中反编译了apk,运行它们 dex2jar 然后用 jd-gui 只是为了发现,他们在他们预期的地方。

    现在我真的想知道 NoClassDefFoundError 来自或- 更重要的是,如何摆脱它?

    这个 official documentation 提及:

    库模块可以包括JAR库

    您可以开发一个库模块,该模块本身包括一个JAR库; 但是,您需要手动编辑从属应用程序模块的内部版本 路径并向JAR文件添加路径。

    如果可能的话,我真的想把罐子放在aar里面。

    如有必要,我会提供更多信息。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Rafael T    8 年前

    我知道发生了什么。 如果禁用,它会工作 InstantRun