1

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

我想提供具有这些组件的许多不同组合的 AAR 文件。

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

我想为 NDK 部分使用实验性 gradle 插件。

我的第一个 hack 看起来像:

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" } } } } } 

但他们因各种“你不能那样做”错误而失败。

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

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

4

0 回答 0