当前位置:   article > 正文

Android cMake原理_cmake armeabi-v7a 路径表示

cmake armeabi-v7a 路径表示

编译工具:

gcc工作流程:预编译--------->编译--------->汇编--------->链接,

文件处理成可执行文件,步骤非常复杂;

gcc  --->  makefile   (执行编译脚本)     只能在linux系统中执行,cMake则是跨平台:windows, mac,linux

发展历程:gcc---->makefile---->cMake;

c项目中,在编译的时候会生成:

arm64-v7a        运行在手机

arm64-v8a        运行在手机

x86        运行在电脑模拟器

x86_64        运行在电脑模拟器

芯片架构

芯片是v7a,是运行不了v8a编译的代码 

在build.gradle文件中配置运行平台:

  1. defaultConfig {
  2. applicationId "com.imitate.shortvideo.mycdemo"
  3. minSdk 21
  4. targetSdk 30
  5. versionCode 1
  6. versionName "1.0"
  7. testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
  8. externalNativeBuild {
  9. //这里的externalNativeBuild,是表示cmake中需要的参数
  10. cmake {
  11. cppFlags ''
  12. }
  13. }
  14. // 运行的平台,只有armeabi-v7a;一般是v7a平台,v7a手机平台
  15. // 更换平台配置后,需要执行清理缓存:build-> refreshLinked C++ Projects
  16. ndk{
  17. abiFilters 'armeabi-v7a'
  18. }
  19. }
  20. externalNativeBuild {
  21. //这里的externalNativeBuild,是表示cmake编译存放的路径;告诉Android,这是一个c工程;
  22. cmake {
  23. path file('src/main/cpp/CMakeLists.txt')
  24. version '3.10.2'
  25. }
  26. }

Android studio中c项目编译时,寻找:build_command.txt文件,此中有参数,有cmake地址

cMake完成编译工作之后,生成文件:libnative-lib.so

插件化组件化,在需要的时候才进行加载,编译的时候,不需要加载(加载.so文件),插件就是编译成.so的方式进行加载,可以减小apk的安装包大小;

静态库,动态库

cMakeLists.txt文件结构

#默认是生成静态库
add_library(LS21 main.c include/test1.c)
#默认是生成动态库
add_library(LS21 SHAREFD main.c include/test1.c)
  1. # For more information about using CMake with Android Studio, read the
  2. # documentation: https://d.android.com/studio/projects/add-native-code.html
  3. # Sets the minimum version of CMake required to build the native library.
  4. cmake_minimum_required(VERSION 3.10.2)
  5. project("mycdemo")
  6. add_library( # Sets the name of the library.
  7. mycdemo
  8. SHARED
  9. native-lib.cpp )
  10. find_library( # Sets the name of the path variable.
  11. log-lib
  12. log )
  13. target_link_libraries(
  14. mycdemo
  15. ${log-lib} )
  16. message("===============")
  17. #设置编译后的路径地址为项目目录下的lib文件夹
  18. set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR/lib})
  19. #设置变量SRC_LIST,值为:main.c include/test1.c
  20. set(SRC_LIST main.c include/test1.c)
  21. #默认是生成静态库 .a文件
  22. add_library(LS21 main.c include/test1.c)
  23. #默认是生成动态库 .dll文件
  24. add_library(LS21 SHAREFD main.c include/test1.c)

1M的png图片和0.5M的png图片,在内存中,通过加载成像素,占用内存,大小是一样的,

  1. externalNativeBuild {
  2. cmake {
  3. path file('src/main/cpp/CMakeLists.txt')
  4. version '3.10.2'
  5. }
  6. }
  7. 首页,会找到cMake.exe,然后通过cmake.exe来生成指定的指令,根据设置的路径,
  8. 将生成的指令存放到对应的路径当中去:src/main/cpp/CMakeLists.txt

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/625239
推荐阅读
相关标签
  

闽ICP备14008679号