android ndk 学习,android NDK学习。。。自学总结

电脑配置好NDK环境这里不做介绍,可以搜索下网上。

在android sd中配置idk路径:在工程local.properties文件中加入

ndk.dir=/Users/xurunjie/Documents/android/android-ndk-r12b(自己idk路径)

在grade中配置:

defaultConfig {

applicationId"com.example.xurunjie.myndkdemo"minSdkVersion 21targetSdkVersion 23versionCode1versionName"1.0"ndk{

moduleName"jnifile"//生成的so名字abiFilters "armeabi", "armeabi-v7a", "x86"//输出指定三种abi体系结构下的so库。目前可有可无(现在默认生成所有环境下适用的so)。}

}

1.创建java类

public classZoom1{public nativeStringgetNameName();static{

System.loadLibrary("jnifile");//defaultConfig.ndk.moduleName}

} 2.根据java 类获取.class文件

(1)j

xurunjiedeMacBook-Pro:~ xurunjie$ cd /Users/xurunjie/Desktop/MyNDKDemo/app/src/main/java/com/example/xurunjie/myndkdemo (自己的工程目录) 目录。

通过命令xurunjiedeMacBook-Pro:myndkdemo xurunjie$ javac SourceUtils.java获取Zoom1.class文件

(2)编译工程。在build/intermediates/classes/debug中找到.class文件

3.根据.class获取.h文件。进入包名的上一级目录。如cd xurunjiedeMacBook-Pro:~ xurunjie$ cd /Users/xurunjie/Desktop/MyNDKDemo/app/src/main/java/

或cdxurunjiedeMacBook-Pro:myndkdemo xurunjie$ cd/Users/xurunjie/Desktop/MyNDKDemo/app/build/intermediates/classes/debug (有.class的目录,根据自己.class文件位置自己输入命令)java -jni com.example.xurunjie.myndkdemo.Zoom1(包名+类名)生成.h文件

4.在工程src目录下创建创建jni目录,将.h文件拷到该目录下。

5.根据.h创建.c文件(学过ios的应该知道。.c文件是对.h文件中方法的实现)

.h文件如下:

/* DO NOT EDIT THIS FILE - it is machine generated */#include/* Header for class com_example_xurunjie_myndkdemo_Zoom1 */#ifndef_Included_com_example_xurunjie_myndkdemo_Zoom1

#define_Included_com_example_xurunjie_myndkdemo_Zoom1

#ifdef__cplusplus

extern"C"{

#endif#undefcom_example_xurunjie_myndkdemo_Zoom1_useNative

#definecom_example_xurunjie_myndkdemo_Zoom1_useNative 1L/** Class: com_example_xurunjie_myndkdemo_Zoom1* Method: nativeDecodeYUV422* Signature: ()Ljava/lang/String;*/JNIEXPORT jstring JNICALL Java_com_example_xurunjie_myndkdemo_Zoom1_getNameName

(JNIEnv *,jclass);#ifdef__cplusplus

}

#endif#endif .c文件如下:

/* DO NOT EDIT THIS FILE - it is machine generated */#include/** Class: com_example_xurunjie_myndkdemo_Zoom1* Method: nativeDecodeYUV422* Signature: ()Ljava/lang/String;*/JNIEXPORT jstring JNICALL Java_com_example_xurunjie_myndkdemo_Zoom1_getNameName

(JNIEnv *env,jobject thiz){

return(*env)->NewStringUTF(env,"1111");}

} 6.在jni目录下创建Android.mk文件(文件内容可参考:http://www.cnblogs.com/devinzhang/archive/2012/02/29/2373729.html)

# Copyright (C) 2009 The Android Open Source Project

#

# Licensed under the Apache License, Version 2.0 (the "License");

# you may not use this file except in compliance with the License.

# You may obtain a copy of the License at

#

# http://www.apache.org/licenses/LICENSE-2.0

#

# Unless required by applicable law or agreed to in writing, software

# distributed under the License is distributed on an "AS IS" BASIS,

# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

# See the License for the specific language governing permissions and

# limitations under the License.

#

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := jnifile(so名字,自己随意取)

LOCAL_SRC_FILES := aaaa.c

include $(BUILD_SHARED_LIBRARY)

7.进入jin目录。xurunjiedeMacBook-Pro:myndkdemo xurunjie$ cd /Users/xurunjie/Desktop/MyNDKDemo/app/src/main/jni

通过命令xurunjiedeMacBook-Pro:jni xurunjie$ ndk-build声称so文件

8.说明:java操作比较耗时,c语言运算速度较快。(如图像的转化处理等)

(学习记录,有不对的希望大家指出)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值