在我的Jenkins CI-Pipeline 中,我使用Fastlane操作push_to_git_remote来执行 git 推送(在之前的步骤中,完成了自动提交)。但是,当我触发 Jenkins 构建时,出现以下错误:
fatal: could not read Username for 'https://...': Device not configured
在其他 stackoverflow 线程上,我找到了没有提交的解决方案。然而,这不是问题所在。另外,当我在构建服务器上本地执行 fastlane 操作(没有 Jenkins)时,我必须添加我的 git 存储库凭据,然后一切正常。
你有什么想法?
我正在使用 fastlane 自动部署到 Play 商店。这里以 alpha 通道为例。
lane :alpha do
gradle(task: 'clean')
gradle(
task: 'assemble',
build_type: 'Release',
properties: {
"android.injected.signing.store.file" => ENV["ANDROID_KEYSTORE"],
"android.injected.signing.store.password" => ENV["ANDROID_KEYSTORE_PASSWORD"],
"android.injected.signing.key.alias" => ENV["ANDROID_KEY_ALIAS"],
"android.injected.signing.key.password" => ENV["ANDROID_KEY_PASSWORD"],
}
)
upload_to_play_store(track: 'alpha')
end
Run Code Online (Sandbox Code Playgroud)
我想使用 Github 操作自动执行此部署。每当发生提交时staging,运行fastlane alpha. 然而,我遇到的问题是版本控制。我需要versionCode在我的build.gradle文件中添加它。我在运行之前一直手动执行此操作fastlane alpha。
我想在提交之前无需手动更改此值,如何实现此目的?
我见过这个fastlane 插件可以增加版本代码。例如,如果我在 versionCode 为 1 时提交一次,那么我的工作流程将自动将 增加到 2。versionCode当我再次提交时,theversionCode仍将是 1,Github 会将其更改为 2。但是,Play 商店需要versionCode3. 理想的解决方案是让 Github 从 Google Play 商店查询versionCode …
我几天来就面临这个错误,并且由于这个问题我也无法手动发布 .ipa 文件
错误:找不到与“com.companyname.appname”匹配的团队“team_id”的配置文件:Xcode 找不到任何与“team_id/com.companyname.appname”匹配的配置文件。安装配置文件(通过将其拖放到 Xcode 的停靠项上)或在目标编辑器的“签名和功能”选项卡中选择不同的配置文件。(在项目“ProjectName”的目标“TargetName”中)
早些时候,我能够使用相同的配置文件构建并提交应用程序。
这是我在 fastfile 中的测试版名称
lane :beta do
version = get_version_number(target: 'TargetName')
get_certificates # invokes cert
get_provisioning_profile # invokes sigh
increment_version_number(version_number: version)
increment_version_number(bump_type: 'patch')
build_app(workspace: "ProjectName.xcworkspace", scheme: "SchemeName", skip_profile_detection: true )
upload_to_testflight
end
Run Code Online (Sandbox Code Playgroud)
请注意,我的代码签名设置为“手动”
我能够使用上述相同的配置提交应用程序进行测试飞行,但突然它停止工作。
我已尝试以下方法来解决该问题
Dir.chdir('../Pods') do
disable_automatic_code_signing(
path: 'ProjectName.xcodeproj',
team_id: 'team_id',
targets: ['TargetName'],
profile_name: 'com.companyname.appname'
)
gym(workspace: 'ProjectName.xcworkspace',scheme: "SchemeName", clean: true)
upload_to_testflight
end
Run Code Online (Sandbox Code Playgroud)
mv ~/Library/MobileDevice/Provisioning\ Profiles ~/Library/MobileDevice/Old\ Provisioning\ Profile 即使使用新创建的配置文件,问题仍然存在仍然无法解决问题。
请帮忙。
提前致谢
我有一个 React Native 项目。我能够像这样构建 iOS 和 Android 版本:
fastlane android build
fastlane ios build
Run Code Online (Sandbox Code Playgroud)
然而,这就是我想做的,所以 iOS 和 Android 都构建了。
fastlane all build
Run Code Online (Sandbox Code Playgroud)
这是我的 Fastfile 的简化版本:
default_platform(:android)
platform :android do
desc "Simply build a release apk"
lane :build do |options|
gradle(
project_dir: "android",
task: "clean assemble",
build_type: "Release",
)
end
end
platform :ios do
desc "Simply build a release ipa"
lane :build do |options|
build_app(workspace: "ios/myproject.xcworkspace")
end
end
Run Code Online (Sandbox Code Playgroud)
有人告诉我这都是 Ruby 代码,我应该能够做任何我想做的事情。所以,我希望“all”同时调用 Android 和 iOS。但是,我不懂 Ruby,所以非常感谢您的帮助。
Apple有不同的证书类型,现在当我构建我的项目时,fastlaneiOS distribution默认选择证书。显示错误:
error: No signing certificate "iOS Distribution" found: No "iOS Distribution" signing certificate matching team ID "***" with a private key was found. (in target 'Runner' from project 'Runner')
Run Code Online (Sandbox Code Playgroud)
我检查我的本地机器证书,发现该证书是最新的Apple Distribution证书。
iOS distribution?Apple Distribution默认选择吗?这是我的本地计算机证书(现在我重复使用该证书来签署应用程序):
这是我的 fastlane 比赛配置:
default_platform(:ios)
platform :ios do
desc "Description of what the lane does"
lane :beta do
xcode_select "/Applications/Xcode_12.4.app"
create_keychain(
name: ENV['MATCH_KEYCHAIN_NAME'],
password: ENV["MATCH_KEYCHAIN_PASSWORD"],
default_keychain: true,
unlock: true,
timeout: 3600,
lock_when_sleeps: false
)
match( …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用缓存优化 android 和 ios 的 CICD 部署工作流程,但缓存路径有问题。当不缓存工作流程时效果很好,但在缓存时,fastlane 操作找不到 flutter 或 pod,并且我收到类似“error: /Users/runner/work/xxx/xxx/ios/Flutter/Release.xcconfig:1: ”的错误:在搜索路径中找不到包含的文件“Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig”(在项目“Runner”的目标“Runner”中)”
name: Deploy staging
on:
workflow_dispatch:
inputs:
lane:
description: "Staging lane to use : alpha or beta"
required: true
default: "alpha"
jobs:
deploy-to-ios:
runs-on: macos-latest
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Flutter Cache
id: cache-flutter
uses: actions/cache@v2
with:
path: /Users/runner/hostedtoolcache/flutter
key: ${{ runner.os }}-flutter
restore-keys: |
${{ runner.os }}-flutter-
- name: Setup Flutter
uses: subosito/flutter-action@v1
if: steps.cache-flutter.outputs.cache-hit != 'true'
with:
channel: …Run Code Online (Sandbox Code Playgroud) 我有一个使用 AWS Amplify 的 Expo 项目。我目前正在使用 Expo 的 EAS 在移动设备上进行部署。
\n我经常遇到这个错误:
\n\xe2\x9d\x8c Metro encountered an error:\nUnable to resolve module ./src/aws-exports from /Users/expo/workingdir/build/App.tsx:\n\nNone of these files exist:\n * src/aws-exports(.native|.ios.ts|.native.ts|.ts|.ios.tsx|.native.tsx|.tsx|.ios.js|.native.js|.js|.ios.jsx|.native.jsx|.jsx|.ios.json|.native.json|.json)\n * src/aws-exports/index(.native|.ios.ts|.native.ts|.ts|.ios.tsx|.native.tsx|.tsx|.ios.js|.native.js|.js|.ios.jsx|.native.jsx|.jsx|.ios.json|.native.json|.json)\n 11 | import Amplify from 'aws-amplify';\n> 12 | import awsconfig from './src/aws-exports';\n 15 | Amplify.configure(awsconfig);\nRun Code Online (Sandbox Code Playgroud)\n但是,我确实有该文件aws-exports,并且可以在本地正常运行。有时我可以毫无问题地构建。还没有弄清楚它何时发生或不发生的模式。
我怀疑这可能与gitignore(我认为EAS可能会在上传到服务器之前检查它)有关。我已经尝试运行该命令--clear-cache,但没有注意到任何效果。
关于我能做什么有什么建议吗?:)
\n我有一个由多个 SPM 包组成的项目。我正在使用 Fastlane 对每个包执行测试,如下所示
lane :tests do
TEST_PACKAGES.each { |package|
single_test(package: package, devices: TEST_DEVICES)
}
end
lane :single_test do |options|
package = options[:package]
devices = options[:devices]
scan(
package_path: package,
scheme: package,
devices: devices,
output_directory: './' + package + '/' + TEST_OUTPUT_DIR,
buildlog_path: TEST_BUILDLOG_PATH,
derived_data_path: DERIVED_DATA_PATH,
code_coverage: true,
result_bundle: true,
fail_build: false,
clean: true,
configuration: "Debug"
)
end
Run Code Online (Sandbox Code Playgroud)
问题是,这会随机失败 - 有时在第一个包上,有时在第二个包上,有时在其他包上,并出现与此类似的错误:
错误:错误 Domain=com.apple.dt.IDEContainerErrorDomain 代码=6“无法将“swift-custom-dump”作为“Swift 包代理”打开,因为它已作为“Swift 用户管理的包文件夹”打开。”
出现几个类似的错误,涉及特定包使用的依赖项。
这种行为没有一致性,因为简单地fastlane tests再次调用而不进行任何更改,将导致不同包的测试失败。
可能是什么原因?
我正在开始开发 2 个应用程序扩展,我想按如下方式设置我的构建:
目前,我对每个项目都有不同的构建配置,以显示和隐藏应用程序的其他方面(在某些情况下也包括编译器标志)。我使用 fastlane 来进行构建。
据我所知,添加或删除应用程序扩展的唯一方法是:
有人能想出更好的解决方案来有条件地包含应用程序扩展吗?
xcode conditional-compilation xcodebuild ios-app-extension fastlane
我正在尝试向 Google Play 内部测试提交构建,但失败并出现以下错误:
Google Api Error: Invalid request - APKs are not allowed for this application
我正在运行以下命令:
eas build --profile development --platform android # works successfully
eas submit -p android
Run Code Online (Sandbox Code Playgroud)
运行时,提交Select a build from EAS不起作用(返回Couldn't find any Android builds for this project on EAS servers. It looks like you haven't run 'eas build' yet.),因此我从构建命令提供构建 ID。我已经设置buildType了app-bundle,但它仍然会返回错误。在提交日志中,我注意到:
skip_upload_apk | false
我可以将其更改为吗true?这会有帮助吗?我在运行 eas commit 之前手动更新了构建。可能相关的问题:在手动上传期间,它也不接受 APK 文件,因此我必须上传 AAB。
eas.json
{
"cli": { …Run Code Online (Sandbox Code Playgroud) fastlane ×10
ios ×4
android ×2
expo ×2
github ×2
react-native ×2
ruby ×2
aws-amplify ×1
caching ×1
flutter ×1
git ×1
google-api ×1
jenkins ×1
push ×1
typescript ×1
xcode ×1
xcodebuild ×1