這篇文章主要目的是Android NDK的HelloWorld從安裝到結果。
目前最新版的NDK是Android NDK, r4,所使用的windows XP/7的環境。
NDK主要是Android Native開發工具(JNI的開發),可以使Dalvik virtual machine內執行的JAVA程式與C/C++語言溝通。
要先了解何謂NDK可以先去android developer找一篇What is the Android NDK?
步驟1:安裝Cygwin
目前的版本是Cygwin 1.7.5,安裝方法:
先到 http://cygwin.com/ 網站看到右方靠上面有一個"Install or update Cygwin now! " 下載 setup.exe
執行setup.exe在Choose A Download Source畫面選擇Install from Internet,接著安裝目錄就選擇預設的就好,
然後在Choose A Download Site畫面選擇一個可用的下載網頁,在這我選擇的是ftp://ftp.ntu.edu.tw ;
接著 select packages的畫面,因為我們使用的是編譯C的工具,最簡單的安裝方式就是找到Devel選擇裡面的gcc (或gcc4;兩者選其一即可) 及 make選項如下圖所示
接著安裝完成後,檢查一下gcc與make是否可以正確執行。
步驟2:安裝NDK
首先下載Windows版本的Android NDK, r4
http://developer.android.com/intl/zh-TW/sdk/ndk/index.html
解壓縮至C:\cygwin目錄下,解壓縮完成後到C:\cygwin目錄下會看到如下畫面:
然後到C:\cygwin\home\"使用者名稱" 目錄下,用windows編輯器編輯.bash_profile :
1.在最後一行後加入下面四行,然後存檔:
PATH=/android-ndk-r4:${PATH}
NDK_ROOT=/android-ndk-r4
NDK_Sample=/android-ndk-r4/samples
export PATH NDK_ROOT NDK_Sample
如下圖所示:
(NDK_Sample是指定你的JNI程式所要放置的目錄,這邊我我指定到/android-ndk-r4/samples,這個參數會在Eclipse的C編譯中使用到。)
開啟Cygwin Bash Shell
到/android-ndk-r4/samples/hello-jni/目錄下,執行 ndk-build 見到如下圖一樣的結果表示您的NDK已經安裝完成並正確無誤產生 libhello-jni.so。
步驟3:安裝Eclipse CDT(C/C++ Development Tool)
安裝CDT很簡單,在Eclipse中Help --> Install New Software... --> Add... --> in "Archive...", 輸入CDT安裝及更新的URL位置 : http://download.eclipse.org/tools/cdt/releases/galileo
如下圖:
安裝下列套件:
• Eclipse C/C++ Development Tools
• CDT GNU Toolchain Build Support
• CDT GNU Toolchain Debug Support
• CDT Utilities
• Eclipse C/C++ Development Platform
安裝完成後,Eclipse會要求重新開啟Eclipse,重開Eclipse後看到下面圖示表示安裝完成,便可以在Eclipse中編輯C/C++程式。
步驟4:Hello-JNI
新增一個 Android專案,在Contents選項中選擇 Create project from existing source
在Location中選擇 C:\cygwin\android-ndk-r4\samples\hello-jni ,此時會自動帶出Project name為HelloJni,
接著Build Target 選擇Android 1.5然後按Finish,如下圖所示:
此時,Eclipse左邊的Package資訊如下圖:
如果第二步驟有執行過 ndk-build的話就會有libs路徑出現。
接著設定C編譯部分:
在專案名稱(HelloJNI)按滑鼠右鍵選擇Properties --> Builders --> New--> 選擇 Program
在Main標籤內容中:
Name中輸入: Native_Builder
Location中輸入: C:\cygwin\bin\bash.exe
Working Directory中輸入: C:\cygwin\bin
Arguments中輸入: --login -c "cd $NDK_Sample/hello-jni && ndk-build"
如下圖所示:
($NDK_Sample的大小寫一定要與 C:\cygwin\home\"使用者名稱"\.bash_profile 內容中大小寫一樣,這裡後面所帶的目錄就是這支JNI的目錄(hello-jni)所在,每個不同的程式都應該會有不同的目錄以實際情況為準。)
在Refresh標籤內容中:
將 Refresh resources upon completion 打勾
選擇 Specific resources
然後點選 Specify Resource 將 HelloJni下的libs路徑打勾
如下面圖所示:
在Build Options標籤內容中:
將Allocate Console打勾
將Launch in background打勾
在Run the builder:下
將After"Clean"打勾
將During manual builds打勾
將During auto builds打勾
將Specify working set of relevant resources打勾,再點選Specify Resources將 HelloJni下的jni路徑打勾
如下面圖所示:
按Apply --> OK -->OK ,將會再Eclipse的Console畫面看到如下圖資訊代表設定完成。
此時,設定正確的話可以打開hello-jni.c修改一下內容然後存檔,你將會在Console畫面看到JNI的程式重新被編譯的過程。
最後執行專案後,在模擬器的畫面就會出現如下圖:
至此,就完成了一個Hello-JNI的程式了。
補充:
1.Cygwin 在 Windows 作業系統上建立一個類似 Linux 的環境, 執行 Lnix 的指令及眾多的應用程式.
2.新版的NDK已經沒有host-setup.sh,make的方式也改成在欲編譯目錄下執行ndk-build ,這支程式會自動幫你完成程式的編譯。
3.因為Eclipse並沒有完全整合Android NDK的環境,所以執行時如果 *.so 編譯的不如預期或是出現修改前結果,建議執行第二步驟最後ndk-build那部分應該就可以解決了。
===========12/14補充========================================
android-ndk-r5版本我前幾天試過,安裝方式如同文章所述內容,只要將文章中android-ndk-r4的部分全部改成android-ndk-r5這樣就可以了。
===========延伸閱讀========================================
Java Native Interface (JNI) 的使用時機及影響
Java Native Interface (JNI)入門 -- 觀念篇
Java Native Interface (JNI) 實戰篇
Java Native Interface (JNI) Android實戰篇(使用NDK) -- HelloUart
Java Native Interface (JNI) Android算數篇(使用NDK) -- Fibonacci Sequence
Java Native Interface (JNI) Android C++語言篇--以Hello-JNI為例
Java Native Interface (JNI) Android C++語言篇--以Hello-JNI為例
Java Native Interface (JNI) Android C程式間傳遞篇--以two-libs為例
Java Native Interface (JNI) Android C呼叫Java (底層呼叫上層)間傳遞篇--以靜態或動態類型為例
Android NDK Beginner’s Guide
===========相關閱讀========================================
在 Ubuntu 12.04 LTS 安裝 Android SDK&NDK 開發環境
新版第一支Android程式(Android SDK r20) -- HelloWorld 包含 NDK Plugin
謝謝您如此用心
回覆刪除請教大大 我是新手...
回覆刪除用r4b,在 /android-ndk-r4b/samples/hello-jni/目錄下
不能 執行 ndk-build
回應是no command found
已解決了 tks
回覆刪除請問樓上大大是怎解決的@@
回覆刪除先檢查一下是否是路徑的問題,例如:PATH=/android-ndk-r4:${PATH}中的android-ndk-r4如果是用新版本的話就要改成新版本的路徑。所以如果在複製貼上前確認所有目錄路徑是否與目前路徑是一致的。
回覆刪除你好 我進入 bash shell後 都會顯示
回覆刪除bash: $'\r': command not found
bash: $'\r': command not found
bash: $'\r': command not found
bash: $'\r': command not found
bash: $'\r': command not found
bash: /home/0291/.bash_profile: line 46: syntax error: unexpected end of file
並且會產生跟"Cheng Min"一樣的錯誤 請問是什麼問題 我路徑都改成r4b了
已解決 謝謝!
回覆刪除請問樓上是如何解決的?
回覆刪除TO:筱珊
回覆刪除如果你那邊也是同樣問題的話,能把你的.bash_profile貼出來看一下嗎?
各位在編輯bash_profile時
回覆刪除最好用筆記本開來編輯
用wordpad或其他的會發生錯誤
我在設定完HelloJNI的Properties 之後出現這樣的問題
回覆刪除/usr/bin/bash: line 0: cd: /android-ndk-r4b/samples
/hello-jni: No such file or directory
可以幫我解答一下嗎
TO陳:
回覆刪除1.首先你所使用的是WIN還是Linux?你要確定一下你的bash路徑,我覺得應該不會再/usr/bin下面,所以程式找不到BASH ^_^||
2.另外你的 .profile 檢查一下是否加入 PATH、 NDK_ROOT 、NDK_Sample
以上兩個部分你先檢查看看,其相關內容在本文中有說明。
關於出現類似下面錯誤訊息時:
回覆刪除/usr/bin/bash: line 0: cd: android-ndk-r4b/samples/hello-jni: No such file or directory
發生原因是NDK_Sample在等於後面的路徑設定錯誤,以上面的訊息來看錯誤的地方在等於的後面了一個 /
應該改:
NDK_Sample=android-ndk-r4b/samples
成為
NDK_Sample=/android-ndk-r4b/samples
應該就可以解了!
另外NDK_Sample等於後面的路徑設定要按照自己的JNI程式所在路徑,並不是一定會是/android-ndk-r4b/samples,這部分要稍微注意一下。
請問打開hello-jin.c
回覆刪除#include
#include
會出現
Unresolved inclusion:
Unresolved inclusion:
要怎麼解決呢?
另外如果我再開一個HelloNeon的專案需要再建一個新的builder嗎?可以設在同一個builder?
謝謝!
由於目前我尚未遇到您所講的問題,但我猜測應該是該*.h檔應該是找不到的關係,您先查看看 include 後面所帶的 *.h 是否有在您的Cygwin系統中,也就是用find找找看,如果沒有的話把它安裝起來(libgcc),如果有則帶路徑(/lib/gcc or /usr/lib/gcc)試試看。
回覆刪除忘了回覆到:
回覆刪除關於Builders部分,每個專案都要執行一次,主要是如我文章中所述因為Eclipse跟NDK尚未整合完整的關係。
您好! 我只有找到basic_string.h
回覆刪除請問是cygwin少裝了什麼嗎?我是依照您圖裡的勾選的。
出現錯誤訊息的是string.h 跟jni.h 可是修改hello-jni.h存檔後,可在Console畫面看到JNI的程式重新被編譯,也無錯誤訊息。另外因為我是新入門,想請教如果從google soure project 下載 http://android.git.kernel.org/?p=platform/system/wlan/broadcom.git;a=summary
要如何以Jni來呼叫使用呢? 謝謝
我的string.h搜尋結果是放在android-ndk-r4b目錄下,你試試看加上路徑,錯誤應該是C語言在編譯時找不到*.h的問題。
回覆刪除至於從google soure project 下載下來的project,這部分我也沒做過,不過您可以將下載下來的函式庫它視為C語言去呼叫或include近來您所要的函式庫的方式來做。
所以目前看來出現的錯誤應該屬於C語言的部分,您可以朝向C的部份去解。
下面網址有類似您發生問題的解決方式,您可以參考看看:
http://yuanfarn.blogspot.com/2009/09/ubuntu-eclipse-gtk.html
作者已經移除這則留言。
回覆刪除你好 我按照你的方法
回覆刪除我的系統是 vista
ndk-r4
我在 執行 ndk-build時 出現了錯誤
錯誤內容如下圖(絕對沒有毒):
http://lyaya.files.wordpress.com/2010/06/error1.jpg
拜託幫我看一下
萬分感激 @@"
To:Lyaya
回覆刪除從您的錯誤訊息看來您用的不是Cygwin自己的gcc,您好像使用的是arm的gcc,試試按照文中步驟一的方法安裝Linux gcc應該可以解你的問題。
您好~~ 我想請問一下
回覆刪除當我一切準備就緒 在eclipse裡
complie時卻出現了錯誤訊息
Unknown error: Unable to build: the file dx.jar was not loaded from the SDK folder!
我有找了一下電腦裡的dx.jar 在android-sdk-windows\platforms\android-3\tools\lib裡面是有的
但是不知道為什麼eclipse讀不到
想請問一下大大 這可能是哪裡的設定沒設好 謝謝 <(_ _)>
對了 因為我是灌android-ndk-r5 環境是win7 32-bit
回覆刪除然後我剛才在MacBook上面試成功了 順利在模擬器上跑出了Hello from JNI
雖然我還是很好奇為什麼我在windows下會失敗
To:混天人
回覆刪除您的問題我也沒遇過,不過從您給的訊息看來應該不是NDK部分出問題,我覺得可能是你選擇的SDK版本中沒有安裝到dx.jar,又或者該檔案損會之類的,我剛搜尋了一下的電腦dx.jar在:
C:\Temp\Eclipse\android-sdk-windows\platform-tools\lib
C:\Temp\Eclipse\android-sdk-windows\platforms\android-3\tools\lib
C:\Temp\Eclipse\android-sdk-windows\platforms\android-7\tools\lib
C:\Temp\Eclipse\android-sdk-windows\platforms\android-8\tools\lib
你那邊再查查看你程式相對應的API Level的android-sdk-windows目錄下是否有該檔案在,要不然就得要將你的android-sdk-windows目錄刪掉從心在安裝一次試試看了。
作者已經移除這則留言。
回覆刪除你好 我進入 bash shell後 也會顯示
回覆刪除bash: $'\r': command not found
bash: $'\r': command not found
bash: $'\r': command not found
bash: $'\r': command not found
bash: $'\r': command not found
bash: /home/0291/.bash_profile: line 46: syntax error: unexpected end of file
我的.bash_profile內容是
PATH=/android-ndk-r5:${PATH}
NDK_ROOT=/android-ndk-r5
NDK_Sample=/android-ndk-r5/samples
export PATH NDK_ROOT NDK_Sample
我在執行ndk-build時也會出現
no command found
我ndk是下載r5的
拜託專家解惑了,謝謝!
這個問題在前面回覆文中有提到解法,這是windows文字編輯器的問題,會在文字最後面加上"\r"做換行這是你在編輯所看不到的,你試試用"記事本"或editplus等其他的文字編輯器重新在一次.bas_profile應該可以解你的問題的。
回覆刪除您好
回覆刪除我的.bash_profile內容是
PATH=/android-ndk-r5b:${PATH}
NDK_ROOT=/android-ndk-r5b
NDK_Sample=/android-ndk-r5b/samples
export PATH NDK_ROOT NDK_Sample
一樣不能執行ndk-build
請大家幫我一下,謝謝!
不好意思
回覆刪除關於蚊子在20110118的解說
"\r"的問題
我嘗試用winpad、devC++編譯器、記事本和UltraEdit
開來試試看,結果都一樣,是要在linux下才有辦法編輯嗎?
我的NDK版本也是r5b
我是使用editplus這個編輯器編輯沒問題的,其他編輯器我就沒使用過,另外一種方式就是你在cygwin下安裝vi,這個方式我也編輯過沒問題你可以試試看^_^
回覆刪除按照上述可以順利安裝android-ndk-r5b
回覆刪除若是使用WordPad就會有'\r'的問題
回覆刪除再用editplus來編輯還是無法解決
之後使用
cat .bash_profile | tr -d '\r' > bash_profile1
cp bash_profile1 .bash_profile
來解決'\r'的問題
但郤換來no command found
重新再用editplus來編輯就可以解決
這又是為什麼?
剛剛Google一下,似乎使用Cygwin的話'\r'的問題不少,在Cygwin FAQs有一段這麼說著:
回覆刪除Q: Mysterious errors in shell scripts, .bashrc, etc
A: You may get mysterious messages when bash reads
your .bashrc or .bash_profile, such as
"\r command not found"
(or similar). When you get rid of empty lines, the
complaints about "\r" disappears, but probably other
errors remain. What is going on?
The answer may lie in the fact that a text file (also
called ASCII file) can come in two formats:
in DOS format or in UNIX format.
Most editors can automatically detect the formats
and work properly in either format.
In the DOS format, a new line is represented by two characters:
CR (carriage return or ASCII code 13) and LF (line feed or ASCII code 15).
In the UNIX format, a new line is represented by only
one character, LF. When your .bashrc file is read,
bash thinks the extra character is the name of a command,
hence the error message.
In Cygwin or unix, you can convert a file INFILE in DOS format
to a file OUTFILE in Unix format by calling:
> tr -d '\15' < INFILE > OUTFILE
NOTE:
If you now compare the number of characters in INFILE and OUTFILE,
you will see that the latter has lost the correct
number of characters (i.e., the number of lines in INFILE):
> wc INFILE OUTFILE
所以,我的猜測:
上述問題應該是檔案被改成了dos格式,而使用editplus編輯後才會變成unix格式。
補充一下另一種解決方式:
回覆刪除cygwin script的 EOL部分是使用UNIX “\n", 經過Win內建編輯器編輯過後EOL會變成DOS的 "\n\r"
另外一個方式可使用dos2unix來解,我Cygwin安裝後再/bin/dos2unix
使用方式在Cygwin shell中執行:
dos2unix .profile
您好
回覆刪除也許跟版本有關
灌r5b的Android
SDK版本也可能需要更新到最新
至少我試過全部採用最新的版本
再用VIM編輯(我只用VIM編,其他都沒試過)
就能成功把"\r"的error消除了
但聽說有其他方式可以不使用JNI就能利用Java直接呼叫so檔
回覆刪除這個幾個網頁有人看過試過嗎?
http://www.devdaily.com/java/java-exec-processbuilder-process-1
http://gimite.net/en/index.php?Run%20native%20executable%20in%20Android%20App
http://developer.android.com/reference/java/lang/ProcessBuilder.html
不好意思
回覆刪除我是新手
請教另外一個問題
如果都是用MFC也就是windows的環境下編寫出來的DLL
JNI也能順利呼叫嗎?
有人知道嗎?
MFC是編譯Microsoft系統的編譯器所連結相關的lib都是MS系統,應該是無法編輯成*.so檔案,如果您單純在Windows(PC)環境下執行Java的JNI是可以呼叫DLL檔案,但android是基於Linux系統如果使用在Android或Linux系統應該是不認識DLL的。
回覆刪除所以一般來說Java是可以跨平台使用,但是如果是呼叫了JNI的話,JNI屬於C,C語言如果要跨平台就必須重新編譯,因此JAVA+JNI會失去跨平台的優勢。
感謝版主大大
回覆刪除我懂了不少
不好意思再問個基本的問題
回覆刪除如果是直接修改hello-JNI的Code
例如
Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,
jobject thiz )
{
system("./test1");
return (*env)->NewStringUTF(env, "Hello from JNI !");
}
system呼叫的linux檔案,是否有成功? 我不得而知
因為他都直接跑出字串"Hello from JNI"
把return那一整行註解掉,在模擬器上按下執行程式後一下子,他就返回了,什麼都沒出現。如果是想呼叫其他linux檔案,這個方式正確嗎?
謝謝版主~~非常好的教學文件
回覆刪除作者已經移除這則留言。
回覆刪除http://www.java-tips.org/other-api-tips/jni/simple-example-of-using-the-java-native-interface.html
回覆刪除我依照上列網站的教學
做到"javah -jni X:\....."之後
出現了'javadoc: error - Illegal package name: "X:\...."'的問題
想請教這該如何解決
上述問題已解決
回覆刪除Hi,
回覆刪除我的C:\cygwin\home\ 底下沒有任何檔案及目錄,.bash_profile會放在哪裡呢?
Eric
你好,我使用eclipse 3.4.2版本,在進行安裝CDT C/C++ Development Tool時總會跳出
回覆刪除Cannot complete the request. See the details.
Unsatisfied dependency: [org.eclipse.cdt.gnu.debug.feature.group 6.0.0.201002161416]
requiredCapability: org.eclipse.equinox.p2.iu/org.eclipse.core.variables/3.2.200
...
等等的訊息,請問這該如何解決呢?
To:Random Dude
回覆刪除抱歉,由於3.4.x版我當時尚未入門,我所使用的環境都是3.5.2版本的Eclipse,所以您的錯誤訊息"有可能"是版本上的問題,這部分我實在也不知該如何解決。Sorry!Sorry!
To:ameba
回覆刪除在Linux系統下,檔案前面有一點的話系統會自動隱藏,用ls -a就會看到。
To:Random Dude
回覆刪除更新,剛查了一下,您可以試試看改URL位置 : http://download.eclipse.org/tools/cdt/releases/galileo
將galileov改成你所使用的Eclipse版本名稱試試看。
寫一個JAVA寫檔就可以解決\r的問題了...附上程式碼
回覆刪除File f = new File("C:\\cygwing\\home\\mouse21\\.bash_profile");
try {
f.createNewFile();
FileOutputStream fout= new FileOutputStream(f);
String s = "if [ -f \"${HOME}/.bashrc\" ] ; then \n source \"${HOME}/.bashrc\" \nfi\n"
+"PATH=/android-ndk-r5c:${PATH}\n"
+"NDK_ROOT=/android-ndk-r5c\n"
+"NDK_Sample=/android-ndk-r5c/samples\n"
+"export PATH NDK_ROOT NDK_Sample";
fout.write(s.getBytes());
fout.flush();
fout.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
作者已經移除這則留言。
回覆刪除關於
回覆刪除bash: $'\r': command not found
bash: $'\r': command not found
bash: $'\r': command not found
bash: $'\r': command not found
bash: $'\r': command not found
bash: /home/0291/.bash_profile: line 46: syntax error: unexpected end of file
這問題
我的解決方法是 把home資料夾砍掉
再開一次cygwin 他就會從新創一個home資料夾 裡面的檔案也會重新建
然後用notepad ++ 編輯
就可以用了
受益良多,謝謝!
回覆刪除謝謝分享教學!!!
回覆刪除另外想請問一個問題
因為我要引用其它的library在我的project中
但是在ndk-build時, 並沒有出現任何 *.so
這樣是正常的嗎??
有甚麼方法可以知道我的library已經可以在project中使用了呢?
您指的"其它的library"是...C原始碼還是.so檔案呢?
回覆刪除如果是.so檔案的話可以直接放到專案中libs/armeabi目錄,這部分可以不用執行ndk-build,您可以試試看。
蚊子您好^^ 謝謝您回覆。
回覆刪除我的labrary 是C原始碼耶。
如果這這樣的情況,那麼我該如何操作呢?
不能執行ndk-build的問題可參考
回覆刪除http://blog.yam.com/pigfly/article/33732076
您好 我在執行畫面時 他出現了
回覆刪除unfortunately, Hellojni has stopped
請問這問題怎麼解決呢
unfortunately, Hellojni has stopped
回覆刪除我沒有遇過,不過網路搜尋了一下,可能要先確認libs/armeabi下有沒有lib開頭副檔名so檔案。
http://stackoverflow.com/questions/5406759/cant-run-android-ndk-app-on-device
libs/armeabi有libhellojni.so 的副檔名
回覆刪除所以我想應該是沒問題的
不曉得為何 會出現這情況
我也是第一次碰到@@~~
已經到最後一步了 竟然還會碰上bug= =
謝謝你耶 我已經解決了
回覆刪除原因是我的jni/hellojni.c檔裡
Java_com_android_geek_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz )
跟我的package裡的
package com.demo.geek;
public class HelloJni extends Activity {
//code
}
demo跟android 不同 才造成這樣的錯誤
導致執行模擬會出現unfortunately, Hellojni has stopped
至於我是利用 LogCat 找出錯誤的
顯示的訊息為 僅列幾個 我自己看得懂 且 應該比重要的= =
No JNI_OnLoad found in /data/data/com.demo.geek/lib/libhellojni.so 0x41359960, skipping init
No implementation found for native Lcom/demo/geek/HelloJni;.stringFromJNI ()Ljava/lang/String;
java.lang.UnsatisfiedLinkError: stringFromJNI
C:\cygwin\android-ndk-r7\prebuilt\windows\bin\awk.exe: can't open file /android-ndk-r7/build/awk/check-awk.awk
回覆刪除source line number 1 source file /android-ndk-r7/build/awk/check-awk.awk
context is
>>> <<<
Android NDK: Host 'awk' tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !
/android-ndk-r7/build/core/init.mk:258: *** Android NDK: Aborting. . Stop.
我在執行ndk-build時會出現這個問題
請問有大大知道如何解決嗎?
從您的錯誤訊息看來應該是awk的套件沒有安裝到,您可以先試試看在Cygwin中執行awk看看是否有訊息出現。
回覆刪除$ awk
回覆刪除Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options: GNU long options: (standard)
-f progfile --file=progfile
-F fs --field-separator=fs
-v var=val --assign=var=val
Short options: GNU long options: (extensions)
-b --characters-as-bytes
-c --traditional
-C --copyright
-d[file] --dump-variables[=file]
-e 'program-text' --source='program-text'
-E file --exec=file
-g --gen-pot
-h --help
-L [fatal] --lint[=fatal]
-n --non-de.....................................................
AWK有訊息
但是仍然會有跟Yang一樣的錯誤
將awk的檔名改成awk_就可以了,我剛剛就這樣成功了!
回覆刪除底下是參考連結:
http://stackoverflow.com/questions/8116113/problems-with-android-ndk-7-and-awk/8121153#8121153
PATH=/android-ndk-r7:${PATH}
回覆刪除NDK_ROOT=/android-ndk-r7
NDK_Sample=/android-ndk-r7/samples
export PATH NDK_ROOT NDK_Sample
你好,我已將設定按照您上述所說,但不知道還是一樣ndk-build找不到
不能編譯,請問哪邊出問題???
想請問一下 為何我去編輯我的hello-jni的時候會出現以下錯誤呢
回覆刪除謝謝
$ ndk-build
C:\cygwin\android-ndk-r7\prebuilt\windows\bin\awk.exe: can't open file /android-ndk-r7/build/awk/check-awk.awk
source line number 1 source file /android-ndk-r7/build/awk/check-awk.awk
context is
>>> <<<
Android NDK: Host 'awk' tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !
/android-ndk-r7/build/core/init.mk:258: *** Android NDK: Aborting. . Stop.
謝謝以解決了
回覆刪除幫助很大!謝謝了 :)
回覆刪除很詳細的介紹~謝謝~
回覆刪除你好
回覆刪除為何看一些書上說
需要先做靜態註冊或是動態註冊
才能跟stringFromJni函式做聯結呢
好像沒看到這篇文章有提到這件事
我一直卡在
java.lang.UnsatisfiedLinkError: stringFromJNI
這個error上面
各位好,我安裝Android-ndk-r8e-Windows-64
回覆刪除設定變數:
PATH=/android-ndk-r8e:${PATH}
NDK_ROOT=/android-ndk-r8e
NDK_Sample=/android-ndk-r8e/samples
export PATH NDK_ROOT NDK_Sample
執行Cygwin一開始出現:
-bash: $'\r':命令找不到
-bash: $'\r':命令找不到
-bash: $'\r':命令找不到
-bash: $'\r':命令找不到
然後出現
-bash: /home/HUI/.bash_profile: line 49: syntax error: unexpected end of file
請問要怎麼解決??
麻煩各位了