初步使用NDK

在windows平台,需要下载Cygwin工具才能编译C文件,长期写JAVA,突然写C程序感觉挺爽的,O(∩_∩)O~

然后到Android官方下载Android NDK.

首先创建一个简单Android Project

编写一个JNI.java类,主要放置native方法

package com.birds.android.ndk;/** * @author gaofeng * @2013-10-25 *  */public class JNI {public native String getString(String str);}

非常简单就是打印一个字符串

编译Eclipse工程,然后cmd进入project到bin/classes目录下,生成一个头文件

输入命令 javah -d ../../jni com.birds.android.ndk.JNI -d是输出到指定目录

在jni目录下建一个jni.c文件,头文件是刚刚生成的 com_birds_android_ndk_JNI.h

开始实现函数体内容

#include "com_birds_android_ndk_JNI.h"JNIEXPORT jstring JNICALL Java_com_birds_android_ndk_JNI_getString  (JNIEnv *env, jobject job, jstring jstr) {    const char* s1 = "I got a string";return (*env)->NewStringUTF(env,s1);}


编写一个mk配置文件 用来编译生成so模块

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := first-jni -- 这个是自己起的模块名字
LOCAL_SRC_FILES := jni.c -- 要编译的c源文件
include $(BUILD_SHARED_LIBRARY)

进入工程下面输入ndk-build命令

自动会在项目的libs目录里面生成so模块文件

在Activity里面调用

static {System.loadLibrary("first-jni"); //这地方写模块名字}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViewById(R.id.btn1).setOnClickListener(this);}@Overridepublic void onClick(View v) {if (v.getId() == R.id.btn1) {String s = new JNI().getString("");Toast.makeText(this, s, Toast.LENGTH_SHORT).show();}}


OK, That's All.


更多相关文章

  1. android busybox 配置
  2. [置顶] Android系统安全之旅 第1章 运行编译过的Android系统
  3. 解决升级到Android(安卓)Studio 3 Beta版本编译异常
  4. Android培训班(42)
  5. 四、android studio使用自己库编译工程
  6. Android(安卓)系统开发生成签名供 Android(安卓)Studio 使用
  7. 【转】Android(安卓)OTA 升级之一:编译升级包
  8. Android中Media Framework浅析(二)——MediaServer
  9. IOS之UIViewController

随机推荐

  1. Android(安卓)录音 与播放本地音乐功能的
  2. WiFi的使用Demo
  3. Android中如何使用 address2line
  4. android 打开wifi
  5. Android(安卓)ImageSwithcher的使用
  6. Android(安卓)模拟器检测记录
  7. The Saygus VPhone V1 clears FCC, Will
  8. Android(安卓)onSaveInstanceState和onRe
  9. android Gridview生成程序快捷键的简单方
  10. Android(安卓)Applications Tutorial 13.