java - 在 Windows 上为 android 构建 iotivity 时出错

标签 java python android scons iotivity

谁能帮我解决这个错误,我似乎无法确定问题所在。我也是使用 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']:

最佳答案

坏了。我想我是几年前试图清理构建的那部分时破坏它的人。 iotivity 项目 CI 系统不在 Windows 主机上构建 android 二进制文件,它使用 linux 构建器,我猜没有开发人员这样做,所以没有检测到问题,正如错误消息所说,是 host_arch 未定义。这不是 iotivity 的基础,它只是设置 Android NDK 的依赖性工作;一旦你设置好了,后续构建就会跳过这些东西。以前的版本打开了 target_arch,这是不正确的 - 要获取的包取决于主机,而不是你正在构建的内容。我认为 Android 项目已经停止支持 32 位 bundle ,所以最简单的前进方式是删除测试(除非出于某种原因你有 32 位 Windows)。也就是说,从第 23 行开始更改此 block :

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)

关于java - 在 Windows 上为 android 构建 iotivity 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58966996/

相关文章:

android - Visual Studio 2015 Cordova 错误 : Could not locate a deployable apk

java - 条件依赖

android - 如何使用 RecyclerView 创建此布局?

java - 简单独立应用程序的序列化与嵌入式数据库

java - Spark-线程 java.lang.NoSuchMethodError 中的异常

javascript - 如何通过pyqt获取html页面的最终结果?

python - cProfile 和 profile 的区别——为什么没有 profile.Profile.enable() 方法?

java - 尝试使用 joda-time/java 解析/格式化带有时区的日期

java - 现在从数据库获取行时结果集的值

python - Raspberry 上 Python 中的错误文件描述符错误(错误 9)