我曾经使用这个简单的gradle任务将'compile'依赖项复制到特定文件夹:
task copyLibs(type: Copy) {
from configurations.compile
into "$project.rootDir/reports/libs/"
}
Run Code Online (Sandbox Code Playgroud)
但是在使用gradle plugin 3.0.1 for Android Studio和Gradle工具升级到4.1后,它刚刚升级我的Android项目后停止工作.由于https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#new_configurations现在弃用了依赖配置'compile',我将其更改为'implementation'.但是,我无法使用我的copyLibs任务,因为根据Gradle构建错误输出不允许直接解析配置'implementation':
$ ./gradlew.bat clean build
FAILURE: Build failed with an exception.
* What went wrong:
Could not determine the dependencies of task ':app:copyLibs'.
> Resolving configuration 'implementation' directly is not allowed
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
* Get more help at https://help.gradle.org
BUILD FAILED in 1s …Run Code Online (Sandbox Code Playgroud) android android-studio build.gradle android-gradle-plugin gradle-plugin
我正在尝试在Android Studio中构建一个arr包.此软件包包含Zendesk的dependecies:
allprojects {
repositories {
maven { url 'https://zendesk.artifactoryonline.com/zendesk/repo' }
}
}
compile (group: 'com.zendesk', name: 'sdk', version: '1.7.0.1') {
transitive = true
}
compile (group: 'com.zopim.android', name: 'sdk', version: '1.3.1.1') {
transitive = true
}
Run Code Online (Sandbox Code Playgroud)
我想为Unity3d项目构建这个包.此软件包应包含Zendesk的所有依赖项(transitive = true属性).当我打开aar文件时,Zendesk没有依赖关系.怎么了?
当我使用*.aar文件而不是使用Gradle 4.x的模块构建应用程序并遵循有关implements和api的文档时,我希望使用api包含的aar文件包含所有依赖项,但它没有.
当你这样做
git clone https://github.com/hannesa2/aar_dependency
./gradlew clean assembleDebug
Run Code Online (Sandbox Code Playgroud)
手段
dependencies {
api project(':mylibrary')
Run Code Online (Sandbox Code Playgroud)
它工作正常.
但是当我使用lib-module的insted时,先前生成的*.aar文件作为依赖
dependencies {
api 'com.example.my.mylibrary:mylibrary-debug@aar'
Run Code Online (Sandbox Code Playgroud)
(在演示应用程序中)
git checkout with_aar
./gradlew clean assembleDebug
Run Code Online (Sandbox Code Playgroud)
我碰到了这个
任务:app:transformClassesWithDesugarForDebug线程"main"中的异常java.lang.TypeNotPresentException:在sun.invoke.util.BytecodeDescriptor的sun.invoke.util.BytecodeDescriptor.parseSig(BytecodeDescriptor.java:85)中输入不存在的io.reactivex.ObservableTransformer .parseMethod(BytecodeDescriptor.java:63)位于com.google.devtools的java.lang.invoke.MethodType.fromMethodDescriptorString(MethodType.java:1067)的sun.invoke.util.BytecodeDescriptor.parseMethod(BytecodeDescriptor.java:41).在org.objectweb.asm.MethodVisitor.visitInvokeDynamicInsn(未知来源)的org.objectweb.asm.MethodVisitor.visitInvokeDynamicInsn(未知来源)的build.android.desugar.LambdaDesugaring $ InvokedynamicRewriter.visitInvokeDynamicInsn(LambdaDesugaring.java:399)
因为我将这些aar工件上传到我们的Maven Nexus公司时遇到了这个问题,所以我创建了这个demo-repo以准确显示出错了什么.在演示应用程序或使用Maven我看到同样的问题.
有人知道我做错了吗?
觉得我在这里生气 - 这一定很简单!
我有一个我用它构建的android aar gradle assembleRelease并使用该maven-publish插件.我认为/ libs /是默认包含但显然不是.
Android工具网站显示了其可选包含
http://tools.android.com/tech-docs/new-build-system/aar-format
但对于我的生活,我没有看到这个配置.
我已经在Gradle工件中询问了一个相关的Q Include文件夹但是我没有看到这是一个副本,因为这是一个通用的gradle问题,而这是特定的,可以在gradle之外解决.
编辑我也在Gradle论坛上询问过