欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
android平臺中編寫(xiě)jni模塊的方法(1) - 技術(shù)文檔 - 程序開(kāi)發(fā) Linux時(shí)代...
北京理工大學(xué)  20981  陳罡
本文主要來(lái)記錄一下偶對android平臺下面jni技術(shù)的研究心得體會(huì ),一來(lái)是備忘,二來(lái)也為后來(lái)者節省一些獨自摸索的時(shí)間。
一直在忙著(zhù)project方面的事情,聽(tīng)到一個(gè)朋友提起說(shuō)偶的blog很久沒(méi)有更新了。所以今天抽一些時(shí)間上來(lái)寫(xiě)點(diǎn)東西。沒(méi)辦法,隨著(zhù)手機行業(yè)的競爭日趨白熱化,加上google,apple,palm之流的公司攪局,在手機領(lǐng)域的從業(yè)者的空閑時(shí)間越來(lái)越少,競爭也日趨白熱化。
閑話(huà)少敘,開(kāi)始進(jìn)入正題:
1、介紹一下命令行開(kāi)發(fā)的方法
由于用c/c++習慣了,所以對eclipse的使用很是不習慣,還是決定用命令行(makefile類(lèi)似)的方式進(jìn)行編譯、開(kāi)發(fā)(偶個(gè)人比較癡迷emacs)。
如果是java平臺的話(huà)自然要選用ant了,關(guān)于linux下面android sdk的安裝以及環(huán)境變量的設置在此偶就不再贅述了,
偶選用的工作環(huán)境如下:
軟件環(huán)境:android-sdk-linux_x86_1.5_r1,jdk 1.6.0_12,slackware 12.1G,
硬件環(huán)境:lenvo sl400(辦公本本),android g1(已被破解,并刷入cupcake 1.5的版本)
(1)創(chuàng )建項目
wayne@wayne:~/works/workspace$android create project --target 2 --package com.twm --activity JniTest --path /home/wayne/works/workspace/JniTest
這里面的android是1.5版本的sdk提供的一個(gè)腳本工具,需要注意的是參數--target(謝天謝地,google總算可以在一個(gè)sdk里面同時(shí)支持1.1版本和1.5版本的android軟件開(kāi)發(fā)了),--target取值為1的時(shí)候代表生成的項目是android 1.1版本的工程,--target取值為2的時(shí)候代表生成的項目是android 1.5版本的工程,在上面的命令行中,我們創(chuàng )建的是取值為2的for 1.5版本的android應用程序項目。
(2)編譯項目
cd JniTest
ant debug
接著(zhù)會(huì )看到如下的輸出:
Buildfile: build.xml
[setup] Project Target: Android 1.5
[setup] API level: 3
dirs:
[echo] Creating output directories if needed...
resource-src:
[echo] Generating R.java / Manifest.java from the resources...
aidl:
[echo] Compiling aidl files into Java classes...
compile:
[javac] Compiling 1 source file to /home/wayne/works/workspace/JniTest/bin/classes
dex:
[echo] Converting compiled files and external libraries into bin/classes.dex...
package-resources:
[echo] Packaging resources
[aaptexec] Creating full resource package...
debug:
[apkbuilder] Creating .JniTest-debug.apk and signing it with a debug key...
[apkbuilder] Using keystore: /home/wayne/.android/debug.keystore
BUILD SUCCESSFUL
Total time: 6 seconds
ok,如果看到了類(lèi)似偶的畫(huà)面,就代表你的命令行編譯環(huán)境編譯沒(méi)有問(wèn)題。
下面就是驗證一下了:
cd bin
ls
如果看到了JniTest-debug.apk,呵呵,代表你的安裝包已經(jīng)生成了(注意這里是debug版本的安裝包,此時(shí)你可以啟動(dòng)模擬器,然后用adb install,然后到模擬器上看看hello world的效果。汗,是不是太容易了??。?div style="height:15px;">
(3)生成release版本的安裝包
剛剛是生成了debug版本的安裝包,那么我們要生成release版本的該如何做呢?很容易,回到JniTest目錄,運行如下命令:
ant release
會(huì )看到如下輸出:
Buildfile: build.xml
[setup] Project Target: Android 1.5
[setup] API level: 3
dirs:
[echo] Creating output directories if needed...
resource-src:
[echo] Generating R.java / Manifest.java from the resources...
aidl:
[echo] Compiling aidl files into Java classes...
compile:
[javac] Compiling 1 source file to /home/wayne/works/workspace/JniTest/bin/classes
dex:
[echo] Converting compiled files and external libraries into bin/classes.dex...
package-resources:
[echo] Packaging resources
[aaptexec] Creating full resource package...
release:
[apkbuilder] Creating .JniTest-unsigned.apk for release...
[echo] All generated packages need to be signed with jarsigner before they are published.
BUILD SUCCESSFUL
Total time: 4 seconds
ok,這個(gè)時(shí)候請注意,這里面有這樣一句:
[apkbuilder] Creating .JniTest-unsigned.apk for release...
[echo] All generated packages need to be signed with jarsigner before they are published.
看來(lái)是生成了一個(gè)叫做JniTest-unsigned.apk的發(fā)布版安裝包,而且很“貼心”地告訴我們這個(gè)包需要做jarsigner的簽名(NND,都怪nokia帶了一個(gè)壞頭,現在給手機寫(xiě)個(gè)稍微有點(diǎn)用處的程序無(wú)論什么平臺都要簽名。。。很不爽)
(4)為release版本的apk制作簽名
keytool -genkey -v -keystore waynechen.keystore -alias wayne -keyalg RSA -validity 10000
這里是用了linux的一個(gè)工具來(lái)生成一個(gè)用于標明身份的key(anyway,偶的測試手機自然是被破解和刷過(guò)多次的,但是有一點(diǎn)可以肯定,不簽名即使是破解過(guò)的android G1也不能安裝那個(gè)unsigned的apk)。
上述命令運行完畢后,會(huì )生成一個(gè)叫做waynechen.keystore的簽名文件,為了下一步j(luò )arsinger做準備。
(5)為unsigned的apk安裝包簽名
這個(gè)jarsigner不是android sdk提供的工具,而是jdk里面提供的工具,因此,找不到這個(gè)工具的朋友可以查看jdk的bin路徑是否已經(jīng)加入到當前的path里面。
jarsigner -verbose -keystore waynechen.keystore JniTest-unsigned.apk wayne
簽過(guò)名以后的文件仍然叫做JniTest-unsigned.apk,不過(guò)此時(shí)的apk文件可是已經(jīng)簽過(guò)名的了,可以在真機上面安裝。
好了,到此為止已經(jīng)聒噪了一大堆通過(guò)命令行編譯android代碼的方法了,使用eclipse ide做開(kāi)發(fā)的朋友可以直接跳過(guò)上述步驟(靠,現在才說(shuō),拍死你。。。)
2.jni的基本工作原理
(1)java的本質(zhì)
想搞明白jni的本質(zhì),還要從java的本質(zhì)說(shuō)起。從本質(zhì)上來(lái)說(shuō),java這門(mén)語(yǔ)言就是一門(mén)腳本語(yǔ)言(這是偶的個(gè)人理解,希望java大俠們不要用板磚拍我),它的運行完全依賴(lài)于腳本引擎對java的代碼進(jìn)行解釋和執行(當然了,現代的java已經(jīng)先進(jìn)許多,可以從源代碼編譯成.class之類(lèi)的中間格式的二進(jìn)制文件,這種處理會(huì )大大地加快java腳本的運行速度,但是基本的執行方式仍然不變,由腳本引擎(我們稱(chēng)之為JVM)來(lái)執行,與python、perl之類(lèi)的純腳本相比,它只是把腳本變成了二進(jìn)制格式而已。另外就是java本身對面向對象的概念支持得很好,擁有完善的功能庫可供調用,把這個(gè)腳本引擎移植到所有平臺上,那么這個(gè)腳本自然就實(shí)現所謂的“跨平臺”了)。絕大多數的腳本引擎都支持一個(gè)很顯著(zhù)的特性,就是可以通過(guò)c/c++編寫(xiě)模塊,在腳本中調用這些模塊,以此來(lái)類(lèi)比java,也是一樣的,java一定要提供一種在腳本中調用c/c++編寫(xiě)的模塊的機制,才能稱(chēng)得上是一個(gè)相對完善的腳本引擎。
(2)android中的java
android平臺從本質(zhì)上是 由arm-linux操作系統 和一個(gè)叫做dalvik的java虛擬機組成的。所有在android模擬器上面看到的那些華麗的界面,都是用java語(yǔ)言編寫(xiě)的(參見(jiàn)android平臺源代碼的frameworks/base目錄)。目前看來(lái)dalvik只是提供了一個(gè)標準的支持jni調用的java虛擬機環(huán)境。android平臺中所有的硬件相關(guān)的操作均是采用jni技術(shù)進(jìn)行了封裝,由java去調用jni模塊,而jni模塊使用c/c++調用android本身的arm-linux底層驅動(dòng)。
例如,frameworks/base/libs/ui目錄下面有一個(gè)叫做“EGLDisplaySurface.cpp”的文件,里面的:
status_t EGLDisplaySurface::mapFrameBuffer()函數中,就有直接對android的arm-linux中的framebuffer的初始化代碼。
這也更加印證了,android其實(shí)是依靠java+jni建立起來(lái)的王國。hoho,如此一來(lái),就凸顯出jni在android開(kāi)發(fā)中的重要性(當然,一些簡(jiǎn)單的小程序是完全可以只用java就搞定的).
本想寫(xiě)一篇文章就記錄下來(lái)jni的編寫(xiě)和調試方法的。。。
結果一不小心跑題了,把一些周邊的入門(mén)性的知識介紹了那么多,只好下一篇再繼續說(shuō)了。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
android打包so文件到apk
NDK 應用及擴展 - fanwei51880的日志 - 網(wǎng)易博客
Android JNI簡(jiǎn)單實(shí)例(android 調用C/C++代碼)
JNI技術(shù)與Android應用(0)
Android Studio開(kāi)發(fā)JNI示例
Unity與 SO 交互 ??| 詳細講解 怎樣通過(guò) Android Studio 生成一個(gè).so文件 并簡(jiǎn)單調用!
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久