android jni java调用c,Android与JNI(一) ---- Java调用C 静态调用
第一、通過eclipse新建一個工程名為HelloJni的android工程,并編譯。
第二、右鍵工程-->Android Tools --> Add Native Support,出現如下界面,名字默認就可以了,點擊finish。
第三、我們在MainActivity類中加入要調用的native代碼
public native String stringFromJNI();
以及加入我們要調用的lib庫,名字就是上面圖中的名字了。
static {
System.loadLibrary("HelloJni");
}
第四、用eclipse編譯工程,使其在工程bin/classes目錄下生成class文件
然后在工程根目錄的src執行
javah -d ../jni com.example.hellojni.MainActivity
其中-d 表示生產目錄,這時候jni目錄會生產com_example_hellojni_MainActivity.h頭文件。
在jni目錄下創建com_example_hellojni_MainActivity.c文件,并實現stringFromJNI方法
#include
#include
#include "com_example_hellojni_MainActivity.h"
/* This is a trivial JNI example where we use a native method
* to return a new VM String. See the corresponding Java source
* file located at:
*
* src/com/example/hellojni/MainActivity.java
*/
jstring Java_com_example_hellojni_MainActivity_stringFromJNI(JNIEnv *env, jobject this)
{
return (*env)->NewStringUTF(env, "Hello from JNI !");
}
將com_example_hellojni_MainActivity.c添加到jni的Android.mk中,同時刪除HelloJni.cpp文件
最后我們添加Toast來顯示stringFromJNI返回的文本。
Toast.makeText(getApplicationContext(), str, 90000000).show();
OK,接下去就是編譯安裝包看下效果了。
工程源碼下載:
Android 通過 JNI 訪問 Java 字段和方法調用
在前面的兩篇文章中,介紹了 Android 通過 JNI 進行基礎類型.字符串和數組的相關操作,并描述了 Java 和 Native 在類型和簽名之間的轉換關系. 有了之前那些基礎,就可以實現 Jav ...
Android與JNI(二) ---- Java調用C++ 動態調用
目錄: 1. 簡介 2. JNI 組件的入口函數 3. 使用 registerNativeMethods 方法 4. 測試 5. JNI 幫助方法 6. 參考資料 1. 簡介 Android與JNI( ...
jQuery擴展兩類函數(對象調用,靜態調用)
作者:zccst 先看小例子: $(function(){ //擴展方式1-通過對新調用 $.fn.each1=function(){ console.log("hehehehe$.fn.f ...
Android使用JNI實現Java與C之間傳遞數據(轉)
介紹Java如何將數據傳遞給C和C回調Java的方法.? java傳遞數據給C,在C代碼中進行處理數據,處理完數據后返回給java.C的回調是Java傳遞數據給C,C需要用到Java中的某個方法,就需 ...
Android使用JNI實現Java與C之間傳遞數據
介紹Java如何將數據傳遞給C和C回調Java的方法. java傳遞數據給C,在C代碼中進行處理數據,處理完數據后返回給java.C的回調是Java傳遞數據給C,C需要用到Java中的某個方法,就需要 ...
JNI實現JAVA和C++互相調用
SDK.h #ifndef SDK_H #define SDK_H #include "AsyncProxy.h" #include "Module.h" #i ...
通過adb命令在Android設備中執行Java命令, 并調用so文件。
一.難點一:無法復制so文件到/system/lib或者/vendor/lib下,提示只讀 解決方法: 2.使用android device monitor放庫進入到?/system/lib出現只讀權 ...
Android NDK開發 JNI操作java構造方法,普通方法,靜態方法(七)
Android NDK開發 JNI操作java普通.靜態.構造方法 1.Jni實例化一個Java類的實例jobject 1.通過FindClas( ),獲取Java類的的jclass 2.通過GetM ...
C++調用DLL有兩種方法——靜態調用和動態調用
C++調用DLL有兩種方法——靜態調用和動態調用 標簽:?dllc++winapinullc 2011-09-09 09:49?11609人閱讀?評論(0)?收藏?舉報 ?分類: cpp(30)? [ ...
隨機推薦
Springboot框架
本片文章主要分享一下,Springboot框架為什么那么受歡迎以及如何搭建一個Springboot框架. 我們先了解一下Springboot是個什么東西,它是干什么用的.我是剛開始接觸,查了很多資料, ...
mysql 常用語句模板
插入INSERT IGNORE INTO test (`f1`, `f2`, `f3`) VALUES (v1,v2,v3); 更新update test set f1=v1,f2=v2 where ...
JS數組操作示意圖(shift,unshift,pop,push)
shift:刪除原數組第一項,并返回刪除元素的值:如果數組為空則返回undefined var a = [1,2,3,4,5]; var b = a.shift(); //a:[2,3,4,5] b: ...
BestCoder Round #87 1002 Square Distance[DP 打印方案]
Square Distance ?Accepts: 73 ?Submissions: 598 ?Time Limit: 4000/2000 MS (Java/Others) ?Memory Limit ...
js實現未知寬高的元素在指定元素中垂直水平居中
js實現未知寬高的元素在指定元素中垂直水平居中:本章節介紹一下如何實現未知寬高的元素在指定元素下實現垂直水平居中效果,下面就以span元素為例子,介紹一下如何實現span元素在div中實現水平垂直居中 ...
ZOJ3761(并查集+樹的遍歷)
Easy billiards Time Limit: 2 Seconds ???? Memory Limit: 65536 KB ???? Special Judge Edward think a g ...
Apache Derby倒斗之路-01小道消息
1.DERBY是什么: Apache Derby 是IBM于2004年貢獻給Apache軟件基金會的數據庫,于2005年正式成為開源項目,Derby作為一個基于JAVA的關系型數據庫框架,他擁有許多便 ...
IntelliJ中的main函數、for循環、System.out.println()快捷鍵
main函數 輸入: psvm 回車 輸出: public static void main(String[] args) { } for循環 輸入:fori 回車 輸出: for (int i = ...
【nginx】配置Nginx實現負載均衡
一文中已經提到,企業在解決高并發問題時,一般有兩個方向的處理策略,軟件.硬件,硬件上添加負載均衡器分發大量請求,軟件上可在高并發瓶頸處:數據庫+web服務器兩處添加解決方案,其中web服務器前面一層最 ...
安裝 Linuxbrew
在 OS X 平臺上非常流行的包管理器?Homebrew?最近正被移植到 Linux 上而成為?Linuxbrew.雖然各種 Linux 發行都帶有自己的包管理工具,諸如 apt-get.yum.pa ...
總結
以上是生活随笔為你收集整理的android jni java调用c,Android与JNI(一) ---- Java调用C 静态调用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于计算机网络的短文英语,英语翻译哪个心
- 下一篇: java多次点击时事件_click事件的