Переносимый перенос из ошибки проекта Cocos2d
Сейчас я пытаюсь портировать один из моих проектов Cocos2d 1.x с помощью Apportable, получая следующую ошибку на этапе компиляции:
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 или мой исходный код есть решение, чтобы это исправить?
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, поэтому, если вы будете читать это больше недели или двух в будущем, вопрос будет спорным.