<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                前言 ???????最經在看Android方法的基礎知識,看到一篇文章(http://www.rbgrn.net/content/348-get-your-eclipse-integrated-ndk-on)介紹如何把Android的NDK集成到Eclipse,順便就把它翻譯過來。 ???????注: * 技術名稱保留不譯,比如Cygwin * Eclipse(英文版)的界面文本不譯,比如按鈕(Specify Resources)。 * 括號內的內容,是我添加的注釋。 ? ? 翻譯正文: ???????在Android的游戲開發中,你遲早會發現有必要把部分代碼跑得更快。用C寫的Android代碼比同樣的Java版本,快上10~100倍。我可以證實這個事實,在我最新的3D游戲引擎中,我把部分組件用原生程序(即用C/C++寫代碼,編譯成二進制的動態鏈接庫文件)重寫。 這樣帶來了極大的性能提升,但我們也不得不面對這么一個事實:Eclipse對Java的開發提供了極佳的支持的同時,對C的開發卻極其糟糕。Eclipse不適合C的開發,對嗎?錯,現在向你展示如何在Eclipse中,建立一個快速的NDK開發環境。 ???????首先聲明一點,Eclipse不僅僅適合于開發Java應用程序。Eclilpse為Java開發提供了極好的支持,它的設計初衷也是為了Java。但得益于它的設計架構,Eclipse能夠為包括C語言在內的任何語言的開發提供支持。一個名為CDT的插件,使得在Eclipse里能對C/C++進行開發。盡管我說得有些過了頭。接下來這些,是你所需要的: Android NDK(Native Development Kit)[http://developer.android.com/sdk/ndk/1.6_r1/index.html](http://developer.android.com/sdk/ndk/1.6_r1/index.html) Eclipse CDT(C Development Tooling)?[http://www.eclipse.org/cdt/](http://www.eclipse.org/cdt/) 如果用的是windows操作系統,你需要安裝Cygwin,并安裝上重要的包(特別是GCC和Make)。 ???????接下來的步驟是: ???????安裝上述三個包。我把NDK安裝到C:/Android_NDK。在后面的文章中,我都默認為該目錄是NDK的安裝目錄。 ???????為了熟悉NDK,在C:/Android_NDK/apps目錄中,你需要配置每個項目的“app”。就像NDK中的例子一樣,它們能夠正確編譯運行,并要求嚴格的配置。 ???????測試NDK的辦法: ???????啟動cygwin ???????cd /cygdrive/c/Android_NDK ???????make APP=hello-jni ???????根據上述的步驟,你將能夠正確編譯。如果cygwin漏裝了GCC、Make或者其它開發包,你有必要重新安裝Cygwin,并且確保全部必要的開發包已經安裝。如果你遇到什么特殊的錯誤,我建議把這些錯誤報告給NDK用戶組。 ???????一旦NDK能夠正常工作,你就能夠添加和配置好你的NDK開發項目。參考NDK的example一樣,你需要一個詳細的build文件(Android.mk),該文件告訴NDK編譯器編譯什么文件。JNI代碼文件通常放在應用程序項目的jni文件夾下。該目錄下的Android.mk文件指引NDK編譯器如何編譯程序。 ???????在完成這些基本配置后,你會想去寫C代碼。NDK使用Java標準的JNI技術實現。大量的關于JNI的文檔在這里都適用。怎樣去編寫JNI代碼,已經超出了本文的范疇。 ???????接下來是有用的部分: ???????如果開發過NDK程序,你很有可能習慣使用文本編輯器或者vim去編輯的你C/C++代碼,然后使用make APP=myapp的命令來編譯,接著點擊更新在Eclipse中的項目,最后盼望著那已部署上的共享庫是最新的。多么痛苦的一件事啊!其實,有一個更好的方法。 ???????目前,已經安裝上了CDT,你就可以在Eclipse中編譯你的C/C++文件。右擊C/C++源文件,選擇使用C/C++編輯器打開,就能夠使用CDT編譯器了。多友好!因為尚未編譯C/C++源文件,你并不清楚代碼正確與否。但這也使得你更友好地在一個界面下編輯代碼。 ???????生成項目也是快速而靈活的。你曾經使用過Eclipse的生成器嗎?它們是一些可配置的開關,用于執行你所配置的命令和刷新工程資源。以下是我的配置: ???????右擊你的項目,選擇“properties” ???????在左邊的列表中選擇“Builders” ???????在右側,點擊“New…”按鈕 ???????在列表框,選擇“Program”作為配置類型;點擊“OK”按鈕,進入下一個配置對話框。 ???????命名name為“Native Builder” ???????選擇Location為“c:/cygwin/bin/bash.exe” ???????“Working Directory”為“c:/cygwin/bin” ???????“Arguments”為: --login –c “cd /cygdrive/c/Android_NDK && make APP=myapp” 確保在login前有兩個連接號,-c后面的引號。 ???????接著打開“refresh”的tab面板: ???????選中“Refresh resources upon completion” ???????選擇“Specific resources” ???????點擊“Specify resources”按鈕,選擇你項目的lib目錄 ???????選中“Recursively include sub-folders” ???????接著打開“Build Options”的tab面板: ???????選中“Allocate Console” ???????選中“Launch in background” ???????選中“Run the builder After a Clean” ???????選中“Run the builder During manual builds” ???????選中“Run the builder During auto builds” ???????選中“Specify working set of relevant resources” ???????點擊“Specify Resources”按鈕,選擇你項目的JNI目錄,并包含所有的文件。 ???????點擊“OK”按鈕。 ???????這里假設:cygwin安裝在c:/cygwin;NDK安裝在c:/Android_NDK;項目工程名稱是“myapp”。根據你的安裝配置,相應地替換這些參數。 ???????你剛剛做了什么呢?你使得,在JNI的目錄下,每次修改任何文件,Eclipse都通過cygwin自動啟動NDK編譯你的工程,并在控制臺輸出編譯信息。當它編譯完成,將自動刷新工程輸出目錄(lib),并觸發ADT生成一個新的APK安裝包。這一切都極其簡便。 ???????把NDK集成到Eclipse,實實在在地加速了我當前項目的開發進度。希望你能夠在文本中受益。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看