android - 自创库依赖于另一个自创库

标签 android android-studio dependencies android-gradle-plugin

我正在尝试构建一个由单独的库项目组成的应用程序。

为此,我正在尝试制作一个概念验证,它应该如下所示:
enter image description here

我试图让项目尽可能简单。项目内容无关紧要!
重要的是项目之间的依赖性!

结果应该是 MainProject 将打印出 Something Another String!

我已经尝试了所有从.JAR 文件到.AAR 文件,但我得到的最好的是
与红色的依赖关系。我将 StringExtender.aar 文件添加到 StringReturner,然后将 StringReturner.aar 文件添加到 MainProject

当我这样做时,我得到以下异常:

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/example/erik/stringextender/StringExtender;

设置像这样的简单概念验证的正确方法是什么?我似乎找不到与具有依赖性的库项目相关的任何内容。都是1级深!

欢迎任何帮助!

编辑显示 GRADLE 构建文件
StringReturner:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.2.1'
    compile project(':StringExtender-lib-debug')
}

主项目:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.example.erik.erikpoc10"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.2.1'
    compile 'com.android.support:design:23.2.1'
    compile project(':StringReturnerLib-debug')
}

最佳答案

使用以下教程 - Creating libraries for Android applications

查看我的 Github 上的工作示例项目

采取的最重要的步骤是:

  • 8.3。创建库模块。
  • 8.6。定义对库项目的依赖。

不要忘记导入你要使用的库类,例如:
在 MainProject 中:导入 com.example.stringreturner.StringReturner。 在 StringReturner 中:导入 com.example.stringreturner.StringExtender。

以下信息基于您提供的图片:

库方法不是静态的,所以不要忘记制作一个实际的对象。 所以 StringReturner 应该创建一个 StringExtender 对象,而 MainProject 应该先创建一个 StringReturner 对象!

最后,我认为这是一个打字错误,但两个库都有 StringReturner 类。由于显而易见的原因,这在 StringReturner 库中不起作用。

我还应该注意,我使用的是 Android Studio 2.0,我没有接触 .JAR 文件和 .AAR 文件。我只创建了两个库模块和一个应用程序。然后通过添加模块依赖项配置项目结构 -> 依赖项。

关于android - 自创库依赖于另一个自创库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36405808/

相关文章:

android - 上传Bitmap.CompressFormat之前的图像压缩

android - 错误 : The apk for your currently selected variant (Unknown output) is not signed. 请为此变体指定签名配置(调试)

android - 长 SVG Assets 文件错误 : R is not a valid verb. 路径位置 2 发生故障:STRING_TOO_LARGE

Android如何使用我的通话记录联系人电话号码获取联系人ID

javascript - 如何告诉 webpack 额外的依赖?

c - 如何在给定源代码树的情况下自动扫描库依赖项?

ant - 当我尝试使用 Ivy 解决依赖关系时,我的 Ant 构建挂起

javascript - Android Webview不执行某些JavaScript

android - 将空白空间添加到 ListView 的末尾

java - Android:相同的代码行无法在单独的方法中工作