基本的网站开发技术路线,建设网站的好处有哪些,短网址生成原理,怎样查网站备案人的联系方式本文的思路#xff1a;android APP调用自定义java API,自定义java API调用自定义jni接口1#xff1a;在android源码目录framework/base下面创建add目录add目录里面的结构如下#xff1a;里面的Nadd.java android_jnitest_Nadd.cpp 和Android.mk内容如下#xff1a;Nadd.jav…本文的思路android APP调用自定义java API,自定义java API调用自定义jni接口1在android源码目录framework/base下面创建add目录add目录里面的结构如下里面的Nadd.java android_jnitest_Nadd.cpp 和Android.mk内容如下Nadd.javapackage android.jnitest;public class Nadd {static {System.loadLibrary(hello_jni);}public native int nadd(int a, int b);}android_jnitest_Nadd.cpp#define LOG_TAG hello-JNI#include #include #include #include #include #include #include #include jni.h#include JNIHelp.h#include android_runtime/AndroidRuntime.hstatic jint native_nadd(JNIEnv *env, jobject obj, jint a, jint b){return (a b);}static JNINativeMethod gMethods[] {{nadd, (II)I, (void *)native_nadd},};static int register_android_jnitest_Nadd(JNIEnv *env){return android::AndroidRuntime::registerNativeMethods(env, android/jnitest/Nadd, gMethods, NELEM(gMethods));}jint JNI_OnLoad(JavaVM *vm, void *reserved){JNIEnv *env NULL;if (vm-GetEnv((void **)env, JNI_VERSION_1_4) ! JNI_OK) {printf(Error GetEnv\n);return -1;}assert(env ! NULL);if (register_android_jnitest_Nadd(env) printf(register_android_test_hello error.\n);return -1;}return JNI_VERSION_1_4;}Android.mkLOCAL_PATH : $(call my-dir)include $(CLEAR_VARS)LOCAL_PRELINK_MODULE : falseLOCAL_SRC_FILES : \android_jnitest_Nadd.cppLOCAL_SHARED_LIBRARIES : \libandroid_runtimeLOCAL_MODULE : libhello_jniinclude $(BUILD_SHARED_LIBRARY)上面的步骤已经将代码准备好了2:修改build/core/pathmap.mk文件在FRAMEWORKS_BASE_SUBDIRS变量后添加add\代码如下FRAMEWORKS_BASE_SUBDIRS : \$(addsuffix /java, \core \graphics \location \media \opengl \sax \telephony \wifi \vpn \keystore \add \)3:修改frameworks/base/Android.mk 文件在packages_to_document变量后添加自己源代码的包名称如android/jnitest结果如下packages_to_document : \android \javax/microedition/khronos\android/jnitest4:make update-api这一步更新api,api文档在frameworks/base/api/current.txt5:修改build/target/product/base.mk在PRODUCT_PACKAGES \后面添加 libhello_jniPRODUCT_PACKAGES \20-dns.conf \95-configured \am \android.policy \android.test.runner \app_process \applypatch \bmgr \bugreport \content \dhcpcd \dhcpcd-run-hooks \dnsmasq \framework \fsck_msdos \ime \javax.obex \libSR_AudioIn \libandroid \libandroid_runtime \libandroid_servers \libaudioeffect_jni \libaudioflinger \libbundlewrapper \libcamera_client \libcameraservice \libchromium_net \libdl \libdrm1 \libdrm1_jni \libeffects \libiprouteutil \libjni_latinime \libjnigraphics \libmedia \libmedia_jni \libmediaplayerservice \libmtp \libnetlink \libnetutils \libreference-ril \libreverbwrapper \libril \librtp_jni \libsensorservice \libskia \libsonivox \libsoundpool \libsqlite \libstagefright \libstagefright_amrnb_common \libstagefright_avc_common \libstagefright_enc_common \libstagefright_foundation \libstagefright_omx \libstagefright_yuv \libsystem_server \libusbhost \libutils \libvisualizer \libvorbisidec \libwpa_client \media \media_cmd \mediaserver \monkey \mtpd \ndc \netcfg \netd \ping \platform.xml \pppd \pm \racoon \run-as \schedtest \screenshot \sdcard \services \settings \svc \system_server \tc \vdc \vold \webview \wm\libhello_jni6:make PRODUCT-sdk-sdk -j 47:编译好后自己的sdk会编译到out/host/linux-x86/下里面的android-sdk_eng.xxx_linux-x86就是自己的sdk在eclipse中选择自己sdk的路径如下图我这里只是介绍没有选择用户可以选择~/out/host/linux-x86/android-sdk_eng.xxx_linux-x86路径,然后点击Apply8:编写app测试eclipse创建一个最简单的hello工程将里面的MainActivity.java内容替换如下(或者来这里下载http://download.csdn.net/detail/a624731186/7219509)package com.example.jnitest;import android.jnitest.Nadd;import android.os.Bundle;import android.app.Activity;import android.view.Menu;public class MainActivity extends Activity {Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Nadd test new Nadd();setTitle(The Native Add Result is String.valueOf(test.nadd(30, 30)));}Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}