1

我一直在直接在钛项目中尝试(我希望)简单的 Android 超级循环代码(使用 SDK 7.0.1.GA 和超级循环 3)。

var sysProp = require('android.os.SystemProperties');
var serialNumber = sysProp.get("sys.serialnumber", "none");

但是当应用程序运行时它会报告

Requested module not found:android.os.SystemProperties

我认为这可能是因为在编译应用程序(使用 cli)时它会报告

hyperloop:generateSources: Skipping Hyperloop wrapper generation, no usage found ...

我在 jar 中有类似的代码,如果我使用它,那么它确实可以工作,所以我想知道为什么没有触发超级循环的生成,因为我认为这是问题所在。

抱歉应该解释得更好。

这是我使用的jar 源,序列号的提取只是一个示例(我还需要访问其他信息制造商的特定数据),我想看看我是否可以仅使用超循环复制 JAR 功能,而不是包括JAR 文件。猜猜它是否没有损坏,请不要修复它,但很想知道它是否可以完成。

4

2 回答 2

2

因此,根据@miga 的反馈和一些反复试验,我提出了一个非常有效的解决方案,并且可以进行所需的方法反射。我的新 Hyperloop 功能是

function getData(data){

    var result = false;
    var Class = require("java.lang.Class");
    var String = require("java.lang.String");

    var c = Class.forName("android.os.SystemProperties");
    var get = c.getMethod("get", String.class, String.class);
    result = get.invoke(c, data, "Error");
    return result;

}

其中 data 是我想要的系统属性的字符串。

我正在使用它从三星设备中提取和匹配序列号,该设备是系统属性调用“ril.serialnumber”或“sys.serialnumber”。现在我可以使用上面的函数来完成我使用 JAR 文件的目的。只是想我会分享以防其他人需要类似的东西。

于 2017-12-24T13:32:40.510 回答
0

这是因为android.os.SystemProperties不是您可以导入的类。在https://developer.android.com/reference/android/os/package-summary.html查看 android 文档

你可以使用

var build = require('android.os.Build');
console.log(build.SERIAL);

访问序列号。

于 2017-12-23T14:10:17.027 回答