自创库,依赖于另一个自创库

时间:2016-04-04 14:43:17

标签: android android-studio dependencies android-gradle

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

要做到这一点,我正在努力做出一个概念验证,其应该如下:
enter image description here

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

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

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

当我这样做时,我得到以下例外:

  

java.lang.NoClassDefFoundError:解析失败:Lcom / example / erik / stringextender / StringExtender;

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

欢迎任何帮助!

编辑显示分级构建文件
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')
}

MainProject:

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')
}

1 个答案:

答案 0 :(得分:2)

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

查看我Github

上的工作示例项目

最重要的步骤是:

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

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

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

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

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

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