為Android SDK增加應用案例實現
為Android SDK增加應用案例實現是本文要介紹的內容,主要是來了解并學習Android SDK的內容,具體關于Android SDK的內容來看本文詳解。
在開發Android開發應用的過程中,通常有兩種方式:NDK和eclipse,或者直接在Android SDK增加。這里介紹如何在Android SDK環境中增加一個應用程序。其中涉及到JNI,JAVA對JNI的調用,其中JNI代碼文件為C++。
***步,建立JNI層代碼,注意,JNI代碼的路徑與JAVA的代碼路徑有很大的關系,一定要保持一致。
Android SDK在frameworks/base/core/jni目錄下建立JNI C++文件android_test.cpp,內容如下:
- #define LOG_TAG "FMC"
- #include "jni.h"
- #include "android_runtime/AndroidRuntime.h"
- #include <nativehelper/JNIHelp.h>
- #include "utils/Log.h"
- extern "C" {
- int test(void);//此函數可以來自c代碼或c庫
- };
- namespace android //注意名稱空間和JAVA調用JNI所有的路徑有緊密的關系,不能隨便取名稱空間。
- //原作者這句話不對
- //這只是c++的命名空間和JNI沒有關系,如果不用android namespace那么在
- //AndroidRuntime.cpp里面也要聲明在android namespace外面。
- {
- static jint android_test(JNIEnv *env, jobject clazz)
- {
- return test();
- }
- static JNINativeMethod method_table[] = {
- { "my_test", "()I", (void*)android_test}, //***個參數為字串,這是JAVA層看到的函數名;
- //第二個參數為該函數的形參說明,
- //JAVA代碼就是靠這個參數知道所調用函數的形參情況;
- //第三個參數為JNI代碼中實際調用的C函數。
- }
- int register_android_test(JNIEnv *env)//這是JNI注冊函數,android.test就是java調用層(第三步)看到的包路徑,
- //如果這里是register_android_hardware_test,
- //那么JAVA調用層需要導入android.hardware.test包
- {
- return AndroidRuntime::registerNativeMethods(env, "android/test/Test",method_table,NELEM(method_table));
- }
- };
第二步,把JNI代碼注冊函數添加到AndroidRuntime運行時庫中。編輯frameworks/base/core/jni/AndroidRuntime.cpp文件:
Android SDK按照文件上的方法對應的增加以下兩行:
- ..........
- extern int register_android_test(JNIEnv* env);//這是android_test.cpp文件中的注冊函數
- ..........................
- static const RegJNIRec gRegJNI[] = {
- .........
- .........
- REG_JNI(register_android_test),
- .........
- .......
- };
第三步,建立JAVA調用層,在frameworks/base/core/java/android/test 目錄下建立文件Test.java,內容如下:
- package android.test;
- public class Test {
- private native int my_test();//Android 應用的代碼中最終能調用的就是這個代碼
- public Test()//構造函數
- {
- //Add Your Code Here.............
- }
- };
第四步,在packages/apps/test目錄下建立你的android應用(具體建立方法這里就不再作介紹),假設test_app.java是應用的主文件,則內容如下:
- package com.app;
- import android.test;//導入自己的包
- 在代碼中這樣使用:
- test test;
- test.my_test();//最終調用
Android SDK JNI實現,Android SDK JNI C++代碼,Android 調用C++,建立Android SDK下的JNI、JAVA應用完整步驟,Android JAVA調用C++代碼。
小結:為Android SDK增加應用案例實現的內容介紹完了,希望通過Android SDK內容的學習能對你有所幫助!