2011-10-04 121 views
6

我試圖製作一個可以在windows和unix系統上工作的簡單構建腳本。 該腳本將從cygwin運行,如果Windows,否則只是一個標準的shell。Android-ndk - 用於cygwin的ndk-build的簡單構建腳本

該腳本將執行以下操作:

  1. 設置目錄可變SDK_ROOT到 '/ cygdrive/C/PROGRA〜2 /的Android/Android的SDK /'
  2. 設置目錄可變NDK_ROOT爲'/cygdrive/C/PROGRA〜2/android-ndk-r6b'
  3. cd Android/bin/
  4. 運行javah -d ../../test/mytest/ -classpath。:$ SDK_ROOT/platforms/android -8/android.jar com.test.MyTest
  5. cd ..
  6. 運行$ NDK_ROOT/NDK-建立

我不知道要用什麼樣的腳本語言,也沒有它的語法,我只知道它會大致樣子以上。關於如何進行的任何想法?

回答

5

在我看來,你已經寫了劇本,它只是需要一些修改:

的Windows
myscript.cmd

@ECHO OFF 
setlocal 

SET SDK_ROOT=C:\PROGRA~2\Android\android-sdk\ 
SET NDK_ROOT=C:\PROGRA~2\android-ndk-r6b\ 
CD Android/bin/ 
javah -d ../../test/mytest/ -classpath .:%SDK_ROOT%/platforms/android-8/android.jar com.test.MyTest 
CD .. 
RUN %NDK_ROOT%/ndk-build 

endlocal 

的Unix
myscript.sh

#!/bin/bash 
SDK_ROOT="/cygdrive/C/PROGRA~2/Android/android-sdk/" 
NDK_ROOT="/cygdrive/C/PROGRA~2/android-ndk-r6b" 
cd Android/bin/ 
javah -d ../../test/mytest/ -classpath .:${SDK_ROOT}/platforms/android-8/android.jar com.test.MyTest 
cd .. 
$NDK_ROOT/ndk-build 


同時,確保JAVAH在PATH環境變量存在。
如果不存在的話,你可以在一開始將其添加到腳本:

的Windows
SET PATH=c:\path\to\javah;%PATH%

的Unix
export PATH=/path/to/javah:$PATH


注意:你可能有在Windows上修改腳本的sdk/ndk路徑。

+0

是的,這正是我正在尋找的!但是,當試圖在Cygwin中運行unix腳本時,我得到以下內容:#1:「第5行:$'\ r':命令不存在。」 #2:「沒有這樣的文件或目錄:Android/bin /(儘管它確實存在於腳本的位置)」 – KaiserJohaan

+0

你是從bash cygwin shell啓動腳本(unix)嗎?你能告訴我一個截圖嗎? – aayoubi

+0

@KaiserJohaan'\ r'表明在bash腳本中有一個Windows「換行符」字符。嘗試使用Unix風格的換行符保存它。 (例如,在記事本++:編輯菜單中,EOL轉換) –

4

如果您使用Eclipse,我會建議爲此任務創建一個新的啓動器。打開你的項目屬性,並從左側窗格中選擇Builders。我們希望與該結束了:

Project builders

點擊「新建...「創建一個新的程序啓動:

New program launcher

在路徑ndk-build填充(我建議將它添加到系統路徑,這樣就不需要爲描繪的絕對路徑)和項目工作:

NDK builder properties

這應該已經工作,但我們可以限制哪些資源完成後刷新:

  1. 點擊「刷新」選項卡
  2. 檢查
  3. 檢查「特殊資源」
  4. 點擊「指定資源」
  5. 找到libs文件夾中的項目,並選擇它「完成時刷新資源」(以及任何受ndk-build其他文件夾,如適用)

Refresh working set

最後,我們可以限制 NDK生成器應該運行(即只有當JNI源的變化):

  1. 單擊「構建選項」選項卡
  2. 檢查「指定工作組相關資源的」
  3. 點擊「指定資源」
  4. 找到jni文件夾中的項目,並選擇它(或你有JNI的源文件,以及任何其他文件應該觸發一個新的ndk-build

Build options

我希望這可以讓您的構建過程更輕鬆!

+0

我最好尋找一個可以在cygwin中獨立運行的.sh腳本解決方案 – KaiserJohaan

+1

Hi @Paul這表明我在Eclipse中出現錯誤「Build Failed」。它給出了這個錯誤:'Exception occurred executed command line。 無法運行程序「D:\ android-ndk-r5b \ ndk-build」(在目錄「D:\ All Data \ WorkSpace \ MainBrowserActivity」中):CreateProcess錯誤= 193,%1不是有效的Win32應用程序。有任何解決方案 –

+0

'ndk-build'不是Windows可執行文件。您只能在基於Unix的系統上或通過Cygwin運行它。截圖是在Windows上進行的,因爲我在這裏從Cygwin運行Eclipse。通常我更喜歡在Ubuntu下使用本地代碼開發應用程序。 –

0

我想我錯過了這裏的東西。您當然可以通過Cygwin或Unix/Linux在Windows上運行shell腳本(.sh)。你有特定的問題嗎?

此外,請確保您的腳本中有「#!/ bin/bash」文件前綴。

0

螞蟻呢?據我所知,它可以從Win以及Linux運行...並且你必須爲兩個目標只編寫一次目標。如果你堅持,你甚至可以在.bat和.sh中打電話給Ant。