有谁能够弄清楚如何使用 cordova android 应用程序的 screengrab 吗?我正在寻找在 Android studio 中为 cordova 应用程序创建 UI 测试用例的语法,但我没有找到任何东西。我正在使用最新版本的 cordova 和 fastlane。
我创建了一个配置文件,以使用 fastlane 将 iOS 应用程序部署到测试飞行。
以下是我添加到 .gitignore 的文件列表
我是否还应该将以下文件添加到 .gitignore 中?
我们使用Fusetools来构建应用程序。使用该命令uno build --target=ios --configuration=Release我们myapp.xcodeproj为应用程序生成一个新文件。
当我.xcodeproj在 Xcode IDE 中手动打开时,我看到该Automatically manage signing复选框已选中。然后我们使用 Fastlane 匹配来获取证书并在 Xcode 中手动选择应用商店证书。这一切都很好。
现在 - 我们尝试使用像Bitrise这样的 CI 提供程序使用无头构建过程来构建它。然后一切都停止在同一点。我们的.xcodeproj复选框Automatically manage signing被选中。
我们的快速文件如下所示:
disable_automatic_code_signing(path: "../myapp.xcodeproj")
match(git_url: "git@github.com:MyRepo/match.git",
app_identifier: "com.myapp.myapp",
type: "appstore",
readonly: true)
gym(
workspace: "myapp.xcworkspace",
scheme: "MyApp",
export_method: "app-store",
xcargs: "PROVISIONING_PROFILE_SPECIFIER='match AppStore
com.myapp.myapp'"
)
Run Code Online (Sandbox Code Playgroud)
在我们的例子中,Fastfile我们尝试首先禁用自动签名,在gym中传递参数xcargs: "PROVISIONING_PROFILE_SPECIFIER='match AppStore com.myapp.myapp'"以在构建之前设置配置文件。
然后我从 Bitrise CI 监视器得到这个:
Code signing is required for product type 'Application' …
当使用 Pilot 上传构建时,我正在设置,skip_submission: true但构建仍然分发给内部测试人员。我的印象是只上传 IPA 并且不会进行测试?
pilot(
changelog: "Live",
skip_submission: true
)
Run Code Online (Sandbox Code Playgroud) 我在 MacMini 上使用 Jenkins 的工作失败了。该作业由一个脚本组成,该脚本将使用 iOS 版 Fastlane 执行一些单元测试。该作业正确执行,但在构建之后它会记录错误:
FATAL: Remote call on SLAVE failed
java.lang.ClassNotFoundException: Classloading from system classloader disabled
at hudson.remoting.RemoteClassLoader$ClassLoaderProxy.fetch4(RemoteClassLoader.java:834)
at hudson.remoting.RemoteClassLoader$ClassLoaderProxy.fetch3(RemoteClassLoader.java:867)
at sun.reflect.GeneratedMethodAccessor72.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:896)
at hudson.remoting.Request$2.run(Request.java:336)
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
at org.jenkinsci.remoting.CallableDecorator.call(CallableDecorator.java:19)
at hudson.remoting.CallableDecoratorList$1.call(CallableDecoratorList.java:21)
at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at ......remote call to channel(Native Method)
at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1554)
at hudson.remoting.Request.call(Request.java:172)
at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:260)
at com.sun.proxy.$Proxy6.fetch3(Unknown Source)
at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:195)
at java.lang.ClassLoader.loadClass(ClassLoader.java:563)
at java.lang.ClassLoader.loadClass(ClassLoader.java:496)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:292)
at hudson.util.ProcessTree$UnixReflection.<clinit>(ProcessTree.java:699) …Run Code Online (Sandbox Code Playgroud) 我最近在我的应用程序中添加了一个通知扩展,该扩展使用 fastlane 构建得很好。添加通知扩展后,由于某些代码签名问题,构建总是失败。
\n\n构建我的应用程序并将其上传到 TestFlight 的通道是:
\n\n lane :beta do\n increment_build_number(\n build_number: latest_testflight_build_number + 1,\n xcodeproj: "ios.xcodeproj"\n )\n match(app_identifier: ["my.app.bundleid", "my.app.bundleid.extension" type: "appstore") \n gym(scheme: "prod")\n ENV["DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS"] = "-t DAV"\n pilot(\n skip_submission: true,\n skip_waiting_for_build_processing: true\n ) \n end\nRun Code Online (Sandbox Code Playgroud)\n\n我已经为两个捆绑 ID 创建了应用程序 ID 和配置文件,并且为它们启用了推送通知。
\n\n即使我在运行后收到以下错误fastlane beta:
[19:13:20]: $ /usr/bin/xcrun /Library/Ruby/Gems/2.3.0/gems/fastlane-2.96.1/gym/lib/assets/wrap_xcodebuild/xcbuild-safe.sh -exportArchive -exportOptionsPlist \'/var/folders/vq/j6j2lh1s3cz7cbpw7shc9149fy4t4_/T/gym_config20180601-5305-a3y0ow.plist\' -archivePath /Users/viktor.plezer/Library/Developer/Xcode/Archives/2018-06-01/prod\\ 2018-06-01\\ 19.07.57.xcarchive -exportPath \'/var/folders/vq/j6j2lh1s3cz7cbpw7shc9149fy4t4_/T/gym_output20180601-5305-ghy31c\' \n+ xcodebuild -exportArchive -exportOptionsPlist /var/folders/vq/j6j2lh1s3cz7cbpw7shc9149fy4t4_/T/gym_config20180601-5305-a3y0ow.plist -archivePath \'/Users/viktor.plezer/Library/Developer/Xcode/Archives/2018-06-01/prod 2018-06-01 19.07.57.xcarchive\' -exportPath /var/folders/vq/j6j2lh1s3cz7cbpw7shc9149fy4t4_/T/gym_output20180601-5305-ghy31c\n2018-06-01 19:13:21.181 xcodebuild[7741:1606819] [MT] IDEDistribution: -[IDEDistributionLogging …Run Code Online (Sandbox Code Playgroud) 我们必须为 React-Native Android 应用程序重置我们的 Android 上传密钥。我们联系了 Google 以重置密钥。
Google 要求我们完成以下步骤: 以下是生成和注册新上传密钥的方法:
按照 Android Studio 帮助中心中的说明生成新密钥。它必须与任何以前的键不同。或者,您可以使用以下命令行生成新密钥:
keytool -genkeypair -alias upload -keyalg RSA -keysize 2048 -validity 9125 -keystore keystore.jks
Run Code Online (Sandbox Code Playgroud)
此密钥必须是 2048 位 RSA 密钥并具有 25 年的有效期。将该密钥的证书导出为 PEM 格式:
keytool -export -rfc -alias upload -file upload_certificate.pem -keystore keystore.jks
Run Code Online (Sandbox Code Playgroud)
回复此电子邮件并附上 upload_certificate.pem 文件。
进一步的步骤
我们现在有了生成的文件keystore.jks和一个upload_certificate.pem文件。
以前我们的应用程序使用“***-release-key.keystore”文件上传。
构建过程
gradle.properties 文件
MYAPP_RELEASE_STORE_FILE=APPNAME-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=APPNAMEapprelease
Run Code Online (Sandbox Code Playgroud)
build.gradle 文件
def getPassword(String currentUser, String keyChain) {
def stdout = new ByteArrayOutputStream()
def stderr = new ByteArrayOutputStream()
exec { …Run Code Online (Sandbox Code Playgroud) 我已经为我的 iOS 项目配置了 2 个目标和几个配置(第一个目标为 6 个,第二个目标为调试和发布)。
每个版本配置都有不同的 bundleID,因此选择了适当的临时分发配置文件(在gym 命令中):
desc "Build target1-config1"
lane :deployTarget1 do
gym(
workspace: "myProj-ios.xcworkspace",
scheme: "target1-config1",
configuration: "target1-Release",
export_method: "ad-hoc",
export_options: {
provisioningProfiles: {
"com.target1.config1" => "AdHocProvProfile1"
}
},
output_directory: "./build",
output_name: "target1-config1.ipa"
)
firebase_app_distribution(
app: "xxxxxxxx",
groups: "ios_app_testers",
release_notes: "Automatic dev build from develop",
firebase_cli_path: "/usr/local/bin/firebase",
debug: true
)
end
Run Code Online (Sandbox Code Playgroud)
尝试使用 AdhocProvProfile2 构建 target2 时,收到错误消息。看起来 fastlane 没有正确选择 provProfile(和 bundleID!)。此外,在项目设置中正确选择了配置文件。什么可能导致问题?没有外部健身房文件。
There seems to be a mismatch between your provided `export_method` in gym
[11:15:55]: and the …Run Code Online (Sandbox Code Playgroud) 我正在尝试向我们的项目添加小部件,而 fastlane 无法再自动化了。
我需要的东西:
当前 Fastfile 通道:
desc "Build the app and send it to Testflight for testing"
lane :build_adhoc do
UI.message("app_name: #{app_name}")
UI.message("app_identifier: #{app_identifier}")
UI.message("apple_id: #{apple_id}")
UI.message("team_id: #{team_id}")
UI.message("sku: #{sku}")
xcodeprojpath = "../ios/" + app_name + ".xcodeproj"
proj = Xcodeproj::Project.open("../" + xcodeprojpath)
proj.build_configurations.each do |item|
item.build_settings["DEVELOPMENT_TEAM"] = team_id
item.build_settings["PROVISIONING_PROFILE_SPECIFIER"] = match_ad_hoc_provisioning …Run Code Online (Sandbox Code Playgroud) 我们的组织使用 Fastlane 来管理协同设计的东西。我们已经设置了 github 存储库并使用了一段时间。
对于 Xcode13,我们为我们的权利文件添加了时间敏感的用户通知功能。
<key>com.apple.developer.usernotifications.time-sensitive</key>
<true/>
Run Code Online (Sandbox Code Playgroud)
根据我的研究,我们似乎必须重新生成配置文件。我如何使用 Fastlane 实现这一目标?
使用sigh是正确的方法吗?我犹豫要不要采取任何行动,因为所有的 iOS 开发人员都共享证书 git repo,所以我非常谨慎。
xcode code-signing code-signing-entitlements fastlane fastlane-match
fastlane ×10
ios ×6
xcode ×5
android ×2
fastlane-gym ×2
code-signing ×1
cordova ×1
fusetools ×1
gradle ×1
jenkins ×1
keystore ×1
provisioning ×1
swift ×1