Gluon Mobile 项目可以自动下载并包含 libCharm.a 吗?
Can a Gluon Mobile project automatically download and include libCharm.a?
我写了一个使用 com.gluonhq.charm.down.common.ScanService
的小示例。它在真正的 iOS 设备上按预期工作, 如果 我手动将本机库 libCharm.a 包含在 src/ios/jniLibs 中。这在他们的 GoNative 应用程序的 Gluon 文档中进行了解释。如果我没记错的话,这个库是在 Charm Down IOS.
的 build.gradle 文件中构建的
这是我的样本 build.gradle。正如我所说,如果我手动将 libCharm.a 复制到 src/ios/jniLibs.
,这将导致一个完整的应用程序
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.javafxports:jfxmobile-plugin:1.0.8'
}
}
apply plugin: 'org.javafxports.jfxmobile'
repositories {
jcenter()
maven {
url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
}
}
mainClassName = 'com.thomaskuenneth.scanservicedemo.ScanserviceDemo'
dependencies {
compile 'com.gluonhq:charm:3.0.0'
androidRuntime 'com.gluonhq:charm-android:3.0.0'
androidRuntime 'com.google.zxing:core:3.2.1'
iosRuntime 'com.gluonhq:charm-ios:3.0.0'
desktopRuntime 'com.gluonhq:charm-desktop:3.0.0'
}
jfxmobile {
apply plugin: 'idea'
idea.module.downloadJavadoc = true
android {
manifest = 'src/android/AndroidManifest.xml'
androidSdk = '/Users/thomas/Library/Android/sdk'
compileSdkVersion = 23
}
ios {
infoPList = file('src/ios/Default-Info.plist')
forceLinkClasses = [
'com.google.zxing.**.*',
'com.gluonhq.**.*',
'io.datafx.**.*',
'javax.annotations.**.*',
'javax.inject.**.*',
'javax.json.**.*',
'org.glassfish.json.**.*'
]
}
}
我尝试在最新版本的charm-down-ios中添加ios运行时依赖,但似乎没有效果。所以,问题是:有没有一种方法可以自动获得与我指定的依赖项相匹配的 libCharm.a ,或者手动方式(同样有效)是唯一可能的方式吗?非常感谢您。
到目前为止,插件中没有自动工具来管理本机库的正确安装,将其从 charm-down-ios.jar 中提取并将其移动到 jniLibs
项目库。但它应该会在未来版本的插件中可用。
目前,您必须手动执行此操作,正如您提到的,从将位于您本地 .m2 存储库中的 charm-ios-3.0.0.jar
中提取 libCharm.a
文件,并将其复制到您的src/ios/jniLibs
.
下的项目
我想出了这个任务来帮助你完成它:
task extractNativeLib(type: Sync) {
def iosNativeDir = project.file(project.jfxmobile.ios.nativeDirectory)
if (!iosNativeDir.exists()) {
iosNativeDir.mkdirs()
}
setIncludeEmptyDirs(false)
from {
configurations.iosRuntime.collect { zipTree(it).matching { include 'native/**' } }
}
into iosNativeDir
eachFile {details -> details.path = details.name }
}
运行 在调用 launchIOSDevice
之前执行此任务,它将提取库并将其复制到您的本机文件夹中。
编辑
自 javafxmobile 插件 1.1.0 发布(2016 年 10 月)以来,无需使用此任务,因为插件会管理它。
对于项目中包含的 Charm Down 3.0.0+ 插件,它们的本机库将自动添加到构建中,以及 src/ios/jniLibs
中包含的任何其他第三方本机库。
我写了一个使用 com.gluonhq.charm.down.common.ScanService
的小示例。它在真正的 iOS 设备上按预期工作, 如果 我手动将本机库 libCharm.a 包含在 src/ios/jniLibs 中。这在他们的 GoNative 应用程序的 Gluon 文档中进行了解释。如果我没记错的话,这个库是在 Charm Down IOS.
这是我的样本 build.gradle。正如我所说,如果我手动将 libCharm.a 复制到 src/ios/jniLibs.
,这将导致一个完整的应用程序buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.javafxports:jfxmobile-plugin:1.0.8'
}
}
apply plugin: 'org.javafxports.jfxmobile'
repositories {
jcenter()
maven {
url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
}
}
mainClassName = 'com.thomaskuenneth.scanservicedemo.ScanserviceDemo'
dependencies {
compile 'com.gluonhq:charm:3.0.0'
androidRuntime 'com.gluonhq:charm-android:3.0.0'
androidRuntime 'com.google.zxing:core:3.2.1'
iosRuntime 'com.gluonhq:charm-ios:3.0.0'
desktopRuntime 'com.gluonhq:charm-desktop:3.0.0'
}
jfxmobile {
apply plugin: 'idea'
idea.module.downloadJavadoc = true
android {
manifest = 'src/android/AndroidManifest.xml'
androidSdk = '/Users/thomas/Library/Android/sdk'
compileSdkVersion = 23
}
ios {
infoPList = file('src/ios/Default-Info.plist')
forceLinkClasses = [
'com.google.zxing.**.*',
'com.gluonhq.**.*',
'io.datafx.**.*',
'javax.annotations.**.*',
'javax.inject.**.*',
'javax.json.**.*',
'org.glassfish.json.**.*'
]
}
}
我尝试在最新版本的charm-down-ios中添加ios运行时依赖,但似乎没有效果。所以,问题是:有没有一种方法可以自动获得与我指定的依赖项相匹配的 libCharm.a ,或者手动方式(同样有效)是唯一可能的方式吗?非常感谢您。
到目前为止,插件中没有自动工具来管理本机库的正确安装,将其从 charm-down-ios.jar 中提取并将其移动到 jniLibs
项目库。但它应该会在未来版本的插件中可用。
目前,您必须手动执行此操作,正如您提到的,从将位于您本地 .m2 存储库中的 charm-ios-3.0.0.jar
中提取 libCharm.a
文件,并将其复制到您的src/ios/jniLibs
.
我想出了这个任务来帮助你完成它:
task extractNativeLib(type: Sync) {
def iosNativeDir = project.file(project.jfxmobile.ios.nativeDirectory)
if (!iosNativeDir.exists()) {
iosNativeDir.mkdirs()
}
setIncludeEmptyDirs(false)
from {
configurations.iosRuntime.collect { zipTree(it).matching { include 'native/**' } }
}
into iosNativeDir
eachFile {details -> details.path = details.name }
}
运行 在调用 launchIOSDevice
之前执行此任务,它将提取库并将其复制到您的本机文件夹中。
编辑
自 javafxmobile 插件 1.1.0 发布(2016 年 10 月)以来,无需使用此任务,因为插件会管理它。
对于项目中包含的 Charm Down 3.0.0+ 插件,它们的本机库将自动添加到构建中,以及 src/ios/jniLibs
中包含的任何其他第三方本机库。