使用cmake解决Android中对第三方库的依赖

栏目: C · 发布时间: 8年前

内容简介:使用cmake解决Android中对第三方库的依赖

接着我们新建一个module layer1,这个module用来生成一个so库作为第三方的sdk。创建接口文件Layer.h,在接口我们定义了两个方法

//
// Created by Li Yanshun on 2017/6/6.
//

#ifndef SINGLELIB_LAYER1_H
#define SINGLELIB_LAYER1_H

#include <stddef.h>
#include <android/log.h>
#include <jni.h>
#include <string>

#define  LOG_E(...)  __android_log_print(ANDROID_LOG_ERROR,"Netclient",__VA_ARGS__)

#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
    std::string (*getResponse)();

    std::string (*getRequest)();

} NET_API_FUNCTIONS_TYPE_LAYER1;

extern __attribute__ ((visibility ("default"))) NET_API_FUNCTIONS_TYPE_LAYER1 net_client_layer1;

#ifdef __cplusplus
}
#endif

#endif //SINGLELIB_LAYER1_H

创建文件Layer.cpp来实现这个接口,每个方法都返回一个对应的字符串

//
// Created by Li Yanshun on 2017/6/6.
//

#include "Layer1.h"

std::string get_response() {
    LOG_E("layer1 get response");
    return "layer1:Response";
}

std::string get_request() {
    LOG_E("layer1 get request");
    return "layer1:Request";
}


__attribute__ ((visibility ("default"))) NET_API_FUNCTIONS_TYPE_LAYER1 net_client_layer1 = {
        get_response,
        get_request,
};

最后创建CmakeLists.txt来配置一下工程,通过add_library方法将我们源代码添加进来,生成的so文件命名为layer1,但是系统会自动在名字前面添加lib前缀。

cmake_minimum_required(VERSION 3.4.1)

include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp)
set(jnilibs "${CMAKE_SOURCE_DIR}/src/main/jniLibs")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${jnilibs}/${ANDROID_ABI})

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -fexceptions -frtti -lstdc++")

add_library(layer1 SHARED src/main/cpp/Layer1.cpp )

find_library(log-lib  log )

target_link_libraries(layer1 ${log-lib} )

编译运行后,会在jniLibs目录下的对应ABI目录里生成liblayer1.so


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

统计思维:程序员数学之概率统计

统计思维:程序员数学之概率统计

Allen B.Downey / 张建锋、陈钢 / 人民邮电出版社 / 2013-5 / 29.00元

代码跑出来的概率统计问题; 程序员的概率统计开心辞典; 开放数据集,全代码攻略。 现实工作中,人们常被要求用数据说话。可是,数据自己是不能说话的,只有对它进行可靠分析和深入挖掘才能找到有价值的信息。概率统计是数据分析的通用语言,是大数据时代预测未来的根基。 站在时代浪尖上的程序员只有具备统计思维才能掌握数据分析的必杀技。本书正是一本概率统计方面的入门图书,但视角极为独特,折......一起来看看 《统计思维:程序员数学之概率统计》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具