Android NDK--自己编写调用JNI
其實ubuntu中android開發環境的搭建也很簡單
(1)下載android-sdk (2)為Eclipse安裝ADT,從help->Install New SoftWare進入,地址輸入http://dl-ssl.google.com/android/eclipse/
要進入NDK開發再下一個android-ndk就可以了
以上開發包均可以從http://androidappdocs.appspot.com/sdk/ndk/index.html上下載得到
然后vi .bashrc,在PATH中添加3個路徑:
android-sdk/tools android-sdk/platform-tools android-ndk
source .bashrc使更改生效
PATH下的工具命令可以直接使用,不需要指定路徑。今天我們要用到android-sdk/tools下的android命令、android-sdk/platform-tools下的adb命令、android-ndk下的ndk-build命令。
Eclipse中使用NDK編程
1.New->Android Project
Project Name:hello-jni
Applicatin Name:hello-jni
create activity:HelloJni
Package Name:com.example.hellojni
Min SDK Version:3
2.項目下新建一個文件夾jni,該文件夾下新建兩個文件:hello-jni.c和Android.mk
hello-jni.c
#include <string.h> #include <jni.h>jstring Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz ) {return (*env)->NewStringUTF(env, "Hello from JNI !"); } Java_com_example_hellojni_HelloJni_stringFromJNI這個函數名稱是有講究的 Java_ 固定 com_example_hellojni_ java代碼的包名 HelloJni_ java代碼的類名 stringFromJNI java代碼中使用的方法名Android.mk
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := hello-jni LOCAL_SRC_FILES := hello-jni.cinclude $(BUILD_SHARED_LIBRARY)3.編寫Android程序
com.example.hellojni.HelloJni.java
package com.example.hellojni;import android.app.Activity; import android.widget.TextView; import android.os.Bundle;public class HelloJni extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);TextView tv = new TextView(this);tv.setText( stringFromJNI() );setContentView(tv);}public native String stringFromJNI();static {System.loadLibrary("hello-jni");} }4.編譯C代碼,生成共享庫
進入項目的根目錄$cd hello-jni
hello-jni $?android update project -p . -s
hello-jni $?ndk-build
此時libhello-jni.so就生成了,在bin下也有了apk包
5.直接在Eclipse中點擊運行,或者手動安裝apk包
首先輸入android命令,啟動模擬器
然后安裝apk包:adb install bin/hello-jni.apk
6.卸載apk包
使用adb提供的shell命令
adb shell
#cd /data/app
#rm com.example.hellojin.apk
總結
以上是生活随笔為你收集整理的Android NDK--自己编写调用JNI的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用纯索引子查询优化MySQL的分页查询
- 下一篇: SIP 電話