真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java代碼轉(zhuǎn)ndk java代碼轉(zhuǎn)換器

java jni 怎么在windows環(huán)境中編譯成linux下的so文件

可以直接在android工程下使用,因?yàn)閍ndroid就是linux內(nèi)核。

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站制作、成都做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)洛江,十多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):028-86922220

android的NDK開(kāi)發(fā)需要在linux下進(jìn)行: 因?yàn)樾枰袰/C++編寫(xiě)的代碼生成能在arm上運(yùn)行的.so文件,這就需要用到交叉編譯環(huán)境,而交叉編譯需要在linux系統(tǒng)下才能完成。

2.安裝android-ndk開(kāi)發(fā)包,這個(gè)開(kāi)發(fā)包可以在google android : 通過(guò)這個(gè)開(kāi)發(fā)包的工具才能將android jni 的C/C++的代碼編譯成庫(kù)

3.android應(yīng)用程序開(kāi)發(fā)環(huán)境: 包括eclipse、java、 android sdk、 adt等。

NDK編譯步驟:

選擇 ndk 自帶的例子 hello-jni ,位于E:\android-ndk-r5\samples\hello-jni( 根據(jù)具體的安裝位置而定 ) 。

2.運(yùn)行 cygwin ,輸入命令 cd /cygdrive/e/android-ndk-r5/samples/hello-jni ,進(jìn)入到 E:\android-ndk-r5\samples\hello-jni 目錄。

3.輸入 $NDK/ndk-build ,執(zhí)行成功后,它會(huì)自動(dòng)生成一個(gè) libs 目錄,把編譯生成的 .so 文件放在里面。 ($NDK是調(diào)用我們之前配置好的環(huán)境變量, ndk-build 是調(diào)用 ndk 的編譯程序 )

4.此時(shí)去 hello-jni 的 libs 目錄下看有沒(méi)有生成的 .so 文件,如果有,ndk 就運(yùn)行正常啦。

NDK和直接用JAVA編寫(xiě)代碼哪個(gè)效率更高

PC機(jī)

C程序移植

ANDROID

NDK效率更高

些(編程效率)

目前

用純C

實(shí)現(xiàn)安卓編程

linux

程序

移植更

便

windows

程序

更改

NDK相關(guān)

資料比較少

調(diào)試起

比較麻煩

現(xiàn)問(wèn)題

搜索起

比較費(fèi)事

工程

建議用java做

工程(幾十

CPP文件)

建議用NDK

怎樣將Java源代碼轉(zhuǎn)換成Java開(kāi)應(yīng)用程序

我試了一下,jbuilder生成的exe文件,在沒(méi)有裝jre的機(jī)器上不能運(yùn)行,于是我就在該exe文件的同一位置提供一個(gè)jre目錄,可是該exe文件不會(huì)去自動(dòng)找這個(gè)jre,應(yīng)該怎樣做才能使exe文件找到這個(gè)jre,并運(yùn)行起來(lái)呢?

先寫(xiě)一個(gè)bak,檢查有沒(méi)有jre,有的話(huà)就直接運(yùn)行你的程序,沒(méi)有的話(huà),先安裝再執(zhí)行。

---------------------------------------------------------------

jbuilder有一個(gè)隱藏的技巧可以讓你從可執(zhí)行文件來(lái)啟動(dòng)java程序,(不出現(xiàn)console窗口我沒(méi)有做到)。需要jbuilderx的bin目錄下的這些文件:

jbuilder.exe

jbuilderw.exe (可選)

jbuilder.config

jdk.config

“jbuilder.exe”是一個(gè)通用的可執(zhí)行外殼文件,用以啟動(dòng)java程序,“jbuilderw.exe”好像是javaw.exe一樣,它把“jbuilder.exe”包裝起來(lái),但是運(yùn)行時(shí)候不顯示那個(gè)console的窗口。使用這些文件的關(guān)鍵是文件名?!癹builder.exe”查找一個(gè)文件叫“jbuilder.config”的配置文件,里面包含了運(yùn)行java程序的必須信息。同樣的“jbuilderw.exe”查找“jbuilder.exe”來(lái)啟動(dòng)不帶console窗口的java程序。如果把jbuilder.exe重命名為“foo.exe”,那“foo.exe”將去尋找“foo.config”配置文件,同樣“jbuilderw.exe”被重命名為“foow.exe”,它會(huì)去尋找“foo.exe”文件。

