JNI学习笔记之AS+ndk+gradle自动编译出so并集成流程

简介: 上一篇的方法完全是我们手动编译并拷来拷去集成so库的,这样会很麻烦,但对初学者来说就应该这样一步一步前进,混合编程本来就是个很复杂的流程,我觉得这样把每个流程分开来学习是最好的。

上一篇的方法完全是我们手动编译并拷来拷去集成so库的,这样会很麻烦,但对初学者来说就应该这样一步一步前进,混合编程本来就是个很复杂的流程,我觉得这样把每个流程分开来学习是最好的。接下来,将介绍强大的AndroidStudio如何在上一个篇的基础上利用gradle实现自动编译。其实就是加几个gradle脚本。

1.创建工程

2.编写java代码

主要是声明native方法
比如:

public class JNIUtils {
    public static native String getStringFromNative();
}

3.添加配置

在src/main目录下创建一个存放C/C++代码的文件夹,比如jni
然后再app的gradle文件里的android块加个脚本

    sourceSets {
        main{
            jni.srcDirs=["src/main/jni"]
        }
    }

这个想gradle构建系统表明我的工程的c/c++源码在该文件夹里

在src/main/jni创建Android.mk文件
然后配置对应的脚本

 externalNativeBuild{
        ndkBuild{
            path "src/main/jni/Android.mk"
        }
    }

在android块的defaultConfig块添加

 ndk{
            abiFilters 'armeabi-v7a'
        }

这个是设置只生成armeabi-v7a 平台的so库

4.gradle同步一下,完善C和Android.mk代码

在jni文件夹添加一个hello.c

#include <jni.h>

JNIEXPORT jstring JNICALL
Java_com_newtrekwang_ndkpractice_JNIUtils_getStringFromNative(JNIEnv *env, jclass type) {
    char* st="hello From C";
    return (*env)->NewStringUTF(env, st);
}

Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE :=hello
LOCAL_SRC_FILES := hello.c
include $(BUILD_SHARED_LIBRARY)

5.编译工程,运行

image.png
image.png
目录
相关文章
|
3月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
88 1
|
3月前
|
jenkins 持续交付
jenkins学习笔记之六:共享库方式集成构建工具
jenkins学习笔记之六:共享库方式集成构建工具
|
2月前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
153 0
|
3月前
|
持续交付 jenkins C#
“WPF与DevOps深度融合:从Jenkins配置到自动化部署全流程解析,助你实现持续集成与持续交付的无缝衔接”
【8月更文挑战第31天】本文详细介绍如何在Windows Presentation Foundation(WPF)项目中应用DevOps实践,实现自动化部署与持续集成。通过具体代码示例和步骤指导,介绍选择Jenkins作为CI/CD工具,结合Git进行源码管理,配置构建任务、触发器、环境、构建步骤、测试及部署等环节,显著提升开发效率和代码质量。
78 0
|
3月前
|
Java 测试技术 容器
从零到英雄:Struts 2 最佳实践——你的Web应用开发超级变身指南!
【8月更文挑战第31天】《Struts 2 最佳实践:从设计到部署的全流程指南》深入介绍如何利用 Struts 2 框架从项目设计到部署的全流程。从初始化配置到采用 MVC 设计模式,再到性能优化与测试,本书详细讲解了如何构建高效、稳定的 Web 应用。通过最佳实践和代码示例,帮助读者掌握 Struts 2 的核心功能,并确保应用的安全性和可维护性。无论是在项目初期还是后期运维,本书都是不可或缺的参考指南。
51 0
|
3月前
|
SQL 存储 数据管理
掌握SQL Server Integration Services (SSIS)精髓:从零开始构建自动化数据提取、转换与加载(ETL)流程,实现高效数据迁移与集成——轻松上手SSIS打造企业级数据管理利器
【8月更文挑战第31天】SQL Server Integration Services (SSIS) 是 Microsoft 提供的企业级数据集成平台,用于高效完成数据提取、转换和加载(ETL)任务。本文通过简单示例介绍 SSIS 的基本使用方法,包括创建数据包、配置数据源与目标以及自动化执行流程。首先确保安装了 SQL Server Data Tools (SSDT),然后在 Visual Studio 中创建新的 SSIS 项目,通过添加控制流和数据流组件,实现从 CSV 文件到 SQL Server 数据库的数据迁移。
214 0
|
3月前
|
jenkins 持续交付
jenkins学习笔记之九:jenkins认证集成github
jenkins学习笔记之九:jenkins认证集成github
|
3月前
|
安全 jenkins 持续交付
jenkins学习笔记之八:jenkins认证集成gitlab
jenkins学习笔记之八:jenkins认证集成gitlab
|
3月前
|
jenkins Devops 持续交付
jenkins学习笔记之七:jenkins集成LDAP用户认证
jenkins学习笔记之七:jenkins集成LDAP用户认证
|
4月前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
297 6