Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android For JNI(一)——JNI的概念以及C語言開發工具dev-c++,編寫你的第一個C語言程序,使用C啟動JAVA程序

Android For JNI(一)——JNI的概念以及C語言開發工具dev-c++,編寫你的第一個C語言程序,使用C啟動JAVA程序

編輯:關於Android編程

Android For JNI(一)——JNI的概念以及C語言開發工具dev-c++,編寫你的第一個C語言程序


當你的Android之旅一步步的深入的時候,你其實會發現,很多東西都必須去和framework或者底層打交道,還有就是混合編程之類的,以及新語言,新特性,各種牛人研究的黑科技,應接不暇,技術更新迭代太快了,我們要趕緊加快步伐了,今天就開始來入坑了——JNI,這個坑是必須要進的,啥也不說了,老司機,帶我!

一.什麼是JNI?

Java Native Interface(java本地接口)

說白了,JNI相當於一個協議,通過這個協議溝通java代碼和外部的本地代碼(C/C++),通過這個協議,這兩門語言就可以相互調用了

這裡寫圖片描述

二.為什麼用JNI?

這個和我本身要學這個JNI的目的是一樣的,我現在就在做車載方面的

1.物聯網,智能家居,車載電腦 2.效率上C/C++語言效率更高 3.代碼移植,復用已經存在的C代碼 4.java反編譯比C語言容易

三.怎麼用JNI

1.JAVA語言 2.C/C++語言 3.JAVA JNI流程 4.NDK(Native Development Kits)

我們從C/C++語言開始學起,慢慢來完善JNI

四.配置C語言環境

新知識,漲姿勢嘛,總是要學的,各位看官老爺傾聽我慢慢道來,要用JNI調用C的話,其實還有一個痛點,就是你必須會這門語言才吃到怎麼去用他的方法,所以我們必須花上幾天的時間把C的基本概念和知識點給學會,其實編程思想有點類似,JAVA和C有一些基本的東西還是類似的,主要是C的指針還是有點抽象,跟以前學面向對象一樣一樣的,哈哈,污污污污….工欲善其事必先利其器,我們先把學C所用到的開發環境給部署一下

開發工具:dev-c++

這個工具也只是讓我們更加的熟悉語法,隨便搜索一下就能下,屬於一個輕量級的開發工具,我們下載下來安裝

這裡寫圖片描述

安裝完成之後我們就可以運行了

這裡寫圖片描述

五.Hello World

當我們一切都准備好了的時候,我們就可以來編寫程序了,也就是注明的“Hello World”,現在看到helloworld是不是有一種很懷念的感覺

我們點擊左上角的文件-新建-源代碼,寫上這麼一段代碼(先不要管什麼意思,照著敲就行)

#include     
#include    //和JAVA需要的包類似 導包
//main函數          
main(){
       //輸出語句 
       printf("Hello World");
   }

然後我們把他保存為C文件

這裡寫圖片描述

我們要運行就得編譯,用慣了Eclipse,Eclipse有自動編譯的選項,而dev-c++是沒有的,我們手動編譯一下<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjwvYmxvY2txdW90ZT4NCjxwPjxpbWcgYWx0PQ=="這裡寫圖片描述" src="/uploadfile/Collfiles/20160414/20160414090931348.png" title="\" />

我們可以看到上面有條工具欄,第一個就是編譯了,第二個就是運行

這裡寫圖片描述

出現Done說明編譯完成,我們可以運行了,不過編譯會一閃而過,因為是命令窗,具體的停留的我忘記了,和提前java有點類似

這裡只要注意一點的是main。在C中,main函數也是程序的入口嗎,C中的函數和java的方法是一個概念,只是叫法不一樣

六.C語言啟動JAVA程序

C是可以直接調用windows指令的,既然如此,我們可以仿照我們程序的快捷方式的例子去做一個軟啟動方式,說起來有點迷糊哈,我們舉個例子,我們來到Eclipse的安裝目錄,你可以看到這樣的一個目錄

這裡寫圖片描述

其中,我們的快捷方式只有只有314k,卻能啟動這個程序,這就是windows的特長了,而我們的C是可以直接使用windows的指令的,所以我們就可以間接的使用C去調用JAVA了

回到正題,我們剛才舉的例子,其實從快捷方式的配置文件eclipse.ini中就可以詳細的看到

這裡寫圖片描述

我們把他打開

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20150204-1316
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Xms40m
-Xmx512m

我們不難發現,當我們啟動的時候,他會執行plugins目錄下的org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar架包,你雙擊他你會驚奇的發現,你竟然啟動了eclipse,這就是windows啟動的原理了,好了,既然邏輯通了,那我們就來寫C代碼吧!不過事先我們得准備一個java文件,我就把他放在C源碼目錄下好了

public class HelloWorld{
    public static void main(String[] str){
        //輸出語句
        System.out.println("HelloWorld");
    }
}

你可別忘了這個是要編譯的….

這裡寫圖片描述

好了,寫吧

#include     
#include    //和JAVA需要的包類似 
//main函數        
main(){

       //輸出語句 
       system("java HelloWorld"); 
       system("pause"); 

   }

這裡,只要寫一句

 system("java HelloWorld"); 

因為是同一個目錄下,所以不需要寫路徑,我們運行就可以直接看到打印的HelloWorld了

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved