我正在寻找为Java库创建一个Nativescript包装器,以便我可以将它的功能用于Nativescript应用程序 . 似乎没有太多的文章详细介绍,并且似乎没有一个明确的方法在Nativescript应用程序本身内执行此操作,这就是为什么我现在将其作为插件包装器 .
我正在努力包含的特定Java库是Libsignal-protocol-java . 我已经继续克隆Nativescript Plugin Seed并将此Java库添加为依赖项:
src/platforms/android/include.gradle
android {
}
dependencies {
compile 'org.whispersystems:signal-protocol-android:2.3.0+'
}
然后我找到了包含我在Java源代码中尝试访问的方法的特定包: KeyHelper.generateRegistrationId();
source . 有一篇文章提到这是必需的,因为在实例化类和方法时你必须指定包 .
然后我按如下方式设置我的 libsignal-protocol.common.ts
以尝试并使用本机方法:
src/libsignal-protocol.common.ts
import { Observable } from 'tns-core-modules/data/observable';
export class Common extends Observable {
constructor() {
// does not work
let test1 = new org.whispersystems.libsignal.util.KeyHelper.generateRegistrationId();
// does not work
let test2 = org.whispersystems.libsignal.util.KeyHelper.generateRegistrationId();
console.log(test1);
console.log(test2);
}
}
令我沮丧的是, Logger 返回了这个错误:
System.err: Error: java.lang.Exception: Failed resolving method generateRegistrationId on class org.whispersystems.libsignal.util.KeyHelper
我不知道现在还要去哪里,我想走这条路,因为为这个令人敬畏的Java库创建一个包装器似乎更安全/更清洁,而不是尝试浏览他们的javascript库,因为它需要Nativescript中没有的某些功能 .
任何帮助或建议将不胜感激!为了理智,我将在这个问题上加入一些文章,这些文章帮助我了解了我现在所处的位置 .
Sources
1 回答
正如您在源代码中看到的那样generateRegistrationId方法需要一个布尔参数 .
所以你必须将布尔值传递给方法,