Distribution build for watch target fails
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 42/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- ios, javascript
- Lĩnh vực
- build-system, cli, mobile-dev
Hướng nghiên cứu
Bắt đầu bằng cách tái hiện một bản build phân phối cho dự án NativeScript có tiện ích mở rộng watch bằng tùy chọn --provision. Đọc lib/services/ios/export-options-plist-service.ts và kiểm tra project.pbxproj được tạo, sau đó xem xét cách xử lý target pbxproj-dom được tham chiếu. Hoàn tất khi ứng dụng iOS, ứng dụng watch và tiện ích mở rộng watch sử dụng các profile ký bắt buộc, đồng thời một IPA đã ký được tạo thành công.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Environment
Provide version numbers for the following components (information can be retrieved by running tns info in your project folder or by inspecting the package.json of the project):
- CLI: 6.4.1
- Cross-platform modules: 6.4.2
- iOS Runtime: 6.4.2
Describe the bug
I have added a watch project to my Nativescript project by following the instructions from here #4589 . I can successfully run tns prepare ios and the watch project is included in the xcode project afterwards.
I am using manual code signing to sign the iOS app as well as the watchOS app. Which both works perfectly fine as long as I do a development build.
But once I try to run the distribution build by providing the distribution profile via the --provision option I get the following error:
error: Provisioning profile "Generic Profile for Internal Deployment" doesn't include signing certificate "Apple Development: John Doe (XXXXX)". (in target 'watchapp Extension' from project '...')
So it looks like Provisioning Profile is updated but the wrong signing certificate is used. So looking into the autogenerated project.pbxproj reveals the following build setting for the watchapp and watchextension:
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
This will apply the code settings only to iOS SDK targets. And hence the signing certificates for the watch project don't get updated. Changing the build setting for the watch targets to
"CODE_SIGN_IDENTITY" = "iPhone Distribution";
fixes the problem.
I assume the fix could be done simply by checking for the target in here:
pbxproj-dom
Unfortunately the code signing still fails for the distribution build after this fix. The --provision option makes sure that the correct provisioning profile is used when exporting the archive and building the ipa.
This is done by passing an exportOptions.plist file to xcodebuild.
This file is autogenerated by Nativescript during the tns build and it needs to state the correct provisioning profile for each target. But unfortunately the export-options-plist-service.ts provides only the profile for the iOS target. And therefore the archive export fails with the follwoing error:
Error Domain=IDEProvisioningErrorDomain Code=9 ""watchapp.app" requires a provisioning profile." UserInfo={IDEDistributionIssueSeverity=3, NSLocalizedDescription="watchapp.app" requires a provisioning profile., NSLocalizedRecoverySuggestion=Add a profile to the "provisioningProfiles" dictionary in your Export Options property list.}
Adding the following lines in export-options-plist-service.ts fixes the issue
<key>${projectData.projectIdentifiers.ios}.watchkitapp</key>
<string>${provision}</string>
<key>${projectData.projectIdentifiers.ios}.watchkitapp.watchkitextension</key>
<string>${provision}</string>
To Reproduce
Run Nativescript project with watch extension and provide distribution profile via the --provision option
Expected behavior
ipa should be successfully created and signed
- Ngôn ngữ chính
- JavaScript
- Star
- 1.1k
- Fork
- 204
- Merge trung bình
- 1 ngày 9 giờ
- Pull request đã merge (30 ngày)
- 8
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của NativeScript/nativescript-cli
-
in-progress
NativeScript/nativescript-cli#6140 · 2 bình luận · 1 người được giao ·
-
NativeScript/nativescript-cli#6090 · 1 người được giao ·
-
in progress
NativeScript/nativescript-cli#6015 · 1 reaction · 1 người được giao ·
-
question
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
NativeScript/nativescript-cli#5992 · 5 bình luận ·
-
feature-pending-triage
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
NativeScript/nativescript-cli#5975 ·
Tất cả issue của NativeScript/nativescript-cli
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Seeed-Studio/wiki-documents#5655 · 2 bình luận ·
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
capricorn86/happy-dom#2435 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
-
Edit: CW+ Đang mởchannels:edit check:passed
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
01 type: bug 30 needs: triage 99 tag: UX Accessibility
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100