将Android.bp编译常用指令整理文档
时间: 2023-11-10 08:43:31 浏览: 48
当你使用Soong构建Android项目时,Android.bp文件是用于描述模块(module)和模块之间的依赖关系的蓝图文件。编译Android.bp文件的常用指令如下:
1. 编译整个项目:
```
make
```
2. 仅编译指定目标(target):
```
make <target>
```
3. 清理已编译的目标:
```
make clean
```
4. 清理并重新编译整个项目:
```
make clobber
```
5. 仅清理指定目标:
```
make clean_<target>
```
6. 编译指定模块:
```
m <module>
```
7. 清理指定模块:
```
m clean_<module>
```
8. 仅编译指定目标和其依赖的模块:
```
m <target> -j
```
9. 编译指定模块及其依赖的模块,并生成相关测试文件:
```
m <module> -j
```
10. 显示模块及其依赖的信息:
```
mmma -n <module>
```
以上是一些常用的编译Android.bp文件的指令,你可以根据需要选择适合你的操作。
相关问题
Android.bp编译到指定位置
要将 Android.bp 中编译的模块输出到指定位置,可以在 Android.bp 中使用 `output` 属性来指定输出路径,例如:
```
cc_library {
name: "mylib",
srcs: ["mylib.cpp"],
output: ["mylib.so"],
target: {
android: {
arch: {
arm: {
enabled: true,
},
},
},
},
}
```
在上面的例子中,`output` 属性指定了编译输出文件的名称和路径为 `mylib.so`,这个文件将会在当前模块的输出路径下生成。如果你想要将编译输出文件放到指定的目录下,可以使用 `subdir` 属性来指定一个子目录,例如:
```
cc_library {
name: "mylib",
srcs: ["mylib.cpp"],
output: ["lib/mylib.so"],
subdir: "lib",
target: {
android: {
arch: {
arm: {
enabled: true,
},
},
},
},
}
```
在这个例子中,`output` 属性中的路径是 `lib/mylib.so`,`subdir` 属性指定了子目录为 `lib`,这样编译输出文件就会被放到 `out/target/product/<product>/obj/lib` 目录下。
android.bp编译缺失“sha.h”
这个问题可能是由于缺少OpenSSL库文件导致的。你可以尝试在Android.bp文件中添加以下内容:
```
cc_library {
name: "libssl",
srcs: ["libssl.a"],
exported_headers: ["include/openssl"],
target: {
android: {
srcs: ["libssl_android.a"],
},
},
}
```
然后在你的模块中添加以下依赖:
```
cc_library_shared {
name: "my_module",
srcs: ["my_module.cpp"],
shared_libs: ["libssl"],
...
}
```
这应该可以解决编译缺失“sha.h”的问题。请确保你的系统中已经安装了OpenSSL库。