java - 在 Windows 上为 android 构建 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 位捆绑包的支持,因此向前推进的最简单方法是删除测试(除非出于某种原因你有 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
)
推荐阅读
- c++ - 引用变量的声明需要一个初始化器
- javascript - 在对象数组中搜索元素
- amazon-web-services - FFMPEG 上传输出到 S3
- python - 我可以将熊猫数据框输入“TfidfVectorizer”吗?如果是这样,我如何找出我的数据框中有多少文档?
- c# - RegisterInstance 方法和 InstancePerDependency 生命周期范围不一致
- python - 检测 Pandas 数据框所有列的异常值
- swift - 尝试更新 cocoapods 时出现权限错误
- c - 使用 C 中的运算符从无符号整数中获取 6 个最高有效位的最佳方法?
- go - 使用兼容接口进行恐慌接口转换
- node.js - 尝试从位置 17 的日期时间读取日期时间抛出错误