Oli*_*tea 10 android android-ndk
本机代码native.c
#include <string.h>
#include <stdio.h>
#include <jni.h>
jstring Java_com_lab5_oli_myapplication_MainActivity_helloWorld(JNIEnv* env,jobject obj)
{
return (*env)->NewStringUTF(env,"Hello world");
}
Run Code Online (Sandbox Code Playgroud)
Android.mk文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:=ocrex
LOCAL_SRC_FILES:=ndkTest.c
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
Application.mk文件
APP_ABI := all
Run Code Online (Sandbox Code Playgroud)
MainActivity中的代码
public native String helloWorld();
static{
System.loadLibrary("ocrex");
}
Run Code Online (Sandbox Code Playgroud)
首先,如果您使用的是android studio 2.2及更高版本,请使用Cmake,因为Android Studio的本机库默认构建工具是CMake.但是如果你需要ndk-build android studio仍然支持ndk-build.
1)将JNIEXPOT和JNICALL添加到本机方法中,并确保com_lab5_oli_myapplication是MainActivity类的包名.
#include <string.h>
#include <stdio.h>
#include <jni.h>
JNIEXPORT jstring JNICALL Java_com_lab5_oli_myapplication_MainActivity_helloWorld(JNIEnv* env,jobject obj)
{
return (*env)->NewStringUTF(env,"Hello world");
}
Run Code Online (Sandbox Code Playgroud)
2)在Android.mk文件中更改源名称,您的c ++名称是native.c,但在Android.mk文件中,您使用的是ndkTest.c文件名.
LOCAL_SRC_FILES:=ndkTest.c
//change it to
LOCAL_SRC_FILES:=native.c
Run Code Online (Sandbox Code Playgroud)
最后,您必须将gradle链接到本机库.1)如果您有android studio 2.2及以上版本,请右键单击该应用程序并使用gradle链接c ++项目.如果您使用的是ndk-build,那么如果您使用的是Cmake build,请选择Android.mk文件,选择插入CmakeLists的地址.2)您也可以手动配置gradle以包含本机库.您需要将externalNativeBuild块添加到模块级build.gradle文件中,并使用cmake或ndkBuild块进行配置:如果您使用的是cmake
externalNativeBuild {
// Encapsulates your CMake build configurations.
cmake {
// Provides a relative path to your CMake build script.
path "CMakeLists.txt"
}
}
Run Code Online (Sandbox Code Playgroud)
如果你正在使用ndk-build
externalNativeBuild {
// Encapsulates your CMake build configurations.
ndkBuild {
// Provides a relative path to your to the Android.mk build script.
path "Android.mk"
}
}
Run Code Online (Sandbox Code Playgroud)
有关android中cmake和ndk的详细信息,请使用此和此.
| 归档时间: |
|
| 查看次数: |
14357 次 |
| 最近记录: |