迁移到适用于 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/
在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/
为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar
我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在
我有一个包含多个键的散列和一个字符串,该字符串不包含散列中的任何键或包含一个键。h={"k1"=>"v1","k2"=>"v2","k3"=>"v3"}s="thisisanexamplestringthatmightoccurwithakeysomewhereinthestringk1(withspecialcharacterslike(^&*$#@!^&&*))"检查s是否包含h中的任何键的最佳方法是什么,如果包含,则返回它包含的键的值?例如,对于上面的h和s的例子,输出应该是v1。编辑:只有字符串是用户定义的。哈希将始终相同。 最佳答案
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
我的Gallery模型中有以下查询:media_items.includes(:photo,:video).rank(:position_in_gallery)我的图库模型有_许多媒体项,每个都有一个照片或视频关联。到目前为止,一切正常。它返回所有media_items包括它们的photo或video关联,由media_item的position_in_gallery属性排序。但是我现在需要将此查询返回的照片限制为仅具有is_processing属性的照片,即nil。是否可以进行相同的查询,但条件是返回的照片等同于:.where(photo:'photo.is_processingIS
您认为可以作为插件很好地存在于您的Rails应用程序中必须实现的哪些行为?您过去曾搜索过哪些插件功能但找不到?哪些现有的Rails插件可以改进或扩展,如何改进或扩展? 最佳答案 我希望在管理界面中看到一个引擎插件,它提供了应用程序中所有模型的仪表板摘要,以及可配置的事件图表。 关于ruby-on-rails-您希望看到哪些Rails插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questio
-if!request.path_info.include?'A'%{:id=>'A'}"Text"-else"Text"“文本”写了两次。我怎样才能只写一次并同时检查path_info是否包含“A”? 最佳答案 有两种方法可以做到这一点。使用部分,或使用content_forblock:如果“文本”较长,或者是一个重要的子树,您可以将其提取到一个部分。这会使您的代码变干一点。在给出的示例中,这似乎有点矫枉过正。在这种情况下更好的方法是使用content_forblock,如下所示:-if!request.path_info.inc
Ocra无法处理需要“tk”的应用程序require'tk'puts'nope'用奥克拉http://github.com/larsch/ocra不起作用(如链接中的一个问题所述)问题:https://github.com/larsch/ocra/issues/29(Ocra是1.9的"new"rubyscript2exe,本质上它用于将rb脚本部署为可执行文件)唯一的问题似乎是缺少tcl的DLL文件我不认为这是一个问题据我所知,问题是缺少tk的DLL文件如果它们是已知的,则可以在执行ocra时将它们包括在内有没有办法知道tk工作所需的DLL依赖项? 最佳答
我正在使用DMOZ的listofurltopics,其中包含一些具有包含下划线的主机名的url。例如:608609TheOuterHeaven610InformationandimagegalleryofMcFarlane'sactionfiguresforTrigun,Akira,TenchiMuyoandotherJapaneseSci-Fianimations.611Top/Arts/Animation/Anime/Collectibles/Models_and_Figures/Action_Figures612虽然此url可以在网络浏览器中使用(或者至少在我的浏览器中可以使用: