【问题标题】:Build Mapbox pod iOS with Kotlin/Native Multiplatform使用 Kotlin/Native Multiplatform 构建 Mapbox pod iOS
【发布时间】:2020-07-28 02:20:08
【问题描述】:

我正在尝试将 Mapbox 添加到使用 cocoapods 的 Kotlin/Native 项目中: (已经为 Android 设置 - 工作正常)

    //plugin 
    kotlin("native.cocoapods")
    
    //pod
    cocoapods {
        // Configure fields required by CocoaPods.
        summary = "Some description for a Kotlin/Native module"
        homepage = "Link to a Kotlin/Native module homepage"

        pod("Mapbox-iOS-SDK", "~> 6.0.0")
    }

通过 Kotlin/Native 运行的 Pod 不会读取带有凭据的 .netrc 文件:

machine api.mapbox.com 
login name
password pass

在 pod 文件中我添加了我的库:

pod 'SharedCode', :path => 'kotlin_native/SharedCode'

我运行pod install时看到的错误:

[!] Error installing Mapbox-iOS-SDK
[!] /usr/bin/curl -f -L -o /var/folders/vk/rb1bs6ld7wd19cmg6srw9s080000gn/T/d20200728-92875-1y3089q/file.zip https://api.mapbox.com/downloads/v2/mobile-maps/releases/ios/packages/6.0.0/mapbox-ios-sdk-dynamic.zip --create-dirs --netrc-optional --retry 2

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (22) The requested URL returned error: 401 Unauthorized

如果我直接将 pod 添加到 iOS 项目中,它可以正常工作:

#pod 'Mapbox-iOS-SDK', '~> 5.0.0'

如何让它读取凭证文件?有可能吗?

另外,我尝试使用podspec 并将access_token 放在URL 中,但它不起作用(有或没有令牌),不确定它是否不受支持或语法搞错了?

ArgumentError - Illformed requirement `":podspec => https://github.com/mapbox/pod-specs/blob/master/Mapbox-iOS-SDK/5.2.0/Mapbox-iOS-SDK.podspec"`

【问题讨论】:

    标签: ios cocoapods mapbox kotlin-native mapbox-ios


    【解决方案1】:

    目前不支持此功能。 Kotlin 版本 1.4-RC 应该引入一种可能的解决方法。可以尝试手动调用curl,然后像this 示例中那样导入本地CocoaPods 依赖项。


    我还建议您在此处提交问题 (https://kotl.in/issue)。支持凭证很重要,应该放在 Kotlin 团队的名单上。

    【讨论】:

      【解决方案2】:

      登录必须是“mapbox”:mapbox 文档:https://docs.mapbox.com/ios/maps/overview/#configure-credentials

      machine api.mapbox.com
      login mapbox
      password <INSERT API TOKEN>
      

      奖励提示: 您可以在 pod install / pod update 过程之前添加凭据,然后使用此 macOS 脚本将其删除,例如:

      echo "Generate credential for mapbox"
      echo "machine api.mapbox.com" > ~/.netrc
      echo "login mapbox" >> ~/.netrc
      echo "password <INSERT API TOKEN>" >> ~/.netrc
      

      稍后删除此条目:

      sed -i '' -e '/^machine api.mapbox.com$/{N;N;d;}' ~/.netrc
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-13
        • 2021-08-09
        • 2019-11-16
        • 1970-01-01
        • 1970-01-01
        • 2022-11-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多