(Android)搭建NDK开发环境 (二)

前言,

    在这里用写个NDK的实例。

 

一,软件环境

    WinXP SP3

    Android SDK 2.2

    Android NDK r5

 

二,调用方的 APP

    非常简单的应用程序,就是简单的调用一下 JNI 的函数。

    HelloNDK.java

package net.dncsoft.android.sample;

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

public class HelloNDK extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        NDKBoundary ndkBoundary = new NDKBoundary();
        int i = ndkBoundary.ndk_add(1, 2);
        i++;
    }
}

    NDKBoundary.java

package net.dncsoft.android.sample;

public class NDKBoundary {

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

    public native int ndk_add(int a, int b);
}

    编译生成 .class 文件。直接运行的话肯定出错。呵呵,废话,lib 还没做呢。

 

三,生成接口定义 H 文件

    javah -o d:\HelloNDKImpl.h -classpath d:\WS\HelloNDK\bin net.dncsoft.android.sample.NDKBoundary

 

三,被调用的 LIB

    HelloNDKImpl.cpp

#include <HelloNDKImpl.h>

jint Java_net_dncsoft_android_sample_NDKBoundary_ndk_1add(JNIEnv* env,
		jobject thiz, jint x, jint y) {

	return x + y;

}

    Android.mk

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := HelloNDKImpl
LOCAL_CFLAGS    := -Werror
LOCAL_SRC_FILES := HelloNDKImpl.cpp

include $(BUILD_SHARED_LIBRARY)
 

    用上一讲的方法能编译成 libHelloNDKImpl.so 文件。

 

四,运行看看

    用下面命令启动模拟器,导入 LIB

cd %AndroidRoot%\tools
start emulator -avd avdname -partition-size 512
adb remount
adb -s emulator-5554 push d:\libHelloNDKImpl.so /system/lib

    第 2 行命令是防止 Out of Memory 错误。

    第 3 行命令是防止 Read-Only 错误。

 

    现在可以运行 APP 啦。

 

五,Debug环境 (待续)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值