前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )

【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )

作者头像
韩曙亮
发布于 2023-03-27 09:58:10
发布于 2023-03-27 09:58:10
3.1K00
代码可运行
举报
运行总次数:0
代码可运行

文章目录

代码语言:txt
AI代码解释
复制
        - [I . 源码编译配置](https://cloud.tencent.com/developer)
        - [II . 构建脚本配置](https://cloud.tencent.com/developer)
        - [III . NDK 函数库打包配置](https://cloud.tencent.com/developer)
        - [IV . Java 与 C 代码示例](https://cloud.tencent.com/developer)
        - [V . CMake 配置 ( CMakeLists.txt )](https://cloud.tencent.com/developer)
        - [VI . ndkBuild 配置 ( Android.mk )](https://cloud.tencent.com/developer)
        - [VII . 博客相关资源下载](https://cloud.tencent.com/developer)
I . 源码编译配置

1 . 源码编译配置 :

① 配置位置 : Module 级别的 build.gradle 中进行配置 ;

② 主要作用 : 主要作用是配置本工程中的 C/C++ 源码如何编译成动态库的 ;

③ 常用配置 : 一般配置将源码编译成哪几个 CPU 的指令集 ;

目前只支持 armeabi-v7a , arm64-v8a , x86 , x86-64 四种 CPU 指令集架构 ;

2 . 配置层级 :android 下 defaultConfig 中配置的 externalNativeBuild 是配置 AS 中的 C/C++ 源码编译内容的 ;

注意区分配置 : externalNativeBuild 有两种类型的配置 , 一种在 defaultConfig 内部 , 一种在 defaultConfig 外部 ;

① defaultConfig 内部的 externalNativeBuild : 配置的是配置 AS 工程的 C/C++ 源文件编译参数

② defaultConfig 外部的 externalNativeBuild : 配置的是 CMakeList.txt 或 Android.mk 构建脚本的路径

2 . 配置脚本示例 ( 省略无关内容 ) :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apply plugin: 'com.android.application'

android {
    ...
    defaultConfig {
        ...
        /*
            关于 CPU 指令集

            NDK 17 以上只支持 armeabi-v7a, arm64-v8a, x86, x86-64 四种 CPU 架构
         */
        
        // 配置 AS 工程中的 C/C++ 源文件的编译
        //     defaultConfig 内部的 externalNativeBuild 配置的是配置 AS 工程的 C/C++ 源文件编译参数
        //     defaultConfig 外部的 externalNativeBuild 配置的是 CMakeList.txt 或 Android.mk 构建脚本的路径
        externalNativeBuild {
            cmake {
                cppFlags ""

                //配置编译 C/C++ 源文件为哪几个 CPU 指令集的函数库 (arm , x86 等)
                abiFilters "armeabi-v7a" , "arm64-v8a", "x86", "x86_64"
            }
        }
		...
    }
	...
}
II . 构建脚本配置

1 . 构建脚本配置 :

① 配置位置 : Module 级别的 build.gradle 中进行配置 ;

② 主要作用 : 主要作用是配置本工程中的 C/C++ 源码的构建脚本 ;

③ 常用配置 : 配置 cmake 或 ndkBuild 两种编译脚本中的一种 ( 只能二选一 ) ;

2 . cmake 配置 : 配置使用 CMake 编译 C/C++ 时的构建脚本 CMakeList.txt 路径 ;

① cmake 简介 : 使用 CMake 进行构建 , 构建脚本是 CMakeList.txt , 是 Android Studio 中新引入的 NDK 本地代码构建方式 ;

② 路径设置 : 路径的起点就是 build.gradle 文件所在的目录 , 即 app 目录 ;

② 配置示例 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    externalNativeBuild {
        cmake {
            path "src/main/cpp/CMakeLists.txt"
            version "3.10.2"
        }

3 . ndkBuild 配置 : 配置使用 ndkBuild 编译 C/C++ 时的构建脚本 Android.mk 路径 ;

① ndkBuild 简介 : 使用 ndkBuild 进行构建 , 构建脚本是 Android.mk , 是从 Eclipse + ADT 环境遗留下来的配置 NDK 编译方案 , 逐步被 CMake 替代 ;

② 路径设置 : 路径的起点就是 build.gradle 文件所在的目录 , 即 app 目录 ;

② 配置示例 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    externalNativeBuild {
        ndkBuild{
            path "src/main/cpp/Android.mk"
        }

3 . 配置层级 : 在 android 与 defaultConfig 平级的 externalNativeBuild 是配置 AS 中的 C/C++ 源码编译构建脚本的 ;

注意区分配置 : externalNativeBuild 有两种类型的配置 , 一种在 defaultConfig 内部 , 一种在 defaultConfig 外部与之平级的配置 ;

① defaultConfig 内部的 externalNativeBuild : 配置的是配置 AS 工程的 C/C++ 源文件编译参数

② defaultConfig 外部的 externalNativeBuild : 配置的是 CMakeList.txt 或 Android.mk 构建脚本的路径

4 . 配置脚本示例 ( 省略无关内容 ) :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apply plugin: 'com.android.application'

android {
    ...
    defaultConfig {
        ...
    }
    // 配置 NDK 的编译脚本路径
    // 编译脚本有两种 ① CMakeList.txt ② Android.mk
    //     defaultConfig 内部的 externalNativeBuild 配置的是配置 AS 工程的 C/C++ 源文件编译参数
    //     defaultConfig 外部的 externalNativeBuild 配置的是 CMakeList.txt 或 Android.mk 构建脚本的路径
    externalNativeBuild {

        // 配置 CMake 构建脚本 CMakeLists.txt 脚本路径
        //  使用该配置时 , 将 ndkBuild 配置注释掉
        cmake {
            path "src/main/cpp/CMakeLists.txt"
            version "3.10.2"
        }

        // 配置 Android.mk 构建脚本路径
        //  使用该配置时 , 将 cmake 配置注释掉
        /*ndkBuild{
            path "src/main/cpp/Android.mk"
        }*/
    }
	...
}
...
III . NDK 函数库打包配置

1 . 构建脚本配置 :

① 配置位置 : Module 级别的 build.gradle 中进行配置 ;

② 主要作用 : 主要作用是配置 APK 打包动态库的相关参数 ; 如在工程中编译的函数库 , 其提供了 arm, x86, mips 等指令集的动态库 , 那么为了控制打包后的应用大小, 可以选择性打包一些库 , 此处就是进行该配置 ;

③ 常用配置 : 配置 cmake 或 ndkBuild 两种编译脚本中的一种 ( 只能二选一 ) ;

2 . 配置脚本示例 ( 省略无关内容 ) :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apply plugin: 'com.android.application'

android {
    ...
    defaultConfig {
        ...
        /*
            关于 CPU 指令集

            NDK 17 以上只支持 armeabi-v7a, arm64-v8a, x86, x86-64 四种 CPU 架构
         */
        //配置 APK 打包 哪些动态库
        //  示例 : 如在工程中编译的函数库 , 其提供了 arm, x86, mips 等指令集的动态库
        //        那么为了控制打包后的应用大小, 可以选择性打包一些库 , 此处就是进行该配置
        ndk{
            // 打包生成的 APK 文件指挥包含 ARM 指令集的动态库
            abiFilters "armeabi-v7a" , "arm64-v8a", "x86", "x86_64"
        }
		...
    }
	...
}
IV . Java 与 C 代码示例

1 . Java 代码 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package kim.hsl.compile;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    static {
        //此处只能加载动态库 , 不能加载静态库
        System.loadLibrary("native-lib");
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView tv = findViewById(R.id.sample_text);
        tv.setText(stringFromJNI());

    }

    public native String stringFromJNI();

}

2 . C 代码 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <jni.h>
#include <android/log.h>

JNIEXPORT jstring JNICALL
Java_kim_hsl_compile_MainActivity_stringFromJNI(
        JNIEnv *env,
        jobject obj) {

    __android_log_print(ANDROID_LOG_INFO, "JNI_TAG", "Hello from C");

    return (*env)->NewStringUTF(env, "Hello from C");
}
V . CMake 配置 ( CMakeLists.txt )

1 . CMakeLists.txt 配置示例 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 声明 CMake 版本
cmake_minimum_required(VERSION 3.4.1)

# 添加库
add_library( # Sets the name of the library.
        native-lib

        # Sets the library as a shared library.
        SHARED

        # Provides a relative path to your source file(s).
        native-lib.c)


# 到预设的目录查找 log 库 , 将找到的路径赋值给 log-lib
#   这个路径是 NDK 的 ndk-bundle\platforms\android-29\arch-arm\usr\lib\liblog.so
#   不同的 Android 版本号 和 CPU 架构 需要到对应的目录中查找 , 此处是 29 版本 32ARM 架构的日志库
find_library(
        log-lib

        log)

# 链接库
target_link_libraries(
        native-lib

        ${log-lib})

2 . 对应的 build.gradle 中的 NDK 配置 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apply plugin: 'com.android.application'

android {
    ...
        /*
            关于 CPU 指令集

            NDK 17 以上只支持 armeabi-v7a, arm64-v8a, x86, x86-64 四种 CPU 指令集架构
         */

        // 配置 AS 工程中的 C/C++ 源文件的编译
        //     defaultConfig 内部的 externalNativeBuild 配置的是配置 AS 工程的 C/C++ 源文件编译参数
        //     defaultConfig 外部的 externalNativeBuild 配置的是 CMakeList.txt 或 Android.mk 构建脚本的路径
        externalNativeBuild {
            cmake {
                cppFlags ""

                //配置编译 C/C++ 源文件为哪几个 CPU 指令集的函数库 (arm , x86 等)
                abiFilters "armeabi-v7a" , "arm64-v8a", "x86", "x86_64"
            }
        }


        //配置 APK 打包 哪些动态库
        //  示例 : 如在工程中编译的函数库 , 其提供了 arm, x86, mips 等指令集的动态库
        //        那么为了控制打包后的应用大小, 可以选择性打包一些库 , 此处就是进行该配置
        ndk{
            // 打包生成的 APK 文件指挥包含 ARM 指令集的动态库
            abiFilters "armeabi-v7a" , "arm64-v8a", "x86", "x86_64"
        }


    }

    // 配置 NDK 的编译脚本路径
    // 编译脚本有两种 ① CMakeList.txt ② Android.mk
    //     defaultConfig 内部的 externalNativeBuild 配置的是配置 AS 工程的 C/C++ 源文件编译参数
    //     defaultConfig 外部的 externalNativeBuild 配置的是 CMakeList.txt 或 Android.mk 构建脚本的路径
    externalNativeBuild {

        // 配置 CMake 构建脚本 CMakeLists.txt 脚本路径
        //  使用该配置时 , 将 ndkBuild 配置注释掉
        cmake {
            path "src/main/cpp/CMakeLists.txt"
            version "3.10.2"
        }

        // 配置 Android.mk 构建脚本路径
        //  使用该配置时 , 将 cmake 配置注释掉
        /*ndkBuild{
            path "src/main/cpp/Android.mk"
        }*/
    }
	...
}
...
VI . ndkBuild 配置 ( Android.mk )

1 . Android.mk 配置示例 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# my-dir 是 NDK 内置的函数 , 获取当前的目录路径
#	在该案例中就是 Android.mk 文件所在的目录的绝对路径 , 工程根目录/app/src/main/cpp
#	将该目录赋值给 LOCAL_PATH 变量
#	所有的 Android.mk 的第一行配置都是该语句

LOCAL_PATH := $(call my-dir)


# 打印 LOCAL_PATH 值
# Build 打印内容 : LOCAL_PATH : Y:/002_WorkSpace/001_AS/005_NDK_Compile/app/src/main/cpp
# 编译 APK 时会在 Build 中打印

$(info LOCAL_PATH : $(LOCAL_PATH))


# 配置新的模块之前都要先清除 LOCAL_XXX 变量
#	LOCAL_PATH 变量会保留

include $(CLEAR_VARS)


# 配置动态库名称
# 动态库命名规则 :LOCAL_MODULE 基础上 , 添加 lib 前缀 和 .so 后缀
# 生成动态库名称 : libnative-lib.so

LOCAL_MODULE := native-lib


# 编译的源文件

LOCAL_SRC_FILES := native-lib.c


# 配置构建的目标是动态库

include $(BUILD_SHARED_LIBRARY)

2 . 对应的 build.gradle 中的 NDK 配置 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apply plugin: 'com.android.application'

android {
    ...
        /*
            关于 CPU 指令集

            NDK 17 以上只支持 armeabi-v7a, arm64-v8a, x86, x86-64 四种 CPU 指令集架构
         */

        // 配置 AS 工程中的 C/C++ 源文件的编译
        //     defaultConfig 内部的 externalNativeBuild 配置的是配置 AS 工程的 C/C++ 源文件编译参数
        //     defaultConfig 外部的 externalNativeBuild 配置的是 CMakeList.txt 或 Android.mk 构建脚本的路径
        externalNativeBuild {
            cmake {
                cppFlags ""

                //配置编译 C/C++ 源文件为哪几个 CPU 指令集的函数库 (arm , x86 等)
                abiFilters "armeabi-v7a" , "arm64-v8a", "x86", "x86_64"
            }
        }


        //配置 APK 打包 哪些动态库
        //  示例 : 如在工程中编译的函数库 , 其提供了 arm, x86, mips 等指令集的动态库
        //        那么为了控制打包后的应用大小, 可以选择性打包一些库 , 此处就是进行该配置
        ndk{
            // 打包生成的 APK 文件指挥包含 ARM 指令集的动态库
            abiFilters "armeabi-v7a" , "arm64-v8a", "x86", "x86_64"
        }


    }

    // 配置 NDK 的编译脚本路径
    // 编译脚本有两种 ① CMakeList.txt ② Android.mk
    //     defaultConfig 内部的 externalNativeBuild 配置的是配置 AS 工程的 C/C++ 源文件编译参数
    //     defaultConfig 外部的 externalNativeBuild 配置的是 CMakeList.txt 或 Android.mk 构建脚本的路径
    externalNativeBuild {

        // 配置 CMake 构建脚本 CMakeLists.txt 脚本路径
        //  使用该配置时 , 将 ndkBuild 配置注释掉
        /*cmake {
            path "src/main/cpp/CMakeLists.txt"
            version "3.10.2"
        }*/

        // 配置 Android.mk 构建脚本路径
        //  使用该配置时 , 将 cmake 配置注释掉
        ndkBuild{
            path "src/main/cpp/Android.mk"
        }
    }
	...
}
...
VII . 博客相关资源下载

CSDN 博客地址 : 【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )

博客资源下载地址 : https://download.csdn.net/download/han1202012/12152060

示例代码 GitHub 地址 : https://github.com/han1202012/005_NDK_Compile

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-02-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Android NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 )
① 构建工具 : CMake 是 Android 中使用 C/C++ 构建原生库的默认工具 ;
韩曙亮
2023/03/27
2.9K0
【Android NDK 开发】Android Studio 使用 CMake 导入动态库 ( 构建脚本路径配置 | 指定动态库查找路径 | 链接动态库 )
参考博客 : 【Android NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 )
韩曙亮
2023/03/27
9.4K0
【Android NDK 开发】Android Studio 使用 CMake 导入动态库 ( 构建脚本路径配置 | 指定动态库查找路径 | 链接动态库 )
【Android 安装包优化】动态库打包配置 ( “armeabi-v7a“, “arm64-v8a“, “x86“, “x86_64“ APK 打包 CPU 指令集配置 | NDK 完整配置参考 )
在 build.gradle 构建脚本中 , 配置 ndk 编译的动态库 CPU 架构类型 ;
韩曙亮
2023/03/29
2.6K0
【Android 安装包优化】动态库打包配置 ( “armeabi-v7a“, “arm64-v8a“, “x86“, “x86_64“ APK 打包 CPU 指令集配置 | NDK 完整配置参考 )
【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 拷贝 lib7zr.so 动态库到 Android Studio 工程 | 配置 build.gradle 构建脚本 )
在上一篇博客 【Android 安装包优化】native 层 jni 中使用 7zr 动态库处理压缩文件 ( 修改 7zr 交叉编译脚本 Android.mk | 交叉编译 lib7zr.so 动态库 ) 中 , 交叉编译出了 4 种 CPU 架构的动态库 ;
韩曙亮
2023/03/29
3700
【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 拷贝 lib7zr.so 动态库到 Android Studio 工程 | 配置 build.gradle 构建脚本 )
【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )
Android Studio 中使用 Android.mk 配置第三方 动态库 :
韩曙亮
2023/03/27
3.7K0
【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )
【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )
Android Studio 中使用 Android.mk 配置第三方 静态库 :
韩曙亮
2023/03/27
4.4K0
【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )
Android NDK开发扫盲及最新CMake的编译使用
本节将会对文档进行总结和补充。所以建议先浏览一遍文档,或者看完本篇文章再回头看一遍文档。
做个快乐的码农
2021/11/25
2.5K0
Android NDK开发扫盲及最新CMake的编译使用
【CMake】CMake 引入 ( Android NDK 构建脚本 | CMake 命令手册 )
该系列博客的应用场景是 Android Studio 下 NDK 编程 , 使用 CMake 构建 C/C++ 工程 ;
韩曙亮
2023/03/28
3.9K0
Android NDK开发基础
NDK即Native Development Kit,是Android上用来开发c/c++的开发工具包。 安装步骤:developer.android.com/studio/proj…
没关系再继续努力
2021/12/03
2K0
Android Studio 2.2 Native 开发新特性
本文介绍了如何在Android Studio中通过CMake和NDK-Build构建原生库。首先介绍了Android Studio中CMake和NDK-Build的基本用法,然后详细描述了如何使用CMake和NDK-Build构建原生库。同时,还提供了在构建过程中可能遇到的常见问题和解决方案。此外,文章还介绍了如何使用Android Studio中的“监视”功能来查看构建进度和结果。
QQ音乐技术团队
2017/11/02
1.7K0
Android Studio 2.2 Native 开发新特性
Android 工程管理与定制
在Android 程序开发中,往往需要根据实际的业务需求和工程管理要求,做一些定制开发。本文介绍常用的Android工程管理与配置。
用户4148957
2022/06/14
4080
Android 工程管理与定制
【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#externalNativeBuild配置 | cmake 配置 | ndkBuild 配置 )
ProductFlavor 参考文档 : com.android.build.gradle.internal.dsl.ProductFlavor.html
韩曙亮
2023/03/30
1.7K0
【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#externalNativeBuild配置 | cmake 配置 | ndkBuild 配置 )
【Android NDK 开发】CMake 中查找链接 Android 自带动态库位置说明 ( ndk-bundle\platforms\android-29\arch-arm\usr\lib )
参考 【Android NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 ) 博客中的 CMake 配置的 ndk 代码 , 其中
韩曙亮
2023/03/30
1.2K0
【Android NDK 开发】CMake 中查找链接 Android 自带动态库位置说明 ( ndk-bundle\platforms\android-29\arch-arm\usr\lib )
Android JNI学习(二)——实战JNI之“hello world”
首先在Android Studio创建一个Android项目,包名为gebilaolitou.ndkdemo
隔壁老李头
2018/08/30
2.7K0
Android JNI学习(二)——实战JNI之“hello world”
Android NDK编程(二)---CMakeList.txt详解
前一篇我们介绍了《Android NDK编程(一)---NDK介绍及环境搭建》,简单介绍了一下什么是NDK和JNI,以前NDK环境的配置及怎么创建第一个NDK的程序,在上一篇的左侧栏中有一个CMakeList.txt的文件,这一章我们就来解析一下CMakeList文件。
Vaccae
2019/07/25
3.4K0
Android Studio对ndk开发调试的支持前言支持版本对ndk-build的支持对CMake的支持
编写C/C++代码最大的痛苦就是语法提示和调试,早期Android Studio对NDK不做支持或者支持得不够好,导致NDK开发异常缓慢,最大的问题是调试,经常一些崩溃问题需要反复的加日志排查。 然而现在Android Studio对NDK的开发和调试都做了比较好的支持(仍然存在一些bug)。下面就来说一下如何进行配置。
用户2930595
2018/08/23
1.4K0
【Android RTMP】Android Studio 集成 x264 开源库 ( Ubuntu 交叉编译 | Android Studio 导入函数库 )
① H.264 标准 : H.264 是视频编码标准 , 由 ITU 和 MPEG 制订 ;
韩曙亮
2023/03/27
2.6K0
【Android RTMP】Android Studio 集成 x264 开源库 ( Ubuntu 交叉编译 | Android Studio 导入函数库 )
【错误记录】NDK 报错 java.lang.UnsatisfiedLinkError 的一种处理方案 ( 主应用与依赖库 Module 的 CPU 架构配置不匹配导致 )
NDK 开发 , 在调用 JNI 对应 Java 类时 , 静态代码块中 System.loadLibrary 语句调用时 , 报如下错误 ;
韩曙亮
2023/03/28
1.1K0
【错误记录】NDK 报错 java.lang.UnsatisfiedLinkError 的一种处理方案  ( 主应用与依赖库 Module 的 CPU 架构配置不匹配导致 )
【Android NDK 开发】NDK 交叉编译 ( Ubuntu 中交叉编译动态库 | Android Studio 中配置使用第三方动态库 )
编译链接时 , 将整个库文件打包到可执行文件中 , 造成可执行文件较大 , 但运行时不需要库文件 ;
韩曙亮
2023/03/27
2.9K0
【Android NDK 开发】NDK 交叉编译 ( Ubuntu 中交叉编译动态库 | Android Studio 中配置使用第三方动态库 )
Android利用SurfaceView显示Camera图像爬坑记(五) -- 在现有项目中加入NDK配置
前面几章我们已经把SurfaceView加载Camera实现实时帧显示图像完成了,我也说过,我们加载实时图像是为了对接OpenCV进行图像处理所以才生成的Bitmap图像。
Vaccae
2019/07/25
9500
推荐阅读
【Android NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 )
2.9K0
【Android NDK 开发】Android Studio 使用 CMake 导入动态库 ( 构建脚本路径配置 | 指定动态库查找路径 | 链接动态库 )
9.4K0
【Android 安装包优化】动态库打包配置 ( “armeabi-v7a“, “arm64-v8a“, “x86“, “x86_64“ APK 打包 CPU 指令集配置 | NDK 完整配置参考 )
2.6K0
【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 拷贝 lib7zr.so 动态库到 Android Studio 工程 | 配置 build.gradle 构建脚本 )
3700
【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )
3.7K0
【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )
4.4K0
Android NDK开发扫盲及最新CMake的编译使用
2.5K0
【CMake】CMake 引入 ( Android NDK 构建脚本 | CMake 命令手册 )
3.9K0
Android NDK开发基础
2K0
Android Studio 2.2 Native 开发新特性
1.7K0
Android 工程管理与定制
4080
【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#externalNativeBuild配置 | cmake 配置 | ndkBuild 配置 )
1.7K0
【Android NDK 开发】CMake 中查找链接 Android 自带动态库位置说明 ( ndk-bundle\platforms\android-29\arch-arm\usr\lib )
1.2K0
Android JNI学习(二)——实战JNI之“hello world”
2.7K0
Android NDK编程(二)---CMakeList.txt详解
3.4K0
Android Studio对ndk开发调试的支持前言支持版本对ndk-build的支持对CMake的支持
1.4K0
【Android RTMP】Android Studio 集成 x264 开源库 ( Ubuntu 交叉编译 | Android Studio 导入函数库 )
2.6K0
【错误记录】NDK 报错 java.lang.UnsatisfiedLinkError 的一种处理方案 ( 主应用与依赖库 Module 的 CPU 架构配置不匹配导致 )
1.1K0
【Android NDK 开发】NDK 交叉编译 ( Ubuntu 中交叉编译动态库 | Android Studio 中配置使用第三方动态库 )
2.9K0
Android利用SurfaceView显示Camera图像爬坑记(五) -- 在现有项目中加入NDK配置
9500
相关推荐
【Android NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 )
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验