Com*_*are 13 android android-studio android-gradle-plugin
我确信之前已经问过这个问题,但是我找不到合适的关键词来找出答案,所以...
当我请求构建一个构建类型时,如何阻止Gradle for Android(Android Studio内部或外部)构建库模块的所有构建类型?IOW,如果我正在构建,我如何防止Gradle for Android 也在构建?debugrelease
对于那些有其他想法的人来说,这个背景故事:
假设我有两个Android Studio项目,A和B.每个项目都有两个模块:一个Android库模块和一个依赖于该库的演示应用程序.所以,我总共有四个模块:
只要A和B不相关,生活就会好.
但是如果我想让B L依赖A L呢?
因为release,如果我希望这些库进入Maven风格的工件库,我需要releaseB 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
Run Code Online (Sandbox Code Playgroud)
(在哪里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?
这里有一个错误:https://code.google.com/p/android/issues/detail?id =52962
评论 #35 即
尝试在依赖项目中设置它
Run Code Online (Sandbox Code Playgroud)android { publishNonDefault true ... }这在使用它的项目中
Run Code Online (Sandbox Code Playgroud)dependencies { releaseCompile project(path: ':theotherproject', configuration: 'release') debugCompile project(path: ':theotherproject', configuration: 'debug') }取自此处: https://code.google.com/p/android/issues/detail?id=66805
为你工作?似乎是大多数人认为有效的一种,我还没有亲自尝试过。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           4509 次  |  
        
|   最近记录:  |