說(shuō)到這里,聰明的讀者應(yīng)該猜到怎樣利用jbuilder.exe來(lái)啟動(dòng)應(yīng)用程序了。只要把jbuilder.exe,jbuilerw.exe,jbuilder.config改名成相應(yīng)的文件名,在jbuilder.config里面指定主類(lèi)和類(lèi)路徑,就能夠通過(guò)執(zhí)行jbuilder.exe(或者被改名后的exe文件)來(lái)啟動(dòng)java應(yīng)用程序了。

在\jbuilderx\bin\目錄下,后把jbuilder.exe,jbuilder.config,jdk.config四個(gè)文件拷貝到某目錄下,然后打開(kāi)jbuilder.config文件,作相應(yīng)的修改:

在jbuilder.config里面找到下面兩行

# start jbuilder using the its main class

mainclass com.borland.jbuilder.jbuilder ----修改主類(lèi)為自己希望的類(lèi)

config里面可以識(shí)別的命令可以在jbuilder/bin目錄下的config_readme.txt里面找到詳細(xì)說(shuō)明。

然后修改jdk.config里面的javapath相對(duì)的路徑,例如原來(lái)是

javapath ../jdk1.3/bin/java ----修改主類(lèi)為自己打包的jre路徑(可以使相對(duì)路徑,如./jre)

最后將jbuilder.exe,jbuilder.config修改成所需要的文件名,例如foo.exe和foo.config文件。

下面的小技巧可能更有趣,將jar文件打包進(jìn)入exe文件!

將jar包附加到j(luò)builder.exe后面去,執(zhí)行過(guò)程:

copy /b ..\jbuilder.exe+hello.jar foo.exe

一個(gè)含jar包的exe文件得到了!

這個(gè)過(guò)程的大致原理是:exe文件的重要信息都在文件頭部,所以把亂七八糟的東西放exe文件尾部是不要緊的;而jar/zip文件的重要信息是在文件尾部的,這樣它們兩不相干,能夠容易的被執(zhí)行。

ndk生成的so怎么在java調(diào)用

1. 自己寫(xiě).c文件,然后生成so庫(kù)

2. 引用別人的靜態(tài)庫(kù),或者動(dòng)態(tài)庫(kù)來(lái)生成新的jni調(diào)用庫(kù)。

我們先來(lái)看最簡(jiǎn)單的編寫(xiě)一個(gè)jni調(diào)用的so庫(kù),包含一個(gè)獲取字符串的方法,通過(guò)這個(gè)列子,我們主要是了解怎么在android的工程中調(diào)用jni的庫(kù),以及要注意的問(wèn)題。

第一步:首先我們來(lái)看下我們的工程的目錄

jni目錄是我們生成庫(kù)的文件,里面包含了一個(gè).mk編譯文件以及一系列的.c文件

libs目錄是我們編譯jni目錄下的mk文件動(dòng)態(tài)生成的。

當(dāng)我們寫(xiě)好了jni下面的庫(kù)文件以后,在當(dāng)前目錄下執(zhí)行ndk-build則會(huì)自動(dòng)生成我們需要調(diào)用的.so庫(kù)文件。

第二步: java里面怎么調(diào)用jni的庫(kù)文件,我們先看代碼

public class MainActivity extends Activity {

/* A native method that is implemented by the

* 'hello-jni' native library, which is packaged

* with this application.

*/

public native String stringFromJNI();

/* this is used to load the 'hello-jni' library on application

* startup. The library has already been unpacked into

* /data/data/com.example.HelloJni/lib/libhello-jni.so at

* installation time by the package manager.

*/

static {

System.loadLibrary("hello-jni");

}

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

String str = stringFromJNI();

System.out.println("*****str:" + str);

}

}

在java文件中要做到調(diào)用jni文件生成的so庫(kù),需要做到2步


網(wǎng)站標(biāo)題:java代碼轉(zhuǎn)ndk java代碼轉(zhuǎn)換器
本文網(wǎng)址:http://weahome.cn/article/ddeohop.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部