NDK开发基本流程

原创 2017年01月03日 17:17:19

最近在学习NDK的开发,这里把简单的开发流程记录下来

1、新建Android工程

2、在MainActivity中添加一个本地方法:public static native String 方法名(),例如:

public static native String getStringFromC()

3、在项目根目录下建立jni目录

4、在jni目录中通过如下命令添加头文件:javah -classpath bin/classes;android.jar文件路径 -d jni MainActivity文件路径,例如:

javah -classpath bin/classes;D:\sdk\platforms\android-21\android.jar -d jni one.lee.hellondk.MainActivity

5、F5刷新,会出现生成的头文件,在jni目录下建立hello.c文件,编写c文件,方法名从生成的头文件中拷贝过来修改一下即可,这里简单的只输出一条语句,代码如下:

#include <stdio.h>
#include <stdlib.h>
#include "one_lee_hellondk_MainActivity.h"
JNIEXPORT jstring JNICALL Java_one_lee_hellondk_MainActivity_getStringFromC
  (JNIEnv * env, jclass jclass){
    return (*env)->NewStringUTF(env, "Hello from JNI !");
}

6、在jni目录下建立Android.mk文件,编写mk文件

# 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)

#生成的so文件名称
LOCAL_MODULE    := hello
#刚建立的c文件
LOCAL_SRC_FILES := hello.c

include $(BUILD_SHARED_LIBRARY)

7、在项目的根目录下通过执行ndk-build命令生成so文件,F5刷新,此时会在项目根目录下生成libs和obj文件夹,其中含有so文件

8、在MainActivity文件中添加如下代码:

static{
    System.loadLibrary("hello");
}

9、MainActivity完整代码如下:

package one.lee.hellondk;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {

    private TextView mTextView;

    static{
        System.loadLibrary("hello");
    }

    public static native String getStringFromC();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTextView = (TextView) findViewById(R.id.text_view);
        mTextView.setText(getStringFromC());
    }
}

这就是NDK开发的简单的基本流程,希望能给对这方面有理解的兄弟有一些帮助。。。

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

NDK入门,配置与简单流程介绍

Android JNI(NDK)简单学习(环境搭建,创建一个JNI项目的基本流程)

最近在看Android增量更新的这块内容,发现需要用到Android JNI的这块知识,因此就简单的学习了一下。记录下学习的内容,以便以后再用到。 参考:http://blog.csdn.net/sh...

ndk简便开发流程

  • 2016年02月03日 10:58
  • 3.08MB
  • 下载

Eclipse Android NDK JNI 详细开发流程

  • 2011年09月01日 11:25
  • 1.13MB
  • 下载

有关ndk、jni开发流程、数据类型、数组操作

其实NDK的开发并不复杂,就入门而言甚至可以说是easy job,觉得它难是难于C/C++代码的编写与调试。这个是我最近从事NDK开发的一点感受!      首先,我们要弄懂几个概念,何为NDK...

android NDK开发流程小结

  • 2014年06月25日 13:17
  • 108KB
  • 下载

JNI入门 NDK开发流程

JNI(Java Native Interface)  使用场景 1:操作硬件(编写驱动,用java代码调用底层的c代码) 车载电脑 obd模块,on board debug 2:效率要求非常高 图形...

mac下androidstudio下ndk开发简单操作流程

原文链接:http://www.shangxueba.com/jingyan/2901837.html   说到NDK开发,其实是为了有些时候为了项目需求需要调用底层的一些C/C++的一些东西;...

Android的NDK开发(1)————Android JNI简介与调用流程

/********************************************************************************************  * au...

(OK) Android的NDK开发(1)————Android JNI简介与调用流程

(OK) Android的NDK开发(1)————Android JNI简介与调用流程
  • ztguang
  • ztguang
  • 2016年12月08日 22:23
  • 121
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NDK开发基本流程
举报原因:
原因补充:

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