Windows環境下教你用Eclipse ADT 外掛程式產生.h/.so檔案,Java下調用JNI,輕鬆學習JNI

來源:互聯網
上載者:User

標籤:jni   ndk   so 產生   windows   

準備工作:Eclipse ADT IDE 開發工具,NDK ,Java 環境,博主的配置是:Windows x86 , ADT Build: v22.3.0-887826 , JAVA 1.7, NDK  android-ndk-r9

首先我們需要知道在 Linux 下編譯 Project 產生 so 可以用 make ,但是在 WINDOWS 就不行了,這個就不多說了,大夥都明

白,然而今天寫的這篇部落格就是教大家怎麼在Windows 配置自己的ADT開發外掛程式也具備這樣的功能,方便快速高效的開發,本

篇部落格暫時沒有涉及 Studio so 外掛程式產生,因為博主習慣 ADT 了 ,準備好上述所有的準備之後,我們開始進行後階段的講解

①首先我們建立一個Demo來測試我們的配置是否成功

是我剛建立的一個Demo,其中JNITools 就是調用so的地方,在沒產生so之前,建議先不要載入so檔案,把注釋的全刪

掉,之後就開始配置ADT產生.h檔案,用來匯入Java class/method 


②寫完這樣的Demo類之後,繼續下面的操作,產生 .h 檔案,看下面的步驟,以及配置要求




點擊program 再點左上方的建立 ,可以看到我的program下面有JAVAH/NDK 這是我已經配置好了的,下面繼續教大家配置

免命令列的快速產生操作配置


Arguments:-classpath ${project_loc}\bin\classes -d ${project_loc}\jni -jni ${java_type_name}


之後在配置 Common


每次改完配置記得Apply一下,.h檔案產生的配置就OK了,下面說產生的使用操作


產生的檔案


標頭檔的產生就完成了,就下來就是寫.c檔案並且配置.so檔案產生的外掛程式


編寫如上.c檔案,匯入我們之前產生的標頭檔和方法,下面開始產生.so配置的外掛程式,跟javah配置類似,不過在這之前我們需要配置一下Application.mk/Android.mk檔案,如果Application.mk未配置,預設編譯Android.mk檔案,編寫如下Andriod.mk檔案,在這之前我們可以先不用可以去瞭解這兩個mk檔案的變數到底有啥作用,具體用來幹啥,配置完之後可以再去詳細瞭解一下



②開始配置ADT產生.so檔案的外掛程式








別忘了Apply,下面繼續說.so的產生



so的調用和測試:



整個配置到這裡就講完了,下面就跟大家說說關於so的一些反編譯技巧,這其實是個技術活,相信接觸JNI的朋友都知道,

這並非易事,因為即使解析出來了,也是一些組合語言,還需要繼續深入,才能獲得根本意義上的所需要的東西

在這裡,博主給大家推薦一個so反編譯工具,IDA ,是我覺得目前逆向so最好的工具







總而言之一個包含比較多的函數的so逆向起來是非常麻煩且工作量大的工程,嘿嘿,當然只要有興趣做起來就不是難事,就像我一樣,沒事就喜歡鑽研這些玩意兒

好了這篇部落格就這麼多內容,可以慢慢去揣摩一下

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Windows環境下教你用Eclipse ADT 外掛程式產生.h/.so檔案,Java下調用JNI,輕鬆學習JNI

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.