Windows环境下开发Android Native服务#第一篇:使用AOSP生成Clion工程

背景:
当开发Android Native服务时,我们很难在源码的环境下使用文本编辑器之类的直接编写程序,需要使用到IDE来帮助我们开发,我们希望最好带有语法和头文件提示。本文就对在Windows环境下开发Android Native服务提供一种解决方案,你可以使用任何支持CMakeLists.txt开发的IDE,本文使用的是CLion。此外还将手把手教读者开发完成一个完整的Android Native服务。

1.1 创建demo工程

在vendor目录下创建我们需要开发的Native程序:clion_demo。

image.png

在Android.bp编写好依赖库

cc_binary {
    name: "clion_demo",

    shared_libs: [
        "libbase",
        "libprocessgroup",
        "libcutils",
        "libutils",
        "libbinder",
        "liblog",
        "libziparchive",
    ],

    srcs: [
        "clion_demo.cpp",
    ],
}

Clion_demo.c,随便写点儿,之后导入Clion后再写具体的业务代码

#pragma GCC diagnostic warning "-Wunused"
#define LOG_TAG "clion_demo"

#include <string>

#include <android-base/file.h>
#include <android-base/stringprintf.h>
#include <utils/Log.h>

int main(int /* argc */, char **/* argv */)
{
    std::string msg = android::base::StringPrintf("Hello AOSP~");
    ALOGD("The message is: %s.", msg.data());
    return 0;
}

1.2 编译并创建Clion工程

创建好如上文件后,开始编译工程,在编译之前,需要设置几个环境变量,打开生成CMakeLists.txt的编译开发

$ export SOONG_GEN_CMAKEFILES=1
$ export SOONG_GEN_CMAKEFILES_DEBUG=1

之后在demo工程执行mm编译单编该模块


image.png

编译成功后,可以在:

out\development\ide\clion\vendor\clion_demo

目录下,找到生成的CMakeLists.txt文件,如果你的工程在其他目录也是同样的原理:


image.png

之后使用CLion打开工程即可:


image.png

其最重要的功能就是可以帮你自动导入依赖库的头文件位置:


image.png

1.3 属性调整

这里还有几个地方需要调整一下:


image.png

因为是在linux编译服务器上生成的CMakeList.txt文件,但是一般我们都是使用本地的Window环境开发的,所以这里需要将ANDROID_ROOT更换为Window中映射的linux编译服务器的对应的地址,以我的为例:

set(ANDROID_ROOT Z:/work/android_project)

此外CMAKE_C_COMPILER和CMAKE_CXX_COMPILER用的都是linux-x86版本的,需要替换为Windows版本,可以到

https://github.com/llvm/llvm-project/releases/tag/llvmorg-17.0.1

下载LLVM来安装Windows版本的clang和clang++


image.png

安装好后,修改CMAKE_C_COMPILER和CMAKE_CXX_COMPILER,还是以我的为例:

set(CMAKE_C_COMPILER "D:/install/LLVM/bin/clang")
set(CMAKE_CXX_COMPILER "D:/install/LLVM/bin/clang++")

最后的CMakeList.txt文件内容是:


image.png

重新reload工程,即可看到项目可以正常索引了:


image.png

External Sources Outside Project Root就是我们的源代码目录,External Libraries就是我们的各种依赖库。

同时可以看到,函数跳转和语法提示都是可以正常的:


image.png

image.png

如此,我们就可以在Window下开发Android的Native程序了。

如果在开发过程中要导入更多依赖库的话,需要先在AOSP中放好,然后修改CMakeList.txt引入,同时别忘了在Android.bp文件中将第三方库放到目标模块的依赖中,不过更推荐先在Android.bp文件中将第三方库放到目标模块的依赖中,再重新生成CMakeList.txt,这里不过多赘述了。此外编写完代码也需要我们在AOSP的环境中编译,Windows环境下无法编译,当然也可以设置交叉编译环境,不过这里就不建议这样做了。直接在AOSP的环境中编译,比较省心,且也能验证AOSP的环境中编译能不能通过。

至此我们的开发环境就搭建完成了,可以愉快的开发了!

下一篇将在该篇的基础上开发一个Android Native Service,具体见Windows环境下开发Android Native服务#第二篇:开发Android Native Service

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容