2013-06-03 100 views
1

我現在想我端口的1.x的cocos2d項目的一個使用Apportable,混得編譯階段以下錯誤:Apportable從項目的cocos2d錯誤移植

 apk = env.BuildAPK(os.path.join(env['VARIANT_DIR'], env['APPLICATION_NAME'], config['APPLICATION_NAME'] + '.apk'), lib, assets + env['LIBRARY_ASSETS']) 
    File "/Users/*user*/.apportable/SDK/lib/scons/engine/SCons/Environment.py", line 223, in __call__ 
    return self.method(*nargs, **kwargs) 
    File "/Users/*user*/.apportable/SDK/site_scons/android/sdk.py", line 1123, in APKBuilder 
    packaged = ResourcesFinalize(env, target=res_apk_path, source=source, assets=assets) 
    File "/Users/*user*/.apportable/SDK/site_scons/android/sdk.py", line 922, in ResourcesFinalize 
    all_assets = RemapAssetList(env, assets) 
    File "/Users/*user*/.apportable/SDK/site_scons/android/sdk.py", line 847, in RemapAssetList 
    (remap, target) = Remap(env, asset, target) 
    File "/Users/*user*/.apportable/SDK/site_scons/android/sdk.py", line 723, in Remap 
    (base, ext) = os.path.splitext(str(source)) 
UnicodeEncodeError: 'ascii' codec can't encode character u'\u0421' in position 58: ordinal not in range(128) 

它是SDK的問題還是我的源代碼有解決方案來解決它?

+0

只是一個猜測,您的項目名稱或路徑是否有任何非ASCII字符? – LearnCocos2D

回答

1

正如LearnCocos2D猜測的那樣,Apportable目前不處理具有非ASCII名稱的資源文件。

如果你想離開IOS項目不變,您可以複製或資源文件鏈接到一個ASCII名稱並相應更新configuration.json:

例如,在remove_params部分:

 "assets": [ 
       "Resources/Audio/@#$%\u2122!.wav", 
       ..... 

而在add_params部分:

 "assets": [ 
       "apportable/Resources/sonOfA.wav", // link to Resources/Audio/@#$%\u2122!.wav" 

而且,我們現在更新Apportable平臺,以正確處理非ASCII字符,所以如果你是在未來一兩個多星期閱讀這個問題,這個問題將是沒有意義的。

+0

有沒有辦法檢測到哪個文件是錯誤的,大約有500個文件可能錯誤地插入了非ASCII符號。如果正確理解,它應該是C字母代表的文件名之一。 – EnergYzer

+0

好吧,似乎找到了找出非ASCII文件名的方法,在MAC上通過終端瀏覽資源文件夾並執行命令: ls | perl -ne'打印如果/ [^ [:ascii:]] /' – EnergYzer

+0

很好找到如何追蹤非ASCII文件名。另一種選擇是看看python調試器。請參閱http://stackoverflow.com/questions/1623039/python-debugging-tips –