Android CMake

这篇具有很好参考价值的文章主要介绍了Android CMake。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先了解几个名词

NDK

The Android Native Development Kit

The Android NDK is a toolset that lets you implement parts of your app in native code, using languages such as C and C++. For certain types of apps, this can help you reuse code libraries written in those languages.

CMake

跨平台外部编译工具,跟Gradle一起编译本地库文件(libarary)。如果只是使用ndk-build编译,无需安装。Ndk-build和CMake不可混用

An external build tool that works alongside Gradle to build your native library. You do not need this component if you only plan to use ndk-build.

在gradle中指定cmake版本

android {
    ...
    externalNativeBuild {
        cmake {
            ...
            version "cmake-version"
        }
    }
}

CMakeLists.txt

A CMake build script 
 

# Sets the minimum version of CMake required to build your native library.
# This ensures that a certain set of CMake features is available to
# your build.

cmake_minimum_required(VERSION 3.4.1)

# Specifies a library name, specifies whether the library is STATIC or
# SHARED, and provides relative paths to the source code. You can
# define multiple libraries by adding multiple add_library() commands,
# and CMake builds them for you. When you build your app, Gradle
# automatically packages shared libraries with your APK.

add_library( # Specifies the name of the library.
             native-lib

             # Sets the library as a shared library.
             SHARED

             # Provides a relative path to your source file(s).
             src/main/cpp/native-lib.cpp )



# Specifies a path to native header files.
include_directories(src/main/cpp/include/)

通过上述配置,将按规则  liblibrary-name.so  生成  libnative-lib.so

java代码里的引用

static {
    System.loadLibrary("native-lib");
}

LLDB

Android Studio 通过它来调试native code。LLDB跟Android Studio一起安装

The debugger Android Studio uses to debug native code. By default, LLDB will be installed alongside Android Studio.

Android CMake

SDK

AGP  Android Gradle plugin

gradle

Android CMake

        externalNativeBuild {
            cmake {

                // Sets optional flags for the C++ compiler.
                cppFlags "-frtti -fexceptions -std=gnu++0x -DHAVE_PTHREADS -fpermissive -O3 -Wall -Werror -###"
                // Passes optional arguments to CMake.
                arguments "-DPRODUCT_CONFIG=effects"
                arguments "-DANDROID_STL=c++_shared"

                // Sets a flag to enable format macro constants for the C compiler.
                cFlags "-D__STDC_FORMAT_MACROS"
            }
        }
        ndk {
            abiFilters 'arm64-v8a','armeabi-v7a'
        }

https://developer.android.com/studio/projects/gradle-external-native-builds

 

Ninja

JNI

Java Native Interface 

Java或者Kotlin代码通过JNI调研Navtive Library的函数

Your Java or Kotlin code can then call functions in your native library through the Java Native Interface (JNI).

参考

https://developer.android.com/studio/projects/install-ndk#groovy 

Android CMake_仰望XX的博客-CSDN博客

Android 开发:CMake 使用_android cmake_zxy_de_android的博客-CSDN博客

Android-CMake语法 - 简书

Android NDK开发扫盲及最新CMake的编译使用 - 知乎文章来源地址https://www.toymoban.com/news/detail-495896.html

到了这里,关于Android CMake的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • android native hook简介

    Android中的 Native Hook是一个非常吸引人的技术节点,诱使开发人员产生绚烂多彩的想法,并带来精彩的体验。在软件调试、逆向、安全等场景中得到采用,各大知名软件公司如byte dance、baidu、tencent等都有自己的开源注入和hook项目。 本文代码来自github,只做了适当的剪裁和优化

    2024年02月11日
    浏览(30)
  • pdf怎么转换成jpg图片?这几个转换方法了解一下

    pdf怎么转换成jpg图片?转换PDF文件为JPG图片格式在现代工作中是非常常见的需求,比如将PDF文件中的图表、表格或者图片转换为JPG格式后使用在PPT演示、网页设计等场景中。   【 迅捷PDF转换器 】 是一款非常实用的工具,可以将PDF文件转换成多种不同的文件格式,包括JPG图片

    2024年02月13日
    浏览(31)
  • 手机图片怎么转pdf格式?这几个图片转换方式了解一下

    手机图片怎么转pdf格式?将图片转换为PDF的应用场景非常广泛。例如,你可以将多张照片转换为PDF,然后将其作为一本电子相册保存。你也可以将多张图片转换为PDF,然后将其作为一份报告或文档的附件发送给他人。此外,许多人在工作中需要将文档、表格等转换为PDF格式进

    2024年02月16日
    浏览(40)
  • 了解无线路由器组建无线网络应该注意的几个问题

    无线网络已经不断的深入到我们的日常生活中,基本每多家庭都搭建了一个无线网络,本文以TP-link路由器为例,介绍在组建无线网时,我们应该注意到哪些问题和可以使用的一些技巧,主要以一些实例来详细解说。 一、影响无线网性能的因素 1、传输功率:无线路由发送功率

    2024年02月05日
    浏览(32)
  • 【React Native】第一个Android应用

    Windows -- Android 你可以使用任何编辑器来开发应用(编写 js 代码),但你仍然必须安装 Android Studio 来获得编译 Android 应用所需的工具和环境 Node 版本请保持在: NodeJs 16.0 请下载 Java SE Development Kit (JDK): JDK \\\\\\\\ 安装完 NodeJs 请尽量切换 npm 镜像源 \\\\\\\\ 或使用科学上网工具 \\\\

    2024年02月03日
    浏览(32)
  • Android 13添加自定义native服务

    欢迎加入我的知识星球Android系统开发指南 欢迎关注微信公众号 无限无羡 欢迎关注知乎账号 无限无羡 native服务就是用c++写的系统服务,通过init进程启动,可以实现binder接口供client调用。 下面我们以实现一个beanserver的后台服务为例: 首先需要写一个rc文件 写服务的main函数

    2024年02月12日
    浏览(33)
  • Android Native crash触发原理及处理

    当程序执行以下操作,会触发native crash: 1)程序自己调用 abort() 函数触发,用于表示出现严重的错误或异常情况,需要终止程序执行 2)内存对齐错误或非法地址访问 3)零除错误(除数为零),浮点溢出或下溢出等 4)使用了非法的机器指令或指令参数不当而导致 5)进程试

    2024年01月15日
    浏览(25)
  • Android OpenGL 教程——Native 工程初始化

    NDK 的适用场景官方给出三点: 平台间的 App 移植 复用现有库 对软件性能要求较高的场合比如游戏等 有两种方式可以实现 native activity。 native_activity.h android_native_app_glue 由于第二种方法启用另一个线程处理回调和输入事件,NDK 的例子中就采用了这个实现方式。       NDK 工程

    2024年02月16日
    浏览(30)
  • Android native开发:systeom/core/libcutils

    定义了很多AID_xxx的宏,build/tools/fs_config用来生成Android文件的。 获取init管理的文件,path是init.rc中的文件路径,返回fd。参见klog.cpp 通过设置property,请求init进程重启、关闭系统。 封装共享内存相关函数。 atomic相关的一些函数,遗留代码,不推荐使用。 对__builtin_popcount的封

    2024年02月09日
    浏览(28)
  • Cmake学习记录(九)--使用Cmake交叉编译Android .so库

    注意:本教程没有关于JNI接口的写法,只是把C代码编译成适合android平台的so库,想查看完整代码可以参考文末的第9条参考链接 目前Android编译.so的话使用Android Studio比较简单,但是有时候时候Android Studio的话还需要创建一个Android的项目,这里记录下脱离Android Studio单纯使用Cma

    2024年02月12日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包