[Android篇]使用build_native.sh時,遇到Invalid attribute name:package的問題。

文章撰寫日期︰2013/12/19 10:28
cocos2d-x使用版本︰2.1.3
NDK使用版本︰r8e

一、問題

今天在試著NDK編譯別人的案子時,
遇到

Invalid attribute name: 
    package
make: Entering directory `/Users/lp43/cocos2d-x2.1.3/workspace/38_CanShot/Source/proj.android'
/Users/lp43/Android/adt-bundle-mac/android-ndk-r8e/build/gmsl/__gmsl:512: *** non-numeric second argument to `wordlist' function: ''.  Stop.

的問題。

二、解決辦法

上網爬文後,
網友們說問題是來自於AndroidManifest.xml檔的問題。
原本這個檔是在windows上編輯,
但現在我要在mac的環境中編譯,
因此把windows上獨有的\r\n也編譯進來,
造成NDK無法在mac上順利編譯

解決辦法有3種︰

1.使用vim工具將AndroidMenifest.xml的filetype設成unix。

用 vim 打開 AndroidManifest.xml,在命令模式下输入"set filetype=unix",保存退出即可。

2.直接更改NDK裡__gmsl檔的512行(路徑在/android-ndk-r8e/build/gmsl/__gmsl)

將原本512的
int_encode = $(__gmsl_tr1)$(wordlist 1,$1,$(__gmsl_input_int))
改成
int_encode = $(__gmsl_tr1)$(wordlist 1,$(words $1),$(__gmsl_input_int))
也可以。

3.使用指令一鍵更改AndroidManifest.xml的編碼格式

如果你跟我一樣是使用mac,
可以安裝一套軟體叫dos2Unix
然後在terminal裡Android專案目錄打上
$dos2unix AndroidManifest.xml

也可以解決問題。

我選擇第2、3種解決方案。

參考來源

1. mingming-killer
2. stackoverflow
3. Google Group

沒有留言 :

張貼留言