使用 Android.bp 为 GNU/Linux 系统构建项目
Build project with Android.bp for GNU/Linux system
我正在开发一个命令行工具,我在 Android 中 运行;但我也想编译 运行 它独立于桌面系统,例如 Ubuntu GNU/Linux 系统。
目前它使用 Android.bp
文件并在 AOSP.
中构建
如何使用 Android.bp 构建 GNU/Linux 系统?
我当然可以将 Android.bp
重写为一个普通的旧 Makefile
,但我不想创建这个额外的代码层来维护。
我在 Android 方面的有限经验表明这不是一件容易的事。正常的解决方案似乎是根据另一个构建系统生成 Android 文件,或者解析 Android 文件并为另一个构建系统生成文件。不幸的是,我知道没有任何现有工具不适合您
您可以指定应该为哪个目标构建模块:Android、Host 或 两者。
Host 表示 GNU/Linux 如果您在其中构建 AOSP。
Android
这是为设备架构构建的典型二进制模块。
cc_binary {
name: "my-binary",
srcs: [ "main.cpp" ],
shared_libs: [ "libcutils" ]
}
主持人
有多个 _host
模块类型(例如 cc_binary_host
、cc_test_host
、java_binary_host
)将创建主机二进制文件。
cc_binary_host {
name: "my-binary-host",
srcs: [ "main.cpp" ],
shared_libs: [ "libcutils" ]
}
两者都
如果要同时构建设备二进制文件和主机二进制文件,可以使用 host_supported: true
.
cc_binary {
name: "my-binary",
srcs: [ "main.cpp" ],
shared_libs: [ "libcutils" ],
host_supported: true
}
您可能想要为 android
或 host
指定额外的标志、定义、来源等。您可以使用 target
属性:
cc_binary {
name: "my-binary",
srcs: [ "main.cpp" ],
shared_libs: [ "libcutils" ],
host_supported: true,
target: {
android: {
// android specific properties
},
host: {
// host-side specific properties
}
}
}
关于模块依赖性的注释
同一目标需要支持另一个模块所依赖的每个模块。
示例:cc_binary_host
不能依赖于 cc_library
和 host_supported: false
。
我正在开发一个命令行工具,我在 Android 中 运行;但我也想编译 运行 它独立于桌面系统,例如 Ubuntu GNU/Linux 系统。
目前它使用 Android.bp
文件并在 AOSP.
如何使用 Android.bp 构建 GNU/Linux 系统?
我当然可以将 Android.bp
重写为一个普通的旧 Makefile
,但我不想创建这个额外的代码层来维护。
我在 Android 方面的有限经验表明这不是一件容易的事。正常的解决方案似乎是根据另一个构建系统生成 Android 文件,或者解析 Android 文件并为另一个构建系统生成文件。不幸的是,我知道没有任何现有工具不适合您
您可以指定应该为哪个目标构建模块:Android、Host 或 两者。 Host 表示 GNU/Linux 如果您在其中构建 AOSP。
Android
这是为设备架构构建的典型二进制模块。
cc_binary {
name: "my-binary",
srcs: [ "main.cpp" ],
shared_libs: [ "libcutils" ]
}
主持人
有多个 _host
模块类型(例如 cc_binary_host
、cc_test_host
、java_binary_host
)将创建主机二进制文件。
cc_binary_host {
name: "my-binary-host",
srcs: [ "main.cpp" ],
shared_libs: [ "libcutils" ]
}
两者都
如果要同时构建设备二进制文件和主机二进制文件,可以使用 host_supported: true
.
cc_binary {
name: "my-binary",
srcs: [ "main.cpp" ],
shared_libs: [ "libcutils" ],
host_supported: true
}
您可能想要为 android
或 host
指定额外的标志、定义、来源等。您可以使用 target
属性:
cc_binary {
name: "my-binary",
srcs: [ "main.cpp" ],
shared_libs: [ "libcutils" ],
host_supported: true,
target: {
android: {
// android specific properties
},
host: {
// host-side specific properties
}
}
}
关于模块依赖性的注释
同一目标需要支持另一个模块所依赖的每个模块。
示例:cc_binary_host
不能依赖于 cc_library
和 host_supported: false
。