我有一台搭载 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;
},