android studio ndk编程 配置

本文介绍了一个使用JNI(Java Native Interface)进行模块集成的例子,详细展示了从定义Java接口到实现C/C++代码的具体步骤,包括目录结构设置、头文件生成、cpp文件编写等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:http://blog.youkuaiyun.com/ashqal/article/details/21869151
1.

模块的目录结构

这里写图片描述
jni的文件目录可以通过这里写图片描述

java/Native.java

package com.example.administrator.mylibrary;

/**
 * Created by Administrator on 2015/5/13.
 */
public class Native {
    public static native String getStr();

    static {
        System.loadLibrary("mylibrary");
    }
}

通过javah生成头文件

javah -jni *

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_example_administrator_mylibrary_Native */

#ifndef _Included_com_example_administrator_mylibrary_Native
#define _Included_com_example_administrator_mylibrary_Native
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_example_administrator_mylibrary_Native
 * Method:    getStr
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_example_administrator_mylibrary_Native_getStr
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

实现的cpp文件

#include "com_example_administrator_mylibrary_Native.h"
JNIEXPORT jstring JNICALL Java_com_example_administrator_mylibrary_Native_getStr
  (JNIEnv * env, jobject obj){
    return env->NewStringUTF("native");
  }

jni/empty.c
是个空文件,不添加会有问题
http://stackoverflow.com/questions/29122903/ndk-is-not-configured-issue-in-android-studio

配置ndk路径

这里写图片描述
sdk.dir=d:\Users\Administrator\AppData\Local\Android\sdk
ndk.dir=F:\adt-bundle-windows-x86-20140624\android-ndk-r10d

主项目 引入子模块

这里写图片描述

运行

示例下载
http://pan.baidu.com/s/1o6EAIEm

延伸

1、手动配置生成的android.mk
这里写图片描述

子模块的build.gradle 在debug realease下添加ndk

apply plugin: 'android-library'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 16
        versionCode 1
        versionName "1.0"
    }
    release {
        runProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        ndk {
            moduleName "jnimain"
            abiFilters "armeabi", "armeabi-v7a"
        }
    }
    debug {
        ndk {
            moduleName "jnimain"
            abiFilters "armeabi", "armeabi-v7a"
        }
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:+'
}

2.cpp代码没提示
不知如何解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值