作者:手机用户2502934505 | 来源:互联网 | 2023-05-16 13:53
我确信之前已经问过这个问题,但是我找不到合适的关键词来找出答案,所以...
当我请求构建一个构建类型时,如何阻止Gradle for Android(Android Studio内部或外部)构建库模块的所有构建类型?IOW,如果我正在构建,我如何防止Gradle for Android 也在构建?debug
release
对于那些有其他想法的人来说,这个背景故事:
假设我有两个Android Studio项目,A和B.每个项目都有两个模块:一个Android库模块和一个依赖于该库的演示应用程序.所以,我总共有四个模块:
A L:项目A的库
A D:项目A的演示应用程序
B L:项目B的图书馆
B D:项目B的演示应用程序
只要A和B不相关,生活就会好.
但是如果我想让B L依赖A L呢?
因为release
,如果我希望这些库进入Maven风格的工件库,我需要release
B L的变体来依赖于已发布的A L工件.这样,我的B L POM就有了正确的依赖信息.
因为debug
,如果B L可以依赖于A L的工作副本,那将是理想的.设置它有点hacky,我可以使它工作.
但是如果我向A L添加内容,比如新的Java类,我尝试从B L中使用它,我无法构建.我的debug
构建是完美的AFAICT.然而,尽管我真的真的不想现在进行release
构建,但Gradle for Android坚持要做一个release
构建:
$ gradle assembleDebug
:demo:preBuild UP-TO-DATE
:demo:preDebugBuild UP-TO-DATE
:demo:compileDebugNdk UP-TO-DATE
:demo:checkDebugManifest
:demo:preReleaseBuild UP-TO-DATE
:richedit:compileLint
:richedit:copyReleaseLint UP-TO-DATE
:richedit:mergeReleaseProguardFiles UP-TO-DATE
:richedit:preBuild UP-TO-DATE
:richedit:preReleaseBuild UP-TO-DATE
:richedit:checkReleaseManifest
:richedit:prepareReleaseDependencies
:richedit:compileReleaseAidl UP-TO-DATE
:richedit:compileReleaseRenderscript UP-TO-DATE
:richedit:generateReleaseBuildConfig UP-TO-DATE
:richedit:generateReleaseAssets UP-TO-DATE
:richedit:mergeReleaseAssets UP-TO-DATE
:richedit:generateReleaseResValues UP-TO-DATE
:richedit:generateReleaseResources UP-TO-DATE
:richedit:packageReleaseResources
:richedit:processReleaseManifest UP-TO-DATE
:richedit:processReleaseResources
:richedit:generateReleaseSources
:richedit:compileReleaseJava
(在哪里richedit
是B L并且在我的命名法中demo
是B D)
我要求组装debug
构建,但它仍然编译release
构建.并且release
构建无法编译,因为我试图让B L使用来自A L的新未发布的东西.
我有理由相信,尽管不是100%肯定,如果Gradle for Android release
在我尝试构建的时候会轻易忽略debug
,那我就会很好.
当然,有可能的解决方法:
我可以放弃这些是独立的库并将它们合并为一个的想法.我可能会这样做.但它确实感觉就像我想做的那样应该是可能的.
我不能尝试使用一个大号的变化,直到我发布release
一个大号,在这种情况B 大号可取决于两个发布的神器debug
和release
.然而,这似乎会在A项目中引起很多补丁级别的流失,因为我的主要消费者"这个新功能的用例"是B.仅仅因为我在A中的变化通过了仪器测试并不意味着他们将是B需要的东西,直到我可以用A中的变化构建B,我才会知道.
上述解决方法的变体可能是SNAPSHOT
发布,我会以某种方式启用检查SNAPSHOT
发布debug
但不适用于release
某些内容.然而,Maven,Gradle,Android和SNAPSHOT
所有这些的混合看起来似乎没有记录,我不知道这是否是我应该追求的东西.并且,与前面的子弹一样,这仍然会导致release
不必要的构建; 在我的情况下,构建将成功.
有一些摇篮的Android设置的地方,我很想念,说debug
来只是 debug
?