无法将 Gluon Mobile 编译为 iOS
Can't compile Gluon Mobile to iOS
最近在Orientation上定制了gluon charm down plugin作为问题,用新项目(在MacOS上)测试的时候是可以用的。但是当我将它集成到现有项目中时(原始开发环境 Window),尝试 ./gradlew --info createIpa
时出错,并显示以下错误
`
任务“:CashmagIDApp:createIpa”执行失败。
java.io.IOException: File is not an archive file: /Users/sovandara/.gradle/caches/modules-2/files-2.1/com.android.support/support-v4/26.1.0/444114b772e5eee3e66f9236ace4acc1964a33b8/support-v4-26.1.0.aar
`
我找不到与此问题相关的任何信息。请任何人帮助我或给我线索以找到问题的根本原因。
已编辑
build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.javafxports:jfxmobile-plugin:1.3.16'
}
}
apply plugin: 'org.javafxports.jfxmobile'
apply from: 'ios-build.gradle'
task xcodebuild {
doLast {
xcodebuildIOS("$project.buildDir","$project.projectDir", "CMOrientation")
}
}
task installNativeLib (type:Copy, dependsOn: xcodebuild) {
from("$project.buildDir/native")
into("src/ios/jniLibs")
include("*.a")
}
repositories {
jcenter()
maven {
url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
}
}
mainClassName = 'fr.cashmag.cashmagid.CashmagIdMain'
ext.GLUON_VERSION="5.0.2"
ext.CHARM_DOWN="3.8.6"
dependencies {
//gluon Version
compile "com.gluonhq:charm:$GLUON_VERSION"
//Gluon Charm-Down Version
compile "com.gluonhq:charm-down-plugin-device:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-browser:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-display:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-display-desktop:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-display-android:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-display-ios:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-orientation:$CHARM_DOWN"
//Zxing Library for Generate Barcode/QRCODE
compile 'com.google.zxing:core:3.3.3'
}
jfxmobile {
downConfig {
version = '3.8.6'
// Do not edit the line below. Use Gluon Mobile Settings in your project context menu instead
plugins 'display', 'lifecycle', 'statusbar', 'storage','device','browser','orientation'
}
android {
manifest = 'src/android/AndroidManifest.xml'
}
ios {
infoPList = file('src/ios/Default-Info.plist')
forceLinkClasses = [
'fr.cashmag.cashmagid.**.*',
'com.gluonhq.**.*',
'javax.annotations.**.*',
'javax.inject.**.*',
'javax.json.**.*',
'org.glassfish.json.**.*'
]
}
}
在发布的版本中,您有:
dependencies {
...
//Gluon Charm-Down Version
compile "com.gluonhq:charm-down-plugin-device:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-browser:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-display:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-display-desktop:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-display-android:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-display-ios:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-orientation:$CHARM_DOWN"
}
然后你还有:
jfxmobile {
downConfig {
version = '3.8.6'
plugins 'display', 'lifecycle', 'statusbar', 'storage','device','browser','orientation'
}
这意味着您要添加两倍的插件 device
、browser
和 display
,因为 jxmobile
插件将通过 downConfig
为您管理.这就是为什么 storage
等其他插件可以工作,而无需明确添加到 dependencies
.
无论如何,这应该不是问题。
但是,问题(在 运行 一个 iOS 任务时具有 Android 依赖关系)来自 display
依赖关系:
compile "com.gluonhq:charm-down-plugin-display-desktop:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-display-android:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-display-ios:$CHARM_DOWN"
如您所见,您将 display
服务的平台实现添加为 compile
依赖项,这意味着这些将可用于所有平台:Android 依赖项( Android SDK, support.aar, ...) 将在桌面上使用 iOS,这显然行不通。
如前所述,您实际上根本不需要包含它们,因此从 dependencies {}
中删除所有 Charm Down 引用将解决您的问题。
但是如果您仍然需要包含它们,比如您将包含来自不在 Charm Down 中的自定义服务的依赖项,您必须使用平台:
desktopCompile "com.gluonhq:charm-down-plugin-display-desktop:$CHARM_DOWN"
androidCompile "com.gluonhq:charm-down-plugin-display-android:$CHARM_DOWN"
iosCompile "com.gluonhq:charm-down-plugin-display-ios:$CHARM_DOWN"
现在,这些平台依赖项中的每一个都将仅适用于设计的平台。
如果您有兴趣,jxmobile
插件定义了 androidCompile
和其他 here。
最近在Orientation上定制了gluon charm down plugin作为问题./gradlew --info createIpa
时出错,并显示以下错误
` 任务“:CashmagIDApp:createIpa”执行失败。
java.io.IOException: File is not an archive file: /Users/sovandara/.gradle/caches/modules-2/files-2.1/com.android.support/support-v4/26.1.0/444114b772e5eee3e66f9236ace4acc1964a33b8/support-v4-26.1.0.aar `
我找不到与此问题相关的任何信息。请任何人帮助我或给我线索以找到问题的根本原因。
已编辑
build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.javafxports:jfxmobile-plugin:1.3.16'
}
}
apply plugin: 'org.javafxports.jfxmobile'
apply from: 'ios-build.gradle'
task xcodebuild {
doLast {
xcodebuildIOS("$project.buildDir","$project.projectDir", "CMOrientation")
}
}
task installNativeLib (type:Copy, dependsOn: xcodebuild) {
from("$project.buildDir/native")
into("src/ios/jniLibs")
include("*.a")
}
repositories {
jcenter()
maven {
url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
}
}
mainClassName = 'fr.cashmag.cashmagid.CashmagIdMain'
ext.GLUON_VERSION="5.0.2"
ext.CHARM_DOWN="3.8.6"
dependencies {
//gluon Version
compile "com.gluonhq:charm:$GLUON_VERSION"
//Gluon Charm-Down Version
compile "com.gluonhq:charm-down-plugin-device:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-browser:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-display:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-display-desktop:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-display-android:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-display-ios:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-orientation:$CHARM_DOWN"
//Zxing Library for Generate Barcode/QRCODE
compile 'com.google.zxing:core:3.3.3'
}
jfxmobile {
downConfig {
version = '3.8.6'
// Do not edit the line below. Use Gluon Mobile Settings in your project context menu instead
plugins 'display', 'lifecycle', 'statusbar', 'storage','device','browser','orientation'
}
android {
manifest = 'src/android/AndroidManifest.xml'
}
ios {
infoPList = file('src/ios/Default-Info.plist')
forceLinkClasses = [
'fr.cashmag.cashmagid.**.*',
'com.gluonhq.**.*',
'javax.annotations.**.*',
'javax.inject.**.*',
'javax.json.**.*',
'org.glassfish.json.**.*'
]
}
}
在发布的版本中,您有:
dependencies {
...
//Gluon Charm-Down Version
compile "com.gluonhq:charm-down-plugin-device:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-browser:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-display:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-display-desktop:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-display-android:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-display-ios:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-orientation:$CHARM_DOWN"
}
然后你还有:
jfxmobile {
downConfig {
version = '3.8.6'
plugins 'display', 'lifecycle', 'statusbar', 'storage','device','browser','orientation'
}
这意味着您要添加两倍的插件 device
、browser
和 display
,因为 jxmobile
插件将通过 downConfig
为您管理.这就是为什么 storage
等其他插件可以工作,而无需明确添加到 dependencies
.
无论如何,这应该不是问题。
但是,问题(在 运行 一个 iOS 任务时具有 Android 依赖关系)来自 display
依赖关系:
compile "com.gluonhq:charm-down-plugin-display-desktop:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-display-android:$CHARM_DOWN"
compile "com.gluonhq:charm-down-plugin-display-ios:$CHARM_DOWN"
如您所见,您将 display
服务的平台实现添加为 compile
依赖项,这意味着这些将可用于所有平台:Android 依赖项( Android SDK, support.aar, ...) 将在桌面上使用 iOS,这显然行不通。
如前所述,您实际上根本不需要包含它们,因此从 dependencies {}
中删除所有 Charm Down 引用将解决您的问题。
但是如果您仍然需要包含它们,比如您将包含来自不在 Charm Down 中的自定义服务的依赖项,您必须使用平台:
desktopCompile "com.gluonhq:charm-down-plugin-display-desktop:$CHARM_DOWN"
androidCompile "com.gluonhq:charm-down-plugin-display-android:$CHARM_DOWN"
iosCompile "com.gluonhq:charm-down-plugin-display-ios:$CHARM_DOWN"
现在,这些平台依赖项中的每一个都将仅适用于设计的平台。
如果您有兴趣,jxmobile
插件定义了 androidCompile
和其他 here。