Ошибка в создании Iotivity для Android на Windows - PullRequest
1 голос
/ 21 ноября 2019

Может кто-нибудь помочь мне с этой ошибкой, я не могу определить проблему. Я также новичок в использовании Scons. Мне нужно пройти через это, чтобы получить файлы .aar и .apk. Я использую Iotivity для проекта, который позволяет пользователям обмениваться изображениями передачи между устройствами на любой платформе без интернета.

Командная строка:

   C:\Users\derrick\Desktop\iotivity-2.0.1.1\iotivity-2.0.1.1>scons TARGET_OS=android
    scons: Reading SConscript files ...
    Processing using SCons version 3.1.1
    Python 2.7.17 (v2.7.17:c2f86d86e6, Oct 19 2019, 21:01:17) [MSC v.1500 64 bit (AMD64)] on win32
    NameError: name 'host_arch' is not defined:
      File "C:\Users\derrick\Desktop\iotivity-2.0.1.1\iotivity-2.0.1.1\SConstruct", line 32:
        SConscript('build_common/SConscript')
      File "c:\python27\lib\site-packages\scons\SCons\Script\SConscript.py", line 668:
        return method(*args, **kw)
      File "c:\python27\lib\site-packages\scons\SCons\Script\SConscript.py", line 605:
        return _SConscript(self.fs, *files, **subst_kw)
      File "c:\python27\lib\site-packages\scons\SCons\Script\SConscript.py", line 286:
        exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
      File "C:\Users\derrick\Desktop\iotivity-2.0.1.1\iotivity-2.0.1.1\build_common\SConscript", line 1025:
        env.SConscript(target_os + '/SConscript')
      File "c:\python27\lib\site-packages\scons\SCons\Script\SConscript.py", line 605:
        return _SConscript(self.fs, *files, **subst_kw)
      File "c:\python27\lib\site-packages\scons\SCons\Script\SConscript.py", line 286:
        exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
      File "C:\Users\derrick\Desktop\iotivity-2.0.1.1\iotivity-2.0.1.1\build_common\android\SConscript", line 19:
        SConscript('#/extlibs/android/ndk/SConscript')
      File "c:\python27\lib\site-packages\scons\SCons\Script\SConscript.py", line 668:
        return method(*args, **kw)
      File "c:\python27\lib\site-packages\scons\SCons\Script\SConscript.py", line 605:
        return _SConscript(self.fs, *files, **subst_kw)
      File "c:\python27\lib\site-packages\scons\SCons\Script\SConscript.py", line 286:
        exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
      File "C:\Users\derrick\Desktop\iotivity-2.0.1.1\iotivity-2.0.1.1\extlibs\android\ndk\SConscript", line 24:
        if host_arch in ['x86_64']:

1 Ответ

0 голосов
/ 23 ноября 2019

Это сломано. Я думаю, что именно я сломал его, когда несколько лет назад я пытался очистить эту часть сборки. Система CI проекта iotivity не создает двоичные файлы Android на хосте Windows, для этого используется Linux-компоновщик, и я полагаю, что ни один из разработчиков не сделал этого, поэтому ничто не обнаружило проблему, которая, как говорится в сообщении об ошибке, заключается в том, что host_arch не определено,Это не принципиально для iotivity, это просто работа над зависимостями для настройки Android NDK;как только вы его настроите, этот материал пропускается для последующих сборок. Предыдущая версия включала target_arch, что было неверно - комплект для получения зависит от хоста, а не от того, для чего вы собираете. Я думаю, что проект Android прекратил поддерживать 32-битные пакеты некоторое время назад, так что самый простой способ двигаться дальше - это удалить тест (если по какой-то причине у вас нет 32-битной Windows). То есть измените этот чанк, начиная со строки 23:

else:
    if host_arch in ['x86_64']:
        ndk_url = ndk_url_base + '-windows-x86_64.exe'
    else:
        ndk_url = ndk_url_base + '-windows-x86.exe'
    ndk_bundle = 'android-ndk-' + NDK_VER + '.exe'

, до более простой формы:

else:
    ndk_url = ndk_url_base + '-windows-x86_64.exe'
    ndk_bundle = 'android-ndk-' + NDK_VER + '.exe'

(если неясно, это означало редактирование файла в последнемлиния трассировки, C:\Users\derrick\Desktop\iotivity-2.0.1.1\iotivity-2.0.1.1\extlibs\android\ndk\SConscript)

...