- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
迁移到适用于 Gradle 3.0 的 Android 插件后,OSS 许可证插件 (https://developers.google.com/android/guides/opensource) 不再包含来自项目库模块依赖项的许可证。只有“应用程序”模块。
我正在使用 com.google.gms:oss-licenses:0.9.1
和 com.google.android.gms:play-services-oss-licenses:11.8.0
如果我将插件“应用”到我的所有模块,third_party_license
数据会在每个模块的原始文件夹中生成。但最终只有来自应用模块的数据才会出现在 APK 中。
这个问题有解决办法吗?
最佳答案
是的,没错。
根据我对插件工作原理的搜索,插件会将数据生成到 Artifact 的 res/raw
文件夹中(aar
或 apk
,但不是 jar
文件)基于它可以从库中获取的 POM
文件。然后合并的其余部分由 Gradle Android 插件完成,而不是由 OSS 许可证插件完成,后者合并来自所有源(依赖库、模块、主应用程序等)的 res
文件夹。然而,问题在于,在合并时,如果存在重复的相同资源(link 解释),Android Gradle 插件将选择一个,并且选择的那个是基于优先级的,这意味着因为两个应用程序模块和 lib 模块正在生成重复的 R.raw.third_party_license
资源,来自 app 模块的资源比来自模块的资源具有更高的优先级,因此来自模块的许可证信息不包括在内。
有几种方法可以解决这个问题:
implementation 'com .mygroup:library:1.0'
。不要忘记将其从项目 build.settings
文件中删除。这将生成库模块的 POM
文件,从而让插件读取它并包含它的库许可证。这意味着库应该在编译应用程序模块之前编译和发布,但也可能导致一些奇怪的编译问题和错误发生时的困惑。不幸的是,还有一种我认为可行的方法,但事实并非如此。它是通过将库模块中的依赖项更改为 api
而不是 implementation
。这会将库依赖项暴露到应用程序模块依赖项中,但会增加项目的构建时间。但最终它没有正确生成原始资源,因为 OSS License Plugin 似乎只从库的 POM 文件中读取依赖项,在这种情况下,即使 POM
文件也不会生成库模块依赖项被暴露。可能应该将此作为增强功能或错误请求发布给插件的开发人员。
关于android - OSS 许可证插件不包含库模块许可证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48488273/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 6年前关闭。 Improve this qu
我正在制作一个网站(在商业环境中),用户可以将视频上传到我们的服务器 这自然会导致浏览器兼容性问题。解决方案是在服务器上使用 FFmpeg 对它们进行转码。 问题是我一直在阅读 FFmpeg 和它的许
已结束。此问题不符合 Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 7 年前。 Improve
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 6年前关闭。 Improve this qu
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 8 年前。 Improve
我已将 Sitecore 项目部署到服务器,但收到错误 Required license is missing: Runtime Description: An unhandled exception
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 7 年前。 Improve
我正在考虑使用 this font来自网站上的 myfonts.com。当您从他们那里购买一种字体用于网络时,您购买的是每月一定数量的页面浏览量的一次性许可证。 此许可证在此处有更详细的描述: htt
我们有 Java Spring 应用程序。应用程序通过 Java Runtime.exec() 调用与 FFmpeg 交互,以便将视频编码为 mp4 格式。考虑到 libx264 是在 GPL 许可下
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
为了接受 Xcode 许可证 在 CLI 中,我们可以运行 sudo xcodebuild -license 然后控制台会提示 You have not agreed to the Xcode lic
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 6年前关闭。 Improve this qu
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 6年前关闭。 Improve this qu
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
我正在考虑使用 AquaticPrime 作为 Cocoa 共享软件应用程序的 key 生成器。不了解的 friend 可以看这里:http://aquaticmac.com/ 。然而,当我尝试实现它
这个问题在这里已经有了答案: License Gradle Plugin (1 个回答) 9年前关闭。 感谢回复,我正在寻找应用 License-gradle-plugin 来检查源代码中的 head
我们如何使用 gradle 脚本在 src 目录中存在的 .groovy、.java、.jsp、.txt 文件中搜索、跳过和写入所需的头文件(许可证)。 我们如何安装许可证插件? 最佳答案 你的意思是
我正在尝试在 C# 中使用 iText。在我尝试添加许可证 key 之前,我的代码中的一切都运行良好。我到处都说要下载:itext.licensekey.dll 和 itext.licensekey.
如果我有 Ranorex 5.4 的 float 许可证,并且我有几台机器正在运行。我可以知道哪台机器正在使用来自许可证服务器的许可证吗?如果是这样,怎么办? 最佳答案 在许可证服务器上,启动 Ran
我是一名优秀的程序员,十分优秀!