在 Gluon JavaFXPorts 项目中使用 Android aar 库
Using an Android aar library in a Gluon JavaFXPorts project
我的问题很简单。我正在使用 Gluon 的 Eclipse 插件,并在 Android 上用 JavaFX 开发应用程序 运行。但是,我需要使用 Android 库(.aar 格式),但经过一段时间的尝试,还是不行。有人知道我该怎么做吗?我已经尝试过只使用 .aar 中的 classes.jar,虽然这有点奏效,但我认为库缺少一些对其功能至关重要的资源和东西。谢谢。
编辑:我尝试使用的库是 CloudRail, the download is here (Direct download)
目前,使用提取的 classes.jar 中的 类 它有些功能,但是当他们的库中的 activity 启动时(com.cloudrail.si.servicecode.commands.awaitCodeRedirect.AuthenticationActivity)它显示但是它是空白的并且有什么都没有。我目前假设这是不正确的,缺失的 resources/files 是造成这种情况的原因。
我已经设法从 aar 文件中提取 classes.jar
并将其作为依赖项添加到 Gluon 项目中。
接下来,我将 activity 添加到 AndroidManifest.xml
文件中,在主要 FXActivity
:
之后
<activity android:name="com.cloudrail.si.servicecode.commands.awaitCodeRedirect.AuthenticationActivity" />
然后我在 Android 包中创建了一个 class,提供了访问 Google Drive 所需的凭据。
public AndroidTestAar() {
GoogleDrive cs = new GoogleDrive(FXActivity.getInstance(), "****","****");
new Thread() {
@Override
public void run() {
List<CloudMetaData> metas = cs.getChildren("/");
Log.i("info", "Folder has " + metas.size() + " children");
for (CloudMetaData meta : metas) {
Log.i("info", "Child: " + meta.getName());
}
}
}.start();
}
此 class 从视图中调用:
public BasicView(String name) {
...
button.setOnAction(e -> {
try {
Class c = Class.forName("com.testaar.AndroidTestAar");
c.newInstance();
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException ex) {}
});
}
我可以部署 apk 并 运行 它。
activity 运行 在 JavaFX 应用之外,在 Android WebView 中。
首先它要求我使用我的 user/password 登录,然后它询问我是否允许离线访问,最后它在控制台上成功列出了我的所有文件。
我的问题很简单。我正在使用 Gluon 的 Eclipse 插件,并在 Android 上用 JavaFX 开发应用程序 运行。但是,我需要使用 Android 库(.aar 格式),但经过一段时间的尝试,还是不行。有人知道我该怎么做吗?我已经尝试过只使用 .aar 中的 classes.jar,虽然这有点奏效,但我认为库缺少一些对其功能至关重要的资源和东西。谢谢。
编辑:我尝试使用的库是 CloudRail, the download is here (Direct download) 目前,使用提取的 classes.jar 中的 类 它有些功能,但是当他们的库中的 activity 启动时(com.cloudrail.si.servicecode.commands.awaitCodeRedirect.AuthenticationActivity)它显示但是它是空白的并且有什么都没有。我目前假设这是不正确的,缺失的 resources/files 是造成这种情况的原因。
我已经设法从 aar 文件中提取 classes.jar
并将其作为依赖项添加到 Gluon 项目中。
接下来,我将 activity 添加到 AndroidManifest.xml
文件中,在主要 FXActivity
:
<activity android:name="com.cloudrail.si.servicecode.commands.awaitCodeRedirect.AuthenticationActivity" />
然后我在 Android 包中创建了一个 class,提供了访问 Google Drive 所需的凭据。
public AndroidTestAar() {
GoogleDrive cs = new GoogleDrive(FXActivity.getInstance(), "****","****");
new Thread() {
@Override
public void run() {
List<CloudMetaData> metas = cs.getChildren("/");
Log.i("info", "Folder has " + metas.size() + " children");
for (CloudMetaData meta : metas) {
Log.i("info", "Child: " + meta.getName());
}
}
}.start();
}
此 class 从视图中调用:
public BasicView(String name) {
...
button.setOnAction(e -> {
try {
Class c = Class.forName("com.testaar.AndroidTestAar");
c.newInstance();
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException ex) {}
});
}
我可以部署 apk 并 运行 它。
activity 运行 在 JavaFX 应用之外,在 Android WebView 中。
首先它要求我使用我的 user/password 登录,然后它询问我是否允许离线访问,最后它在控制台上成功列出了我的所有文件。