CMake编译Android可执行程序

CMake编译Android可执行程序

2023年7月7日发(作者:)

CMake编译Android可执⾏程序编译环境通过过Android Studio内置的SDK Manager下载NDK和CMake;把环境变量ANDROID_SDK_HOME指向Android SDK⽬录,并把ANDROID_SDK_HOME添加到PATH环境变量中。HelloWorldHelloWorld是每个程序员编写的第⼀个程序,因此本例也从HelloWorld开始。这⾥为了便于后续项⽬的编译和管理,⾸先新建⽂件夹helloworld,然后在此⽂件夹下编写helloworld.c源⽂件:#include int main(){ printf("Hello World!n"); return 0;}由于使⽤CMake进⾏编译可执⾏程序,需要配置⽂件。在helloworld⽂件夹下编写:# CMake最低版本号要求cmake_minimum_required(VERSION 3.6)# 项⽬信息project (helloworld)# 设置⽬标⽂件的名字set(TARGET_NAME helloworld)# ⽣成可执⾏⽂件add_executable(${TARGET_NAME} helloworld.c)build脚本在执⾏cmake命令⽣成Android可执⾏⽂件时需要带上长长的参数,为了简化此步骤,这⾥编写⼀个脚本:set abi=armeabi-v7aif not exist %abi% md %abi%cd %abi%%ANDROID_SDK_HOME%/cmake/3.10.2.4988404/bin/cmake ^ -DANDROID_ABI=%abi% ^ -DANDROID_NDK=%ANDROID_SDK_HOME%/ndk-bundle ^ -DCMAKE_BUILD_TYPE=Debug ^ -DCMAKE_TOOLCHAIN_FILE=%ANDROID_SDK_HOME%/ndk-bundle/build/cmake/ ^ -DANDROID_NATIVE_API_LEVEL=9 ^ -DANDROID_TOOLCHAIN=clang -DCMAKE_GENERATOR="Ninja" ^ -DCMAKE_MAKE_PROGRAM=%ANDROID_SDK_HOME%/cmake/3.10.2.4988404/bin/ninja ^ ..%ANDROID_SDK_HOME%/cmake/3.10.2.4988404/bin/ninjacd ..脚本中的3.10.2.4988404指的是CMake的版本,需要根据实际下载的CMake版本进⾏修改。执⾏此脚本,将在helloworld/armeabi-v7a⽬录下⽣成helloworld可执⾏⽂件。编译脚本中%ANDROID_SDK_HOME%/ndk-bundle的ndk-bundle可能不是这个⽂件夹,⽐如现在版本AndroidStudio下载的Ndk⽂件夹就是sdkndk20.1.5948944,要将编译脚本中的ndk-bundle替换为ndk20.1.5948944由于使⽤的是Windows系统,这⾥给出的是bat脚本,Linux/Mac的shell脚本可根据bat脚本进⾏相应的修改。运⾏测试使⽤Android⼿机通过USB数据线连接电脑,或者使⽤模拟器,获取root权限:adb rootadb shell进⼊shell后,获取root权限会显⽰:generic_x86_64:/ #进⼊shell后,未获取root权限会显⽰:generic_x86_64:/ $将⽣成的helloworld可执⾏⽂件通过adb命令push到设备上:adb push helloworld /data/local/tmp使⽤adb shell命令进⼊Android命令终端,在运⾏helloworld之前,先为helloworld⽂件添加可执⾏权限:chmod 777 /data/local/tmp/helloworld执⾏helloworld命令可以看到如下输出:generic_x86_64:/ # /data/local/tmp/helloworld./helloworld not executable :32-bit ELF file⼜是⼀个坑,在使⽤AndroidStudio的模拟器时候,因为我们编译出来的是armeabi-v7a的可执⾏⽂件,所以在创建模拟器的时候也要创建相对应的模拟器,不能使⽤x86的模拟器。模拟器启动模拟器后,重复上⾯的步骤,最终我们可以看到下⾯的输出:generic:/data/local/tmp # ./helloworldHello World!总结编译Android可执⾏程序可以使⽤ndk-build,不过官⽅已经不推荐使⽤了;也可在Android源码的中进⾏编译,可是Android源码的编译环境也不容易搭建,如果已有编译环境的情况下另当别论;因此本例利⽤Android Studio中的CMake和NDK进⾏编译可执⾏⽂件,对于Android应⽤开发者来说是最便利的⽅法之⼀。

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688677861a161789.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信