成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括王屋網(wǎng)站建設(shè)、王屋網(wǎng)站制作、王屋網(wǎng)頁(yè)制作以及王屋網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,王屋網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到王屋省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
Android Studio 1.5+表示Android Studio 1.5版本以及以上。
網(wǎng)上大部分中文或英語(yǔ)教程還是停留在老版本的Android Studio的Debug的設(shè)置,要么不全。正好最近工作中要在Android Studio中調(diào)試C++代碼,就來(lái)寫一篇咯。
Android Studio 1.5+的調(diào)試設(shè)置與之前有所不同。
而且新版中推出了一個(gè)Hybrid的調(diào)試:可以混合調(diào)試Native代碼(C/C++)和Java代碼。
步驟
首先你得安裝了1.5版+的Android Studio。
如果你還在用Eclipse,那真的太古董了...
現(xiàn)在Android Studio絕對(duì)是谷歌的親兒子,極為強(qiáng)大和成熟的一款I(lǐng)DE。已經(jīng)絕非Eclipse能比擬。這年頭開發(fā)Android不用AS,簡(jiǎn)直... 好吧,也沒必要看這篇文章了。
安裝LLDB:(LLDB是Low Level DeBugger 的縮寫,是LLVM的子項(xiàng)目。LLVM在下面補(bǔ)充知識(shí)部分有介紹,就不贅述了)。依次Tools->Android->SDK Manager, 然后點(diǎn)擊 "SDK Tools" 的Tab標(biāo)簽,勾選LLDB。點(diǎn)擊 "Apply"以安裝LLDB。
激活Native代碼的調(diào)試(不激活的話,之后會(huì)出現(xiàn)錯(cuò)誤 Error: Build type isn's JNI debuggable):在你的項(xiàng)目的子module的build.gradle文件中的buildTypes 區(qū)塊中添加
debug { jniDebuggable true }
激 活Java代碼的調(diào)試(貌似沒激活也能調(diào)試。無(wú)所謂了,激活更保險(xiǎn)):在你的項(xiàng)目的子module的AndroidManifest.xml文件中添加
<application android:debuggable="true"></application>
編輯Configuration:選擇 Run -> Edit Configuration (也可以用屏幕右上角的下拉菜單,選擇Edit Configuration)
點(diǎn)擊+號(hào)來(lái)添加新的Configuration,選擇類型Android Native
給新建的Android Native Configuration一個(gè)名字,比如叫 Debug_Native
在General的Tab中,選擇你的module作為要debug的Module
在Native Debugger的Tab中,確保勾選了Hybrid這個(gè)選項(xiàng),默認(rèn)是勾選的。
在你的Native代碼或Java代碼中添加斷點(diǎn),很簡(jiǎn)單,直接鼠標(biāo)點(diǎn)擊代碼行左側(cè)就可以添加。
啟動(dòng)調(diào)試:Run->Debug,選擇你要調(diào)試的module,再選擇運(yùn)行在模擬器上或者真機(jī)上 (或者以Debug模式啟動(dòng)你的module,只要點(diǎn)擊右上角的三角形運(yùn)行按鈕右邊的Bug按鈕(那只綠色的蟲蟲))
盡情享受Android Studio帶來(lái)的開發(fā)流暢感吧!
之后會(huì)寫一篇完整的Android Studio的NDK配置使用以及一個(gè)Android上層Java代碼調(diào)用Native代碼實(shí)現(xiàn)Unix Socket的服務(wù)器和客戶端通信的例子(正好最近工作中剛完成一個(gè)測(cè)試任務(wù))。
補(bǔ)充知識(shí)
「整理自維基百科和互聯(lián)網(wǎng)」
LLVM官網(wǎng)是 llvm.org
LLVM
是一個(gè)自由軟體專案,是一種編譯器的基礎(chǔ)建設(shè),以C++寫成。它是為了任意一種程式語(yǔ)言寫成的程式,利用虛擬技術(shù),創(chuàng)造出編譯時(shí)期,鏈結(jié)時(shí)期,執(zhí)行時(shí)期以
及“閑置時(shí)期”的最佳化。它最早是以C/C++為實(shí)作對(duì)象,目前它支援了包括ActionScript、Ada、D語(yǔ)言、Fortran、GLSL、
Haskell、Java bytecode、Objective-C、Swift、Python、Ruby、Rust、Scala以及C#。
LLVM
專案起源于2000年伊利諾伊大學(xué)厄巴納-香檳分校維克拉姆·艾夫(Vikram Adve)與克里斯·拉特納(Chris
Lattner)的研究發(fā)展而成,他們想要為所有靜態(tài)及動(dòng)態(tài)語(yǔ)言創(chuàng)造出動(dòng)態(tài)的編譯技術(shù)。
LLVM是以BSD授權(quán)來(lái)發(fā)展的開源碼軟體。在2005年,蘋果電腦雇用了克里斯·拉特納及他的團(tuán)隊(duì),為了蘋果電腦開發(fā)應(yīng)用程式系統(tǒng),LLVM為現(xiàn)今
Mac OS X及iOS開發(fā)工具的一部分。
LLVM的命名最早源自于底層虛擬機(jī)器(Low Level Virtual
Machine)的首字字母縮寫,由于這個(gè)專案的范圍并不局限于建立一個(gè)虛擬機(jī)器,這個(gè)縮寫導(dǎo)致了廣泛的疑惑。
LLVM開始成長(zhǎng)之后,成為眾多編譯工具及低階工具技術(shù)的統(tǒng)稱,使得這個(gè)名字變得更不貼切,所以開發(fā)者決定放棄這個(gè)縮寫的意涵,現(xiàn)今LLVM已經(jīng)單純成為
一個(gè)品牌,適用于LLVM底下的所有專案,包含LLVM中介碼(LLVM IR)、LLVM除錯(cuò)工具、LLVM C++標(biāo)準(zhǔn)函式庫(kù)...等。
LLVM是一個(gè)底層虛擬機(jī)平臺(tái),提供了經(jīng)過(guò)最佳化的IF代碼,也就是有個(gè)中間層,在這個(gè)中間層可以做很多的事情,比如優(yōu)化和提供給編譯器更多的信息,理論上可以支持幾乎任何編程語(yǔ)言。llvm默認(rèn)的前端是clang,當(dāng)然也可以用gcc做前端。
LLVM是用c++寫的,模塊化做的很好,因此可以很好的和clang,gcc等等更多的東西合作,能為ide提供更全的有用信息。而gcc則包含的比較全面,整一 個(gè)是一個(gè)宏結(jié)構(gòu),沒有模塊化設(shè)計(jì),用c寫的,對(duì)ide也不太友好(實(shí)際上linux社區(qū)里似乎對(duì)ide一直不感冒)。不過(guò)c++版的gcc正在重寫中,為 了與llvm/clang更好的競(jìng)爭(zhēng),而且gcc從5.0開始打算進(jìn)行模塊化設(shè)計(jì),所以,以后gcc內(nèi)部可能會(huì)分出很多部分。
就現(xiàn)在來(lái)看,gcc大體等同于llvm+clang所提供的功能。
很多人特別羨慕clang那強(qiáng)大的錯(cuò)誤診斷信息,其實(shí)gcc4.8部分信息診斷能力已經(jīng)超過(guò)它了,比它更準(zhǔn)確,所以競(jìng)爭(zhēng)真的很好,我們可以用到好的東西了。gcc目前的問題就是缺乏模塊化設(shè)計(jì),這是暫時(shí)落后于llvm的地方。
freebsd不用gcc是因?yàn)間pl協(xié)議,llvm/clang的協(xié)議更加自由,但llvm/clang目前的兼容性和參數(shù)優(yōu)化等等方面和gcc還有不小差距,雖然編譯后的體積更小了(架構(gòu)領(lǐng)先優(yōu)勢(shì)),但在性能優(yōu)化方面相比gcc還有很多事情要做。
新聞標(biāo)題:【Android】AndroidStudio1.5+中混合調(diào)試Native和Java代碼
URL網(wǎng)址:http://chinadenli.net/article12/gjeogc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、用戶體驗(yàn)、面包屑導(dǎo)航、網(wǎng)站設(shè)計(jì)公司、微信公眾號(hào)、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)