gmu*_*ick 12 java android jar gradle android-gradle-plugin
在我的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)
该图书馆build.gradle是:
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
compile <some-dependency-in-maven>
compile files('libs/local-dependency.jar')
}
Run Code Online (Sandbox Code Playgroud)
一切都编译和打包没有错误,我没有在IDE(IntelliJ 13)中看到任何错误.出于某种原因,我local-dependency.jar在Android编译期间没有被添加到dex-ing进程中.lib项目中指定的任何maven依赖项都会添加到Android .apk中就好了; 这只是我本地的jar依赖.有什么我想念的吗?
谢谢!
这不可能直接实现,因为Gradle中未将本地jar声明为传递依赖项.
您有两种选择:
第二个选项使您能够让多个项目直接依赖于本地jar(在它之上变为传递依赖).为此,创建一个新的gradle项目,并将其放入build.gradle以下内容:
configurations.create("default")
artifacts.add("default", file('somelib.jar'))
Run Code Online (Sandbox Code Playgroud)
这只是将您的jar注册为项目发布的默认工件,这将被其他项目使用.
| 归档时间: |
|
| 查看次数: |
4959 次 |
| 最近记录: |