使用Android Studio开发NDK
来源:互联网 发布:台州淘宝美工招聘网 编辑:程序博客网 时间:2024/05/25 08:15
使用Android Studio开发NDK
参考
http://blog.csdn.net/zhuwentao2150/article/details/52075902?locationNum=2&fps=1
1、搭建ndk开发环境
2、配置build.gradle文件,注意这里的gradle文件是Modle中的gradle
moduleName:生成.so库文件的名称
ldLibs: 引入一些库,这里我们引入打印log所需要的库
abiFilters: 输出指定的三种abi体系结构下的so库文件
到这里我们的NDK开发环境就算集成好了
3、编写java native方法
package com.lwb.testndk;/** * Created by lenovo on 2017/2/6. */public class GetString { static { // 静态初始化代码块,这里加载的库名称要和 gradle 中定义的 moduleName 名称一致 System.loadLibrary("LwbLib"); } // 该处报红,是因为在本地没有对应的 JNI 函数,但不影响编译 public static native String getNativeStr();}
完后需要使用 Build->Make Project 一下,在D:\app\android\TestNdk\app\build\intermediates\classes\debug目录下生成.class文件,生成的.class文件
4、 产生头文件的命令行:
D:\app\android\TestNdk>cd app\build\intermediates\classes\debug
D:\app\android\TestNdk\app\build\intermediates\classes\debug>javah com.lwb.testndk.GetString
拷贝头文集到 jni目录下
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_lwb_testndk_GetString *//* 要使用Log则需要引用 android/log.h 这个头文件 */#include <android/log.h>/* 可以根据需要调用不同类型的 LOG */#ifndef LOG_TAG#define LOG_TAG "ANDROID_LOG"#define LOG_E(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG , __VA_ARGS__)#define LOG_I(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG , __VA_ARGS__)#define LOG_W(...) __android_log_print(ANDROID_LOG_WARN, LOG_TAG , __VA_ARGS__)#define LOG_D(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG , __VA_ARGS__)#endif#ifndef _Included_com_lwb_testndk_GetString#define _Included_com_lwb_testndk_GetString#ifdef __cplusplusextern "C" {#endif/* * Class: com_lwb_testndk_GetString * Method: getNativeStr * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_lwb_testndk_GetString_getNativeStr (JNIEnv *, jclass);#ifdef __cplusplus}#endif#endif
#include "com_lwb_testndk_GetString.h"JNIEXPORT jstring JNICALL Java_com_lwb_testndk_GetString_getNativeStr (JNIEnv *env, jclass jObj){ LOG_E ("log 类型 _E"); LOG_I ("log 类型 _I"); LOG_D ("log 类型 _D"); LOG_W ("log 类型 _W"); return (*env)->NewStringUTF(env, "Hello lwb 111 !!!"); }
6、编写Android测试代码
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView textView =(TextView)findViewById(R.id.text); textView.setText(GetString.getNativeStr()); TextView textView2 =(TextView)findViewById(R.id.text2); textView2.setText(GetString2.getNativeStr2()); }}
0 0
- 使用Android Studio开发NDK
- 使用Android Studio开发NDK
- 使用Android Studio进行NDK开发
- 使用Android Studio进行NDK开发
- 使用 Android Studio 进行 NDK 开发
- Android studio 使用ndk开发JNI
- 使用Android studio进行NDK开发
- ndk系列——使用Android Studio 初探NDK开发
- NDK开发基础①使用Android Studio编写NDK
- NDK开发基础①使用Android Studio编写NDK
- Android studio NDK开发
- Android Studio开发NDK
- Android Studio ndk开发
- Android studio开发NDK
- Android Studio NDK开发
- Android Studio NDK 开发
- android studio ndk 开发
- Android Studio NDK开发
- Android App 沉浸式状态栏解决方案
- Java设计模式概述之结构型模式(代理模式)
- Java 异步 IO
- 基数排序
- 编码来源的故事
- 使用Android Studio开发NDK
- AndroidStudio Duplicate files copied in APK错误解决方案
- android中 关于listitem 获得焦点时,改变其背景
- 验证密码强度js
- Mark一下,好好学习,天天向上!
- 点积和叉积和凸包背诵用模板
- 关于各种编码的简要理解
- 正则表达式
- Qt程序打包发布方法(使用官方提供的windeployqt工具)