1、然后就是編寫我們的build.gradle文件。
創(chuàng)新互聯(lián)公司服務(wù)項目包括巢湖網(wǎng)站建設(shè)、巢湖網(wǎng)站制作、巢湖網(wǎng)頁制作以及巢湖網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,巢湖網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到巢湖省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
2、直接將locSDKSO拷進去就行了,android.mk之中不做任何修改,因為.mk是編譯時用到的,相當于一個索引,用于指定編譯哪些c文件,進而生成so文件,而既然是.so,說明文件已經(jīng)編譯過了,不需要再編譯的。
3、安卓手機打開.so文件需要下載Native Libs Monitor這個app,這個應(yīng)用可以幫助我們理解手機上安裝的APK用到了哪些.so文件,以及.so文件來源于哪些函數(shù)庫或者框架。我們也可以自己對app反編譯來獲取這些信息。
4、在即在linux編譯的庫需要使用android的編譯器,還有你在app里面直接system.loadlibrary就行了啊,網(wǎng)上調(diào)用JNI的很多,先寫好APP,然后用javah生成固定的函數(shù)頭文件,你進行函數(shù)定義就行了。
5、so文件一樣。然后修改app的gradle中的android節(jié)點中加入:然后在main\java 建立生成.so文件那個項目的包名, 把NdkJniUtils文件copy過來。當然封裝成jar包更好啦。到此完成,調(diào)用NdkJniUtils的方法即可獲得.so文件中的內(nèi)容。
private native String printJNI(String inputStr);} 復(fù)制代碼 這一步我們可以使用eclipse來生成一個App;因為eclipse會自動為我們編譯此Java文件,后面要是用到。
$cd ~/project/Android/JNITest/bin $cd ~/project/Android/JNITest/bin 我們用ls命令查看,可以看到bin目錄下有個classes目錄,其目錄結(jié)構(gòu)為classes/org/tonny/jni,即classes的子目錄結(jié)構(gòu)是android工程的包名org.tonny.jni。
方法/步驟 在android studio中新建默認的android應(yīng)用app。點擊菜單欄的“Run”-“Attach debugger to Android process”。然后會打開“Choose Process”窗口。選中要調(diào)試的進程,然后點擊ok。
環(huán)境配置:eclipse要配置NDK插件和系統(tǒng)環(huán)境,我用的是WIN7,先去下載NDK,解壓后就是一個目錄,把路徑記住,去XP電腦配置下環(huán)境,就像配置Java環(huán)境一樣,把路徑寫到系統(tǒng)環(huán)境的PATH就好了(這樣就可以編譯JNI了)。
1、jni的目的應(yīng)該是讓java程序可以調(diào)用c/ c++的代碼。提高運行性能,不會做太復(fù)雜的操作。如果要學怎么寫jni可以看android framework下 framework 的 jni的源碼。
2、JNI是通過Java調(diào)用C語言(或其他語言,一般是C),它的實現(xiàn)機制與代碼生成器不同(JNI是通過代碼調(diào)用實現(xiàn)功能,而代碼生成器是生成代碼,復(fù)制代碼進行使用),由于C是底層語言,一些底層操作單靠Java無法實現(xiàn),所以才需要JNI。
3、這段代碼涉及到密鑰生成和加密操作,需要引入相關(guān)的加密庫來實現(xiàn)。在C語言中,可以使用 OpenSSL 庫來實現(xiàn)AES加密和解密操作。
4、步驟一:在java中定義一個c方法的接口 ,相當于在java代碼中定義了一個接口 接口的實現(xiàn)方法是C語言實現(xiàn)的。
5、接下來,則需要把c/c++接口的代碼文件編譯成共享庫(動態(tài)庫).so文件,并放到模擬器的相關(guān)目錄下。最后,啟動Java應(yīng)用程序,就可以看到最終效果了。
$cd ~/project/Android/JNITest/bin $cd ~/project/Android/JNITest/bin 我們用ls命令查看,可以看到bin目錄下有個classes目錄,其目錄結(jié)構(gòu)為classes/org/tonny/jni,即classes的子目錄結(jié)構(gòu)是android工程的包名org.tonny.jni。
用javah -jni為函數(shù)生成一個在java調(diào)用和實際的c函數(shù)之間的轉(zhuǎn)換存根,該存根通過從虛擬機棧中取出參數(shù)信息,并將其傳遞給已編譯的C函數(shù)來實現(xiàn)轉(zhuǎn)換。
Android中JNI是編譯so庫的源代碼,編譯成功后會生成SO庫,android中最終是使用SO庫的。
總共有三種方式生成Jni頭文件,但歸根結(jié)底只有一種,只是操作方法不一樣,我在這里做一下記錄,方便下次使用。
但是不知道你的BYTE是自定義的什么類型,如果是char之類的,就另外想辦法轉(zhuǎn)換成jint。
NDK是一系列工具的集合。它提供了一系列的工具,幫助開發(fā)者快速開發(fā)C(或C++)的動態(tài)庫,并能自動將so和java應(yīng)用一起打包成apk。這些工具對開發(fā)者的幫助是巨大的。
android是安卓的縮寫,NDK是日本電波工業(yè)株式會社的英文縮寫,Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google稱為“NDK”。
NDK是用來給安卓手機開發(fā)軟件用的,但是和SDK不同的是它用的是C語言,而SDK用的是Java語言。
選擇 ndk 自帶的例子 hello-jni ,我的位于E:\android-ndk-r5\samples\hello-jni( 根據(jù)具體的安裝位置而定 ) 。
(1)啟動Eclipse,新建android工程 Project:JNITest Package:org.tonny.jni Activity:JNITest (2)編輯資源文件 編輯res/values/strings.xml文件如下: 編輯res/layout/main.xml文件 我們在主界面上添加了一個EditText控件和一個Button控件。
首先在Android Studio工程的app目錄下創(chuàng)建整個jni目錄,jni目錄里寫Android.mk、Application.mk以及各類C/C++和匯編源文件。
Android Studio中jni存放在libs目錄下的armeabi目錄中。導入步驟:右鍵app目錄,find path,即打開app目錄。在libs目錄下新建文件夾,名字為 armeabi,注意名字不能改。將.so庫文件復(fù)制到armeabi目錄下即可。
本文題目:android生成jni android生成apk文件出錯
文章轉(zhuǎn)載:http://chinadenli.net/article47/didoohj.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、服務(wù)器托管、外貿(mào)網(wǎng)站建設(shè)、定制開發(fā)、網(wǎng)站維護、網(wǎng)頁設(shè)計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)