我写了一个使用com.gluonhq.charm.down.common.ScanService
的小样本。它在真正的iOS设备上按预期工作,如果我在src / ios / jniLibs中手动包含本机库libCharm.a。这在他们的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.**.*'
]
}
}
我尝试将iosRuntime依赖项添加到最新版本的charm-down-ios中,但这似乎没有任何效果。所以,问题是:有没有办法自动获得与我指定的依赖项匹配的libCharm.a,或者是手动方式(再次,确实有效)唯一可能的方法?非常感谢你提前。
答案 0 :(得分:2)
截至目前,插件中没有自动工具可以管理正确安装本机库,从charm-down-ios.jar中提取它并将其移动到jniLibs
库中该项目。但它应该可以在插件的未来版本中使用。
现在,您必须手动执行此操作,如您所述,从位于本地.m2存储库中的libCharm.a
中提取charm-ios-3.0.0.jar
文件,并将其复制到您的项目中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
中包含的任何其他第三方本机库。