我已经调查了一段时间,可能看到这里最流行的答案与aar和transitive依赖关系有关,但不知何故,我仍然不清楚如何使这个工作.
所以:
我有给定gradle配置的android库:
apply plugin: 'android-library'
apply plugin: 'android-maven'
version = "1.0.0"
group = "com.somepackage"
buildscript {
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
classpath 'com.github.dcendents:android-maven-plugin:1.0'
}
}
android {
compileSdkVersion 19
buildToolsVersion '19.0.3'
defaultConfig {
minSdkVersion 10
}
}
repositories {
maven { url 'http://www.bugsense.com/gradle/' }
}
dependencies {
provided 'com.google.android.gms:play-services:+'
provided 'com.android.support:appcompat-v7:+'
compile 'com.google.code.gson:gson:2.2.4'
compile 'com.bugsense.trace:bugsense:3.6'
compile 'commons-net:commons-net:3.3'
}
Run Code Online (Sandbox Code Playgroud)
然后我将它部署到本地maven repo gradle install.部署库的POM文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sprezzat</groupId> …Run Code Online (Sandbox Code Playgroud) 所以,现在我有一个图书馆项目,说项目public static取决于像这样的图书馆public static.
现在,它public static有一个maven buildstep,可以生成AAR并将其推送到公共场所.
所以现在让我说我有项目B,我们会称之为public static.Bar是一个Android应用程序,public static依赖于public static.
好吧,我有.但是,当我从该调用中调用public static函数时,我收到以下消息:public staticpublic staticpublic static
java.lang.NoClassDefFoundError: com.squareup.okhttp.OkUrlFactory
at com.foo.sdk.utils.OkHttpStack.<init>(OkHttpStack.java:15)
Run Code Online (Sandbox Code Playgroud)
那么,这样的事情可能吗?或者public static需要手动依赖public static以及任何其他依赖项public static?
我正在为一个框架编写一个构建系统,可以通过用户(开发人员)的插件进行扩展.我的问题是我不能用掩码包含所有的aar文件.例如,我可以包含所有这样的jar文件:
compile fileTree(dir: 'libs', include: '*.jar')
Run Code Online (Sandbox Code Playgroud)
但如果我包含所有这样的aar文件:
compile fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
Only Jar-type local dependencies are supported. Cannot handle: /path/to/file.aar
Run Code Online (Sandbox Code Playgroud)
但是,可以单独包含每个文件,如下所示:
compile (name:'myfile', ext:'aar')
Run Code Online (Sandbox Code Playgroud)
作为一种解决方法,在构建期间,我将需要列出'libs'目录中的文件,手动将所有库插入我的build.gradle并保持同步(或每次重写).这是一种做法的hackish方式,因此我想知道是否有更好的方法.也许有一个gradle脚本可以自动执行或者一些gradle beta支持这个:
compile fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
Run Code Online (Sandbox Code Playgroud)