【问题标题】:Applying conditions on "optional_subdirs" using Golang in Android.bp?在 Android.bp 中使用 Golang 对“optional_subdirs”应用条件?
【发布时间】:2020-01-28 23:39:25
【问题描述】:

在我们的 AOSP 源代码中,此路径中有一个库 vendar/myvendor/apps/Dialer/SomeLib 因为 SomeLib 位于应用程序目录的第二级。我们需要在Dialer 应用程序的Android.bp 中添加以下内容,以便在构建时包含SomeLib

optional_subdirs = [
    ....
    "*",
]

正如预期的那样,SomeLib 在构建时被选中。但是,应该为特定目标而不是其他目标选择此 Lib。为此,我想编写一个 golang 实现,我将在其中相应地放置条件。

要进行 Golang 实现,我们只能添加一个覆盖现有模块的模块,其中现有模块可以是 android、apex、cc 等。作为参考,请查看question 这里,apex 模块用于在其上编写自己的模块.但是在optional_subdirs 的情况下,它既不是模块也不属于模块类型。因此,我无法继续进行。任何帮助都会很棒。

【问题讨论】:

    标签: android go android-source


    【解决方案1】:

    注意: subdirsoptional_subdirs 自 Android Pie 以来已弃用(请参阅 here)。从现在开始,所有Android.bp 文件都将被Soong 收录。

    选项 #1

    您可以更新所有引用SomeLib 的模块作为其shared_libsstatic_libs 的一部分,而不是尝试更改optional_subdirs。这可以通过在Soong 中实现自定义Mutator 来完成。

    您可以在 AOSP 中搜索bootstrap_go_package 找到很多关于如何编写自定义模块的示例。

    选项 #2

    如果您只想根据设备类型安装库,您可以将库添加到您希望包含它的device.mk 文件的PRODUCT_PACKAGES 列表中(请参阅here)。

    【讨论】:

    • 有多个地方正在使用库。而且这将是不必要地重复多次相同的工作,即在每个应用程序中应用该更改。我们可以在 Soong finder 中做点什么吗?我的意思是要求宋不要为其他目标选择这个 SomeLib,而是一个?
    • 我认为您可以通过编写Mutator 检查每个模块是否使用SomeLib 然后更新其shared_libs 属性来实现。
    • 好的,这是一种方式,但它仍然需要在每个应用的 Android.bp 中进行一些更改,即添加该 mutator 引用以使其工作。我也想避免这种情况。我可能会发布另一个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 2021-01-09
    • 2015-04-16
    相关资源
    最近更新 更多