android NDK开发demo(基于android )
来源:互联网 发布:中英文小说阅读软件 编辑:程序博客网 时间:2024/06/06 02:06
利用android studio进行NDK开发
一.新建android项目
新建Myndkproject工程,然后再新建一个class为MyHelloNDK的类,定义native方法。
public class MyHelloNDK {static {System.loadLibrary("myhellotest");} public native String getString();//本地方法}
二.配置NDK
如截图所示,如果没有配置的话,请先下载ndk,然后如截图所示配置。
三.生成so库文件
1.make project生成MyHelloNDK对应的.class文件,然后进入.class文件目录
在路径:
app\build\intermediates\classes\debug
利用android studio的terminal进入到debug路径下,执行如下命令:
javah -jni my.com.myndkproject.MyHelloNDK //-jni 后为你的类的包名加类名
3.执行完成后会在该路径下生成对应的.h文件,生成的代码如下
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class my_com_myndkproject_MyHelloNDK */#ifndef _Included_my_com_myndkproject_MyHelloNDK#define _Included_my_com_myndkproject_MyHelloNDK#ifdef __cplusplusextern "C" {#endif/* * Class: my_com_myndkproject_MyHelloNDK * Method: getString * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_my_com_myndkproject_MyHelloNDK_getString (JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif
4.在工程的main目录下新建一个名字为jni的目录,然后将刚才的 .h文件剪切过来。在jni目录下新建一个c文件,随意取名,我的叫myhellotest.c 。然后编辑代码如下
//// Created by c_lj on 16-12-30.//#include "my_com_myndkproject_MyHelloNDK.h"/* * Class: my_com_myndkproject_MyHelloNDK * Method: getString * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_my_com_myndkproject_MyHelloNDK_getString (JNIEnv * env, jobject obj){ return (*env)->NewStringUTF(env,"This just a test for Android Studio NDK JNI developer!");}5.检查配置工程的local.properties文件中添加NDK路径,有些版本默认未配置
ndk.dir=/home/c_ljf/AndroidSDK/android-sdk-linux/ndk-bundlesdk.dir=/home/c_ljf/AndroidSDK/android-sdk-linux6.配置app/build.gradle的文件
apply plugin: 'com.android.application'android { compileSdkVersion 24 buildToolsVersion "25.0.0" defaultConfig { applicationId "my.com.myndkproject" minSdkVersion 15 targetSdkVersion 24 versionCode 1 versionName "1.0" ndk { moduleName "myhellotest" //生成的so名字 abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库。 } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }}dependencies { compile 'com.android.support:appcompat-v7:24.2.1' compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12'}7.build 工程就可以生成对应的库了1.MainActivity.java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv=(TextView)findViewById(R.id.tv); MyHelloNDK myHelloNDK=new MyHelloNDK(); tv.setText(myHelloNDK.getString()); }}2.布局文件<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context="my.com.myndkproject.MainActivity"> <TextView android:text="Hello World!" android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content"/></RelativeLayout>四.以后总结,马上下班了。
参考1:http://blog.csdn.net/yanbober/article/details/45309049/参考2:http://www.open-open.com/lib/view/open1475221220286.html#articleHeader1
0 0
- android NDK开发demo(基于android )
- Android ndk 开发demo
- Android NDK开发<一>:第一个demo
- Android Studio NDK-Jni开发小Demo
- Android ndk demo
- android NDK/JNI demo
- Android studio NDK demo
- Android的NDK开发(2)-基于NDK的OpenGL开发
- 基于 Android NDK 进行 OpenGL ES开发
- 基于 Android NDK 进行 OpenGL ES开发
- 基于 Android NDK 进行 OpenGL ES开发
- 基于Android NDK开发实践案例解析
- 基于 Android NDK 进行 OpenGL ES开发
- 基于 Android NDK 进行 OpenGL ES开发
- 基于 Android NDK 进行 OpenGL ES开发
- 基于 Android NDK 进行 OpenGL ES开发
- Qt5.2基于NDK开发android应用
- 基于 Android NDK 进行 OpenGL ES开发
- linux定义变量内存地址分配顺序
- 斯坦福机器学习公开课6-x逻辑回归
- 移动端的emoji表情符号插入MySQL数据库失败
- 缓存管理器CacheManager
- mybatis错误:Invalid bound statement (not found)
- android NDK开发demo(基于android )
- angular.js
- Linux多线程——使用互斥量同步线程
- 写给 iOS 开发者看的 HTTPS 指南
- wxWidgets
- Android开发——监听Android手机的网络状态
- HTML5的本地存储
- 安装ARM EABI v7a System Image后 Android AVD还会出现"No system images installed for this target"
- List集合按照日期字段进行排序