如何使用Android实验Gradle模块为组件配置srcDir

时间:2016-06-01 14:55:41

标签: android-ndk android-gradle gradle-experimental

我目前有一系列包含java,aidl,assets,resources,jni以及manifest和proguard文件的组件来支持这些组件。

我想提供包含这些组件的多种不同组合的AAR文件。

我希望能够在组装时调试每个组件中的代码(我认为这意味着制作一个包含所有组件源文件的项目,因为AAR爆炸不会发布/调试变体。)< / p>

我想将实验性gradle插件用于NDK部件。

我的第一个黑客看起来像:

model {
    android {
         // ... stuff
         sources {
             main {
                 def mySourceSet = ["../../sourceTree/client",
                                   "../../sourceTree/instrumentation",
                                   "../../sourceTree/engine"]
                 java {
                     source {
                         srcDirs = mySourceSet } } }
                 aidl {
                     source {
                         srcDirs = mySourceSet } } }
                 resources {
                     source {
                         srcDirs = mySourceSet } } }
                 assets {
                     source {
                         srcDirs = mySourceSet } } }
                 manifest {
                     source {
                         srcDirs = mySourceSet } } }
                 jniLibs {
                     source {
                         srcDirs = mySourceSet } } }
                 jni {
                     source {
                         srcDirs = mySourceSet } } }
                 }
            }
        }
    }

java类按我的意愿组合。 aidl文件按我的意愿组合。

其他所有内容都不存在(清单没有合并,资源/资产选择java类,并且仍然使用以前版本系统中的旧.so。)

进入不同的规则,看起来mySourceSet需要重复才能为非java / aidl文件做正确的事情,以使格式正确选择(或排除它们)。我已经一直在尝试(没有成功)看看我能用+ =符号做什么,如果我可以将它们移动到sourceTree中的gradle设置/配置片段,包含它,并让它修改srcDirs。

我喜欢其中一种工作:

 model { android { sources { main { aidl { source { srcDirs += "../../sourceTree/instrumentation" } } } } } } 
 model.android.sources.main.aidl.source <<  { srcDirs += "../../sourceTree/instrumentation" }
 model.android << { sources { main { aidl { source { srcDirs += "../../sourceTree/instrumentation" } } } } } 

但他们失败了各种各样的&#34;你不能这样做&#34;错误。

有没有办法在android {model {}}块之外设置srcDirs?

有关如何正确合并资产/资源/清单的任何提示,给出应该查看的顶级目录列表?

0 个答案:

没有答案