我正在使用node-webkit和ADBkit尝试从android build.prop读取一行,并根据该行的内容做一些事情。
的完整脚本它的主旨是:
var model = client.shell(devices, "su -c 'grep ro.product.model /system/build.prop'" );
alert(model)
我想将build.prop中的ro.product.model
读入变量model
作为测试我只是尝试创建一个显示此shell命令返回的alert
,在我的情况下ro.product.model=KFSOWI
,但每当我使用连接设备运行此脚本时,alert
都会返回{{ 1}}
编辑**
我刚刚意识到object Object
可能会更好,但不能很好地理解这些功能(特别是回调)
我是Javascripting这个领域的新手,家里有人可以提供一些见解
答案 0 :(得分:0)
JavaScript是异步编程语言,它建立在回调之上。每个函数都应该有回传并传递给它的数据,如果你在documentation上观看,你有client.shell(serial, command[, callback])
因此执行client.shell()
的数据将被传递给callback
。你应该指定一些将处理回调的函数,你的情况就是这个
client.shell(devices, "su -c 'grep ro.product.model /system/build.prop'", function(data) {
console.log(data);
});
P.S。 nodejs中没有alert
答案 1 :(得分:0)
根据文档,你可以在client.shell()回调的第二个参数中捕获输出:
client.shell(devices, "su -c 'grep ro.product.model /system/build.prop'", function(err, output) {
if (err) {
console.log(err);
}
console.log(output);
});
答案 2 :(得分:0)
async
/ await
以获得更清晰的代码。const data = await client.shell(devices, "su -c 'grep ro.product.model /system/build.prop'" );
console.log(data); // => "Samsung.TM395"
当然,仅当此代码在async
函数中时,此方法才有效。
对于使用adbkit进行流式处理的数据,您需要做更多的工作来读取整个流,然后输出结果,就像这样:
const stream = await adbClient.shell( config.udid, "ime list -s" ) // adb command to list possible input devices (e.g. keyboards, etc.).
const result = await adb.util.readAll( stream );
console.log( result.toString() ); // => com.sec.android.inputmethod/.SamsungKeypad