【问题标题】:Can't compile Gluon Mobile to iOS无法将 Gluon Mobile 编译到 iOS
【发布时间】:2019-05-07 06:41:48
【问题描述】:

最近,我在 Orientation 上自定义了 gluon charm down 插件作为问题 here,当我使用新项目(在 MacOS 上)测试它时它正在工作。但是当我将它集成到现有项目中时(在Window环境下开发),它尝试./gradlew --info createIpa 时出错,它显示以下错误

` 任务 ':CashmagIDApp:createIpa' 执行失败。

java.io.IOException:文件不是存档文件:/Users/sovandara/.gradle/caches/modules-2/files-2.1/com.android.support/support-v4/26.1.0/444114b772e5eee3e66f9236ace4acc1964a33b8/支持-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.**.*'
        ]
    }
}

【问题讨论】:

  • 您能发布您的 build.gradle 文件(或其中的一部分,如插件版本和依赖项)吗?您不应该将 Android 依赖项与 iOS 依赖项混合在一起。
  • 我编辑了我的问题。我想知道太相关了,发布。仅当我执行与 iOS 相关的操作时才会发生这种情况。 Android/桌面运行良好。

标签: gradle gluon gluon-mobile robovm


【解决方案1】:

在发布的版本中,您有:

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'
    }

这意味着您添加了两次插件devicebrowserdisplay,因为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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-11
  • 1970-01-01
  • 1970-01-01
  • 2020-09-21
相关资源
最近更新 更多