Firefox OS 模拟器无法在 WinXP 上检测到我的设备

Firefox OS 模拟器无法在 WinXP 上检测到我的设备

我有一台搭载 Firefox OS 的 ZTE Open 设备。

我跟着本指南向其推送应用程序,但 Firefox OS 模拟器无法在 Windows XP 上检测到它。

如果我运行adb devices它列出roamer2 device

我在 Kubuntu(同一台计算机)和 Windows Vista(不同的计算机)上尝试过,它确实有效。

我怎样才能让它在 Windows XP 上运行?

版本

  • 移动操作系统:Firefox OS 1.1(OPEN_FFOS_V1.1.0B01_TME)
  • 电脑操作系统:Windows XP SP3
  • Firefox 浏览器:25.0.1
  • Firefox OS 模拟器:4.0.1

答案1

我发现问题在于Windows XP Home Edition没有tasklist.exe

此主题来自 answers.microsoft.com给出解决方案:

Windows XP Home 不包含 Tasklist.exe 实用程序,我不明白为什么 Microsoft 将此实用程序从家庭版中排除,但您可以在此处下载它的副本: http://www.computerhope.com/download/winxp.htm 将该实用程序放入您的Windows\System32文件夹中。

答案2

如果您不想在system32文件夹中添加任何额外内容,这里有另一种解决方案。

在中,将函数(第 235 行)替换为以下函数:[FF Profile]\extensions\[email protected]\resources\r2d2b2g\lib\adb.js_isAdbRunning

  _isAdbRunning: function() {
    let deferred = Promise.defer();

    let ps, args;
    let platform = Services.appinfo.OS;
    if (platform === "WINNT") {
      ps = "C:\\windows\\system32\\tasklist.exe";
      args = [];
    } else {
      args = ["aux"];
      let psCommand = "ps";

      let paths = env.PATH.split(':');
      let len = paths.length;
      for (let i = 0; i < len; i++) {
        let fullyQualified = file.join(paths[i], psCommand);
        if (file.exists(fullyQualified)) {
          ps = fullyQualified;
          break;
        }
      }
    }

    if (ps) try {

      let buffer = [];

      subprocess.call({
        command: ps,
        arguments: args,
        stdout: function(data) {
          buffer.push(data);
        },
        done: function() {
          let lines = buffer.join('').split('\n');
          let regex = (platform === "WINNT") ? psRegexWin : psRegexNix;
          let isAdbRunning = lines.some(function(line) {
            return regex.test(line);
          });
          deferred.resolve(isAdbRunning);
        }
      });

      return deferred.promise;

    }catch(err){
      if(err.name !== "NS_ERROR_FILE_NOT_FOUND") throw err;
    }

    debug("Error: a task list executable not found on filesystem");
    deferred.resolve(false); // default to restart adb
    return deferred.promise;

  },

相关内容