中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

【Android】Android Studio 1.5+ 中混合調試Native和Java代碼

發布時間:2020-04-10 12:57:58 來源:網絡 閱讀:1575 作者:frogoscar 欄目:移動開發

【Android】Android Studio 1.5+ 中混合調試Native和Java代碼


【Android】Android Studio 1.5+ 中調試Native和Java代碼


Android Studio 1.5+表示Android Studio 1.5版本以及以上。


網上大部分中文或英語教程還是停留在老版本的Android Studio的Debug的設置,要么不全。正好最近工作中要在Android Studio中調試C++代碼,就來寫一篇咯。


Android Studio 1.5+的調試設置與之前有所不同。


而且新版中推出了一個Hybrid的調試:可以混合調試Native代碼(C/C++)和Java代碼。



步驟


首先你得安裝了1.5版+的Android Studio。


如果你還在用Eclipse,那真的太古董了...


現在Android Studio絕對是谷歌的親兒子,極為強大和成熟的一款IDE。已經絕非Eclipse能比擬。這年頭開發Android不用AS,簡直... 好吧,也沒必要看這篇文章了。


  1. 安裝LLDB:(LLDB是Low Level DeBugger 的縮寫,是LLVM的子項目。LLVM在下面補充知識部分有介紹,就不贅述了)。依次Tools->Android->SDK Manager, 然后點擊 "SDK Tools" 的Tab標簽,勾選LLDB。點擊 "Apply"以安裝LLDB。

  2. 【Android】Android Studio 1.5+ 中混合調試Native和Java代碼

  3. 激活Native代碼的調試(不激活的話,之后會出現錯誤 Error: Build type isn's JNI debuggable):在你的項目的子module的build.gradle文件中的buildTypes 區塊中添加 

  4. debug {             
        jniDebuggable true         
    }
  5. 【Android】Android Studio 1.5+ 中混合調試Native和Java代碼

  6. 激 活Java代碼的調試(貌似沒激活也能調試。無所謂了,激活更保險):在你的項目的子module的AndroidManifest.xml文件中添加

  7. <application android:debuggable="true"></application>
  8. 編輯Configuration:選擇 Run -> Edit Configuration (也可以用屏幕右上角的下拉菜單,選擇Edit Configuration)

  9. 【Android】Android Studio 1.5+ 中混合調試Native和Java代碼

  10. 點擊+號來添加新的Configuration,選擇類型Android Native

  11. 【Android】Android Studio 1.5+ 中混合調試Native和Java代碼

  12. 給新建的Android Native Configuration一個名字,比如叫 Debug_Native

  13. 在General的Tab中,選擇你的module作為要debug的Module

  14. 【Android】Android Studio 1.5+ 中混合調試Native和Java代碼

  15. 在Native Debugger的Tab中,確保勾選了Hybrid這個選項,默認是勾選的。

  16. 【Android】Android Studio 1.5+ 中混合調試Native和Java代碼

  17. 在你的Native代碼或Java代碼中添加斷點,很簡單,直接鼠標點擊代碼行左側就可以添加。

  18. 【Android】Android Studio 1.5+ 中混合調試Native和Java代碼

  19. 【Android】Android Studio 1.5+ 中混合調試Native和Java代碼

  20. 啟動調試:Run->Debug,選擇你要調試的module,再選擇運行在模擬器上或者真機上 (或者以Debug模式啟動你的module,只要點擊右上角的三角形運行按鈕右邊的Bug按鈕(那只綠色的蟲蟲))

  21. 【Android】Android Studio 1.5+ 中混合調試Native和Java代碼


【Android】Android Studio 1.5+ 中混合調試Native和Java代碼


盡情享受Android Studio帶來的開發流暢感吧!


之后會寫一篇完整的Android Studio的NDK配置使用以及一個Android上層Java代碼調用Native代碼實現Unix Socket的服務器和客戶端通信的例子(正好最近工作中剛完成一個測試任務)。



補充知識


「整理自維基百科和互聯網」


LLVM官網是 llvm.org


LLVM 是一個自由軟體專案,是一種編譯器的基礎建設,以C++寫成。它是為了任意一種程式語言寫成的程式,利用虛擬技術,創造出編譯時期,鏈結時期,執行時期以 及“閑置時期”的最佳化。它最早是以C/C++為實作對象,目前它支援了包括ActionScript、Ada、D語言、Fortran、GLSL、 Haskell、Java bytecode、Objective-C、Swift、Python、Ruby、Rust、Scala以及C#。

LLVM 專案起源于2000年伊利諾伊大學厄巴納-香檳分校維克拉姆·艾夫(Vikram Adve)與克里斯·拉特納(Chris Lattner)的研究發展而成,他們想要為所有靜態及動態語言創造出動態的編譯技術。 LLVM是以BSD授權來發展的開源碼軟體。在2005年,蘋果電腦雇用了克里斯·拉特納及他的團隊,為了蘋果電腦開發應用程式系統,LLVM為現今 Mac OS X及iOS開發工具的一部分。

LLVM的命名最早源自于底層虛擬機器(Low Level Virtual Machine)的首字字母縮寫,由于這個專案的范圍并不局限于建立一個虛擬機器,這個縮寫導致了廣泛的疑惑。 LLVM開始成長之后,成為眾多編譯工具及低階工具技術的統稱,使得這個名字變得更不貼切,所以開發者決定放棄這個縮寫的意涵,現今LLVM已經單純成為 一個品牌,適用于LLVM底下的所有專案,包含LLVM中介碼(LLVM IR)、LLVM除錯工具、LLVM C++標準函式庫...等。


LLVM是一個底層虛擬機平臺,提供了經過最佳化的IF代碼,也就是有個中間層,在這個中間層可以做很多的事情,比如優化和提供給編譯器更多的信息,理論上可以支持幾乎任何編程語言。llvm默認的前端是clang,當然也可以用gcc做前端。


LLVM是用c++寫的,模塊化做的很好,因此可以很好的和clang,gcc等等更多的東西合作,能為ide提供更全的有用信息。而gcc則包含的比較全面,整一 個是一個宏結構,沒有模塊化設計,用c寫的,對ide也不太友好(實際上linux社區里似乎對ide一直不感冒)。不過c++版的gcc正在重寫中,為 了與llvm/clang更好的競爭,而且gcc從5.0開始打算進行模塊化設計,所以,以后gcc內部可能會分出很多部分。


就現在來看,gcc大體等同于llvm+clang所提供的功能。


很多人特別羨慕clang那強大的錯誤診斷信息,其實gcc4.8部分信息診斷能力已經超過它了,比它更準確,所以競爭真的很好,我們可以用到好的東西了。gcc目前的問題就是缺乏模塊化設計,這是暫時落后于llvm的地方。


freebsd不用gcc是因為gpl協議,llvm/clang的協議更加自由,但llvm/clang目前的兼容性和參數優化等等方面和gcc還有不小差距,雖然編譯后的體積更小了(架構領先優勢),但在性能優化方面相比gcc還有很多事情要做。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

深圳市| 阿尔山市| 丘北县| 竹山县| 高雄县| 余姚市| 甘孜县| 九台市| 郑州市| 确山县| 隆林| 阿克陶县| 绵阳市| 龙海市| 张家口市| 精河县| 凤冈县| 建瓯市| 纳雍县| 淳安县| 丰宁| 长海县| 临桂县| 苏州市| 鹿邑县| 廉江市| 中江县| 江门市| 北流市| 吉首市| 自贡市| 平凉市| 夹江县| 兰西县| 漳平市| 镶黄旗| 永嘉县| 板桥市| 札达县| 柞水县| 宁武县|