繁体   English   中英

由于缺少Java预处理程序,我应该如何隔离非免费软件包?

[英]With the lack of Java pre-processor, How should I isolate non-free packages?

我正在开发Java Android应用程序,使用了一些非免费的组件:Google Maps,Analytics(分析)等许多开源(GPL版本)程序包。 我希望能够轻松地编译两个发行版:

  • 完全免费的[已上传到市场]
  • 受限,但针对开源社区提供了GPL

我认为Eclipse具有某些预处理功能,但这不是可移植的或标准的。

这种情况下的最佳做法是什么?

这种情况下的最佳做法是什么?

这个问题有三个答案。

第一个答案是咨询合格的法律顾问以及相关的技术专家,以确定您的计划是否符合GPL的要求。 IANAL,但如果“完整版本”包含GPL的组件,则即使某些源代码相同,也不能替换某些单独的应用程序的源代码,并且声称有人遵守该源代码即表示您符合GPL。到“功能完善”的应用程序。 许可条款的讨论对于StackOverflow来说是无关紧要的,但是如果您有“某某类实现会满足此技术要求(恰好由GPL强制实施)”的问题,请随时在此处提问。

第二个答案是zapl在评论中建议的内容,这是考虑使用Gradle for Android 该构建系统中引入的“产品口味”使拥有一个针对不同情况构建单独的应用程序版本的项目相对容易,例如:

  • 使用单独的应用内购买API来分配渠道(例如Play商店与适用于Android的Amazon AppStore)

  • 使用ARM与x86 NDK编译的二进制文件

  • 使用不同的广告网络

  • 等等。

但是,尽管有很多方法可以使Eclipse和Android的Gradle相处融洽,但这仅适用于没有不同源代码,资源或不同产品风格的清单内容的项目。 否则,至少在今天,Eclipse将不再是一个选择。 Android Studio应该是一个选择,尽管我没有尝试使用它来构建产品风格。 如果您尚未使用IDE进行构建,而是使用了Ant,那么Android的Gradle现在就可以支持Ant功能的超集,即使此时(和Android Studio)仍在预发布中。

在没有适用于Android的Gradle的情况下,您可以将通用代码放入Android库项目中,并通过两个应用程序使用该库项目。

同样,尽管如此,首先要关注符合许可条款的解决方案,然后确定实现该解决方案的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM