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