2016-09-23 27 views
9

Xcode 8 yêu cầu bạn chọn "nhóm phát triển" trước khi bạn có thể đăng ký ứng dụng của mình cho cả iOS và macOS. Nó không phải là rất khó để tìm cách để thực hiện lựa chọn. (Câu trả lời có thể được tìm thấy trong Add developer team in Xcode 8? trong trường hợp bất kỳ ai cũng không thể tự tìm ra.)Làm thế nào để ngăn chặn Xcode 8 khỏi lưu "nhóm phát triển" trong .pbxproj?

Vấn đề là Xcode lưu lựa chọn đó vào tệp .pbxproj. Kể từ trong trường hợp của tôi, và tôi mong đợi nhiều người khác, đây là theo SCM, và dự án được sử dụng bởi nhiều người không liên quan & đội, đây là một vấn đề lớn. Ví dụ 'trạng thái git' cho thấy vùng làm việc không sạch sẽ ngay sau khi nhóm đã được chọn.

Có cách nào để một trong hai

  • được Xcode 8 để lưu lựa chọn trong sử dụng chứ không phải là dữ liệu dự án, hoặc
  • định một mặc định "nhóm phát triển" cho tất cả các dự án Xcode?
+3

Theo https://pewpewthespells.com/blog/migrating_code_signing.html, tất cả các nhà phát triển làm việc trên một dự án nên được thêm vào ame tài khoản/nhóm phát triển "để tránh làm bẩn tập tin dự án". Rõ ràng không hợp lý về mặt logistic cho một dự án mã nguồn mở, đặc biệt là khi mọi người đang sử dụng các nhóm cá nhân. Chắc chắn hy vọng có một giải pháp tốt hơn. – msc

+0

Tại sao không gắn bó với hệ thống ký mã cũ? Nó vẫn hoạt động tốt. –

+1

Vâng, bạn không thể. Xcode 8 sẽ không biên dịch mục tiêu của bạn cho thiết bị iOS/tvOS nếu bạn không chọn nhóm phát triển một cách rõ ràng.Điều này khiến cho dự án mã nguồn mở được sử dụng để biên dịch với Xcode 7 bằng cách chọn một nhận dạng ký hợp lệ. – 0xced

Trả lời

5

Bạn có thể lạm dụng Tuỳ chỉnh Paths cơ chế Xcode để lưu trữ nhóm nhận dạng phát triển của bạn bên ngoài của tập tin project.pbxproj bằng cách thiết lập một con đường DEVELOPMENT_TEAM tùy chỉnh (thay thế ABCDEFGHIJ với định danh nhóm của bạn):

Xcode Custom Paths

(menu Xcode → Tùy chọn… → Vị trí → Đường dẫn tùy chỉnh)

Đường dẫn tùy chỉnh được lưu trữ trong tùy chọn của Xcode (IDEApplicationwideBuildSettingsIDESourceTreeDisplayNames).

Nhưng có một sự bắt! Thật không may, ngay sau khi bạn thay đổi bất kỳ thứ gì trong dự án (cập nhật cài đặt xây dựng, thêm giai đoạn xây dựng mới, đổi tên mục tiêu, v.v.) nhóm phát triển sẽ tự động được thêm vào tệp project.pbxproj (trong TargetAttributes của dự án vật). Điều này đòi hỏi phải chăm sóc liên tục để không thực hiện những thay đổi đó.

Nếu thực tế này thiết lập của bạn DEVELOPMENT_TEAM như một phong tục tăng đường kéo, chủ dự án mã nguồn mở sẽ có thể không chỉ định bất kỳ đội Phát triển cũng không Việc cấp phép cho hồ sơ, thiết lập ký nhận dạng mã cho Bất kỳ iOS SDK-iOS Developer ("CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";) và demo mã nguồn mở ứng dụng sẽ xây dựng và chạy trên bất kỳ thiết bị giống như nó đã làm với Xcode 7.

+0

Tính năng này hoạt động. Cảm ơn bạn đã giải quyết vấn đề khó chịu này. May mắn thay, việc bắt bạn đề cập đến không phải là vấn đề đối với tôi vì dự án của tôi tạo ra các tệp project.pbxproj bằng cách sử dụng GYP. Mọi thay đổi phải được thực hiện đối với các tệp GYP. Tôi rất vui vì tôi không phải đi với giải pháp thay thế của tôi trong việc xóa các tệp project.pbxproj khỏi SCM và buộc người dùng của tôi tự tạo chúng sau khi cung cấp mã định danh nhóm của họ. – msc

+0

Tôi đang thiếu thứ gì đó. Tôi đã làm theo các bước ở trên, nhưng không chắc chắn cách sử dụng đường dẫn tùy chỉnh này. Tôi đặt nhóm của mình thành Không có gì sau khi tạo đường dẫn tùy chỉnh này, nhưng dự án sẽ không xây dựng cho điện thoại của tôi. – djibouti33

+0

Tôi nghĩ tôi đã hiểu. Nhắm mục tiêu> Cài đặt bản dựng> Nhóm phát triển> Khác> Thêm $ (DEVELOPMENT_TEAM). Nếu bạn quay trở lại Target> General, bạn sẽ thấy nhóm của bạn cư trú. Nếu bạn mở project.pbxproj trong trình soạn thảo văn bản và tìm kiếm DEVELOPMENT_TEAM, bạn sẽ thấy nó được đặt thành "$ (DEVELOPMENT_TEAM)". Điều đó đang được nói, tôi vẫn có thể tìm thấy ID nhóm của mình bằng cách tìm kiếm "DevelopmentTeam", vì vậy tôi không chắc liệu giải pháp này có hiệu quả với tôi hay không. – djibouti33

0

Tôi đã nâng cấp dự án của mình từ Xcode 7.3.1 lên Xcode 8 và không bao giờ đặt Nhóm phát triển hoặc Hồ sơ cấp phép không được hỗ trợ và mọi thứ vẫn hoạt động tốt.

enter image description here

+1

Điều này là tốt khi tất cả các thành viên trong nhóm của bạn có quyền truy cập vào hồ sơ cấp phép * Twitch Development 20161017 * có thể bao gồm tất cả các thiết bị của nhóm. Nhưng điều này không hiệu quả đối với các dự án nguồn mở rõ ràng là không thể cung cấp hồ sơ dự phòng. – 0xced

+0

Có, nhưng bạn có thể đặt cấu hình cấp phép không dùng nữa làm biến xcconfig đúng không? Sau đó, nó sẽ không bị ghi đè. –

+0

Đó không phải là vấn đề. Vấn đề là đối với một dự án mã nguồn mở, bạn không thể đặt cấu hình cấp phép. Nhìn vào 'ProvisionedDevices' của bạn * Twitch Development 20161017 * provisioning profile trong một trình soạn thảo văn bản: nó sẽ chỉ làm việc cho một vài thiết bị. Trong Xcode 7, bạn có thể đặt Mã ký nhận dạng mã thành _iPhone Developer_, để trống hồ sơ cấp phép và Xcode sẽ tự động chọn hồ sơ cấp phép _iOS Team của bạn: * _. Điều đó là không thể với Xcode 8 nữa. – 0xced

Các vấn đề liên quan