android NDK学习。。。自学总结

原创 2016年08月29日 17:14:45

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

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

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

在grade中配置:

defaultConfig {
    applicationId "com.example.xurunjie.myndkdemo"
    minSdkVersion 21
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    ndk{
        moduleName "jnifile"         //生成的so名字
        abiFilters "armeabi", "armeabi-v7a", "x86"  //输出指定三种abi体系结构下的so库。目前可有可无(现在默认生成所有环境下适用的so)。
    }
}

1.创建java类

public class Zoom1 {
    public native String getNameName();
    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/

或cd xurunjiedeMacBook-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 <jni.h>
/* 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
#undef com_example_xurunjie_myndkdemo_Zoom1_useNative
#define com_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 <jni.h>
/*
 * 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语言运算速度较快。(如图像的转化处理等)

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


基于NDK、C++、FFmpeg的android视频播放器开发实战

-
  • 1970年01月01日 08:00

一步一步学习androidNDK编程(hello world)

上一篇博客,已经搭建好了windows下的linux环境(cygwine),这次我们试着写一个hello world。首先需要去android的官网下载android-ndk压缩包,之后解压,进入解压...
  • mockingbirds
  • mockingbirds
  • 2015-04-19 21:05:13
  • 3283

NDK开发 从入门到放弃(一:基本流程入门了解)

NDK入门,配置与简单流程介绍
  • xiaoyu_93
  • xiaoyu_93
  • 2016-10-20 11:54:38
  • 21930

Android开发学习之路--NDK、JNI之初体验

好久没有更新博客了,最近一直在看一个仿微信项目,然后看源码并自己实现下,相信经过这个项目可以让自己了解一个项目中的代码以及种种需要注意的事项。不知不觉中博客已经快要40w访问量,而且排名也即将突破30...
  • eastmoon502136
  • eastmoon502136
  • 2016-02-28 17:46:31
  • 15357

开始学习SDK

搞了好长时间的Delphi了,快两年了吧!现在感觉每要深入底层的时候,则难以上到一定的程度,所以现在开始学习一下SDK吧!虽然以前C也还学的不错!但是两年的时间摸都没摸过了,也得重头来了。加油了,自己...
  • suiyunonghen
  • suiyunonghen
  • 2008-05-27 17:23:00
  • 607

Android NDK开发学习:我的第一个NDK项目

NDK介绍:  * 1,NDK是什么:可以参考安卓官网https://developer.android.com/ndk/index.html的介绍,网上也有很多的相关资料。  * 2,什么场景可...
  • true100
  • true100
  • 2016-06-06 10:31:59
  • 3720

Android开发之NDK学习完整版

什么是JNI? JNI java本地开发接口(java native interface) JNI 是一个协议 这个协议用来沟通java代码和外部的本地代码(c/c++). 通过这个协议,ja...
  • qq_33750826
  • qq_33750826
  • 2016-11-28 17:18:59
  • 1804

android NDK学习。。。自学总结

电脑配置好NDK环境这里不做介绍,可以搜索下网上。 在android sd中配置idk路径:在工程local.properties文件中加入 ndk.dir=/Users/xurunjie/Doc...
  • jk17640
  • jk17640
  • 2016-08-29 17:14:45
  • 474

<em>NDK</em> JNI的<em>学习</em>

举报人: 被举报人: forwordlove 举报的资源分: 3 *类型: *详细原因: 取  消 提  交 <em>NDK</em> JNI的<em>学习</em> 3积分 立即下载 ...
  • 2018年04月15日 00:00

NDK学习(一)

1、遇到第一个问题是当把文件改成c++时,报找不到接口,后面才知道混编要加上extern "C",混编详见: http://www.jb51.net/article/37386.htm 2、C\C+...
  • baodinglaolang
  • baodinglaolang
  • 2015-12-31 13:43:22
  • 314
收藏助手
不良信息举报
您举报文章:android NDK学习。。。自学总结
举报原因:
原因补充:

(最多只允许输入30个字)