android jni java调用c,Android与JNI(一) ---- Java调用C 静态调用
第一、通過eclipse新建一個工程名為HelloJni的android工程,并編譯。
第二、右鍵工程-->Android Tools --> Add Native Support,出現(xiàn)如下界面,名字默認就可以了,點擊finish。
第三、我們在MainActivity類中加入要調(diào)用的native代碼
public native String stringFromJNI();
以及加入我們要調(diào)用的lib庫,名字就是上面圖中的名字了。
static {
System.loadLibrary("HelloJni");
}
第四、用eclipse編譯工程,使其在工程bin/classes目錄下生成class文件
然后在工程根目錄的src執(zhí)行
javah -d ../jni com.example.hellojni.MainActivity
其中-d 表示生產(chǎn)目錄,這時候jni目錄會生產(chǎn)com_example_hellojni_MainActivity.h頭文件。
在jni目錄下創(chuàng)建com_example_hellojni_MainActivity.c文件,并實現(xiàn)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添加到j(luò)ni的Android.mk中,同時刪除HelloJni.cpp文件
最后我們添加Toast來顯示stringFromJNI返回的文本。
Toast.makeText(getApplicationContext(), str, 90000000).show();
OK,接下去就是編譯安裝包看下效果了。
工程源碼下載:
Android 通過 JNI 訪問 Java 字段和方法調(diào)用
在前面的兩篇文章中,介紹了 Android 通過 JNI 進行基礎(chǔ)類型.字符串和數(shù)組的相關(guān)操作,并描述了 Java 和 Native 在類型和簽名之間的轉(zhuǎn)換關(guān)系. 有了之前那些基礎(chǔ),就可以實現(xiàn) Jav ...
Android與JNI(二) ---- Java調(diào)用C++ 動態(tài)調(diào)用
目錄: 1. 簡介 2. JNI 組件的入口函數(shù) 3. 使用 registerNativeMethods 方法 4. 測試 5. JNI 幫助方法 6. 參考資料 1. 簡介 Android與JNI( ...
jQuery擴展兩類函數(shù)(對象調(diào)用,靜態(tài)調(diào)用)
作者:zccst 先看小例子: $(function(){ //擴展方式1-通過對新調(diào)用 $.fn.each1=function(){ console.log("hehehehe$.fn.f ...
Android使用JNI實現(xiàn)Java與C之間傳遞數(shù)據(jù)(轉(zhuǎn))
介紹Java如何將數(shù)據(jù)傳遞給C和C回調(diào)Java的方法.? java傳遞數(shù)據(jù)給C,在C代碼中進行處理數(shù)據(jù),處理完數(shù)據(jù)后返回給java.C的回調(diào)是Java傳遞數(shù)據(jù)給C,C需要用到Java中的某個方法,就需 ...
Android使用JNI實現(xiàn)Java與C之間傳遞數(shù)據(jù)
介紹Java如何將數(shù)據(jù)傳遞給C和C回調(diào)Java的方法. java傳遞數(shù)據(jù)給C,在C代碼中進行處理數(shù)據(jù),處理完數(shù)據(jù)后返回給java.C的回調(diào)是Java傳遞數(shù)據(jù)給C,C需要用到Java中的某個方法,就需要 ...
JNI實現(xiàn)JAVA和C++互相調(diào)用
SDK.h #ifndef SDK_H #define SDK_H #include "AsyncProxy.h" #include "Module.h" #i ...
通過adb命令在Android設(shè)備中執(zhí)行Java命令, 并調(diào)用so文件。
一.難點一:無法復(fù)制so文件到/system/lib或者/vendor/lib下,提示只讀 解決方法: 2.使用android device monitor放庫進入到?/system/lib出現(xiàn)只讀權(quán) ...
Android NDK開發(fā) JNI操作java構(gòu)造方法,普通方法,靜態(tài)方法(七)
Android NDK開發(fā) JNI操作java普通.靜態(tài).構(gòu)造方法 1.Jni實例化一個Java類的實例jobject 1.通過FindClas( ),獲取Java類的的jclass 2.通過GetM ...
C++調(diào)用DLL有兩種方法——靜態(tài)調(diào)用和動態(tài)調(diào)用
C++調(diào)用DLL有兩種方法——靜態(tài)調(diào)用和動態(tài)調(diào)用 標(biāo)簽:?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數(shù)組操作示意圖(shift,unshift,pop,push)
shift:刪除原數(shù)組第一項,并返回刪除元素的值:如果數(shù)組為空則返回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實現(xiàn)未知寬高的元素在指定元素中垂直水平居中
js實現(xiàn)未知寬高的元素在指定元素中垂直水平居中:本章節(jié)介紹一下如何實現(xiàn)未知寬高的元素在指定元素下實現(xiàn)垂直水平居中效果,下面就以span元素為例子,介紹一下如何實現(xiàn)span元素在div中實現(xiàn)水平垂直居中 ...
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軟件基金會的數(shù)據(jù)庫,于2005年正式成為開源項目,Derby作為一個基于JAVA的關(guān)系型數(shù)據(jù)庫框架,他擁有許多便 ...
IntelliJ中的main函數(shù)、for循環(huán)、System.out.println()快捷鍵
main函數(shù) 輸入: psvm 回車 輸出: public static void main(String[] args) { } for循環(huán) 輸入:fori 回車 輸出: for (int i = ...
【nginx】配置Nginx實現(xiàn)負載均衡
一文中已經(jīng)提到,企業(yè)在解決高并發(fā)問題時,一般有兩個方向的處理策略,軟件.硬件,硬件上添加負載均衡器分發(fā)大量請求,軟件上可在高并發(fā)瓶頸處:數(shù)據(jù)庫+web服務(wù)器兩處添加解決方案,其中web服務(wù)器前面一層最 ...
安裝 Linuxbrew
在 OS X 平臺上非常流行的包管理器?Homebrew?最近正被移植到 Linux 上而成為?Linuxbrew.雖然各種 Linux 發(fā)行都帶有自己的包管理工具,諸如 apt-get.yum.pa ...
總結(jié)
以上是生活随笔為你收集整理的android jni java调用c,Android与JNI(一) ---- Java调用C 静态调用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于计算机网络的短文英语,英语翻译哪个心
- 下一篇: android sina oauth2.