使用 Kotlin/Native 多平台构建 Mapbox pod iOS
Build Mapbox pod iOS with Kotlin/Native Multiplatform
我正在尝试将 Mapbox 添加到 Kotlin/Native 项目,我在其中使用了 cocoapods:
(已经为 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")
}
Pod 运行 通过 Kotlin/Native 不读取 .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"`
目前不支持此功能。 Kotlin 版本 1.4-RC 应该引入一个可能的解决方法。可以尝试手动调用 curl
,然后像 this 示例中那样导入本地 CocoaPods 依赖项。
我还建议您在此处提交问题 (https://kotl.in/issue)。支持凭证很重要,应该放在 Kotlin 团队的列表中。
登录名必须是“mapbox”:mapbox 文档:https://docs.mapbox.com/ios/maps/overview/#configure-credentials
machine api.mapbox.com
login mapbox
password <INSERT API TOKEN>
奖金提示:
您可以在 pod 安装 / pod 更新过程之前添加凭据,然后使用此 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
我正在尝试将 Mapbox 添加到 Kotlin/Native 项目,我在其中使用了 cocoapods: (已经为 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")
}
Pod 运行 通过 Kotlin/Native 不读取 .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"`
目前不支持此功能。 Kotlin 版本 1.4-RC 应该引入一个可能的解决方法。可以尝试手动调用 curl
,然后像 this 示例中那样导入本地 CocoaPods 依赖项。
我还建议您在此处提交问题 (https://kotl.in/issue)。支持凭证很重要,应该放在 Kotlin 团队的列表中。
登录名必须是“mapbox”:mapbox 文档:https://docs.mapbox.com/ios/maps/overview/#configure-credentials
machine api.mapbox.com
login mapbox
password <INSERT API TOKEN>
奖金提示: 您可以在 pod 安装 / pod 更新过程之前添加凭据,然后使用此 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