相关疑难解决方法(0)

Gradle:如何在Android版本中包含来自依赖java项目的本地jar?

在我的Android应用程序中,我正在获取一个java.lang.NoClassDefFoundError引用依赖.jar中的代码的代码.我的项目包括一个Android模块以及一个只有java的库模块,这是jar依赖的地方.我正在使用gradle 1.10来构建项目.这是我的项目布局:

myProject
- app (Android)
  - src
  - build.gradle

- lib (java)
  - src     
  - libs
    - local-dependency.jar
  - build.gradle

- build.gradle
- settings.gradle
Run Code Online (Sandbox Code Playgroud)

主项目build.gradle是空白而主要项目settings.gradle如下:

include ':app', ':lib'
Run Code Online (Sandbox Code Playgroud)

Android应用程序build.gradle看起来像:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.8.+'
    }
}

apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 18
    buildToolsVersion "19.0.2"

    defaultConfig {
        minSdkVersion 18
        targetSdkVersion 18
        versionCode 1
        versionName "1.0"
    }
}

dependencies {
    compile project(':lib')
} …
Run Code Online (Sandbox Code Playgroud)

java android jar gradle android-gradle-plugin

12
推荐指数
1
解决办法
4959
查看次数

声明本地jar文件作为库项目的传递依赖项

我有一个依赖于库项目(Lib1)的Android应用(App1)。该库项目具有多个远程依赖项(例如guava,android支持库等)和两个本地依赖项,它们是存储在Lib1 / libs /中的JAR文件。

这就是Lib1的build.gradle的依赖项部分的样子:

dependencies {
  compile fileTree(dir: 'libs', include: '*.jar')

  compile 'com.android.support:support-v4:20.0.+'
  compile 'com.google.guava:guava:r08'
}
Run Code Online (Sandbox Code Playgroud)

如果我只编译该库(即gradle assemble在Lib1 /文件夹上运行),那么它将正确编译,但是当我将该库作为App1的依赖项添加时,gradle抱怨它无法在Lib1的libs /文件夹中找到两个jar。

这是App1的build.gradle:

dependencies {
  compile project(':Lib1')

  compile 'org.apache.james:apache-mime4j-core:0.7.2'
  compile 'org.apache.jackrabbit:jackrabbit-webdav:2.3.6'
  ...
}
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉gradle,如果一个库依赖于本地jar文件,那么依赖于该库的项目也应该将它们包含为依赖项?远程依赖项可以正常工作,但是当libs /中有jar文件时,远程依赖项就不能正常工作。

android gradle android-gradle-plugin

5
推荐指数
0
解决办法
443
查看次数

标签 统计

android ×2

android-gradle-plugin ×2

gradle ×2

jar ×1

java ×1