Lỗi mã hóa: Không thể tìm thấy hồ sơ cung cấp sau khi xóa hồ sơ đã hết hạn


500

Đã thử xây dựng lại một ứng dụng đang hoạt động ngày hôm qua. Có một thông báo rằng một hồ sơ đã hết hạn, vì vậy tôi đã xóa nó khỏi iPod và từ iTunes. Khi tôi chọn một hồ sơ mới (một hồ sơ có dấu * trong mã định danh), bây giờ tôi gặp lỗi:

Lỗi ký mã: Không thể tìm thấy Hồ sơ cung cấp (chuỗi dài).

Tôi đang thiếu gì? Tôi đã xem qua các câu hỏi liên quan và không thấy kịch bản này.

Câu trả lời:


856

Đôi khi, tệp dự án xcode của bạn bị rối tung, đặc biệt là nếu bạn có một dự án cũ và lần đầu tiên tạo nó với phiên bản cũ hơn của xcode / iphone sdk. Những gì bạn cần làm là mở tệp dự án trong trình soạn thảo văn bản, tìm kiếm 'chuỗi dài' từ lỗi của bạn và xóa thủ công dòng đó. Trong thực tế, bạn chỉ nên tiếp tục và xóa bất kỳ dòng nào trỏ đến bất kỳ hồ sơ cung cấp. Sau đó mở lại dự án trong xcode, đi đến cài đặt và chọn lại hồ sơ mới của bạn. Điều này làm sạch các vấn đề như thế hầu hết thời gian. Các dòng trỏ đến hồ sơ cung cấp sẽ trông như thế này:

PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";

210
Tệp .xcodeproj thực sự là một thư mục, giống như một gói ứng dụng, Nếu bạn nhấp chuột phải vào công cụ tìm, bạn có thể chọn hiển thị nội dung gói, và sau đó bạn sẽ thấy một số tệp bên trong (hoặc trong thiết bị đầu cuối chỉ cần cd vào nó). Tệp dự án thực tế là tệp trong đó có phần mở rộng .pbxproj. Khi bạn mở nó bằng trình soạn thảo văn bản, các dòng bạn đang tìm kiếm sẽ bắt đầu bằng 'PROVISIONING_PROFILE = hoặc' '"PROVISIONING_PROFILE [sdk = iphoneos *]" ='. Xóa tất cả những thứ đó và sau đó bạn sẽ tốt.
Brad The App Guy

2
Tôi thấy rằng, ngoài những điều trên, tôi phải xóa tất cả các hồ sơ của mình, tải lại chúng từ cổng cung cấp và nhập lại chúng vào XCode. Sau đó, trong Cài đặt bản dựng / Ký mã, chọn cấu hình phù hợp cho tất cả các cấu hình bản dựng.
Jay Imerman

11
Vẫn là một lời khuyên có giá trị với XCode4 vào năm 2012. Cảm ơn!
Alexey Rusakov

6
... aaaaand vẫn là lời khuyên có giá trị với Xcode6 trong năm 2014! Cảm ơn bạn rât nhiêu!
Tom van Zummeren

4
Điều duy nhất phù hợp với tôi: Tùy chọn -> Tài khoản -> Xem chi tiết -> Làm mới. Điều đó đã tải lại tất cả các hồ sơ cung cấp từ cổng thông tin dev. Hy vọng điều này sẽ giúp được ai đó
blackhawk4152

129

Đây là một giải pháp đơn giản hơn phù hợp với tôi và không yêu cầu chỉnh sửa thủ công tệp dự án:

Trong XCode, trong ngăn "Nhóm & Tệp", mở rộng "Mục tiêu" và nhấp đúp vào mục tiêu của ứng dụng của bạn. Điều này mang đến khung thông tin cho mục tiêu. Trong phần "Xây dựng", kiểm tra phần "ký mã" cho bất kỳ cấu hình cũ nào và thay thế bằng cấu hình chính xác.

Lưu ý rằng điều này khác với nhấp đúp vào biểu tượng dự án của bạn và thay đổi hồ sơ từ đó. Khá tuyệt :)

Hướng


1
Cảm ơn! Tôi sẽ thử điều này vào lần tới khi nó xảy ra :)
quantumpotato

6
và đảm bảo chọn đúng cấu hình bản dựng trước :)
Johnus

1
Điều này không phải lúc nào cũng hoạt động. Đôi khi bạn vẫn phải đi vào và thay đổi nó bằng tay như nó hiển thị trong câu trả lời đầu tiên.
SpaceTrucker

Chỉ cần một lưu ý khác để lặp lại SpaceTrucker: phương pháp này không phải lúc nào cũng hoạt động. Câu trả lời được chấp nhận đảm bảo rằng Xcode sẽ ngừng tìm kiếm hồ sơ ảo đó.
Simone Manganelli

Tôi thấy rằng, ngoài những điều trên, tôi phải xóa tất cả các hồ sơ của mình, tải lại chúng từ cổng cung cấp và nhập lại chúng vào XCode. Sau đó, trong Cài đặt bản dựng / Ký mã, chọn cấu hình phù hợp cho tất cả các cấu hình bản dựng.
Jay Imerman

76
  1. Thuộc tính dự án & mục tiêu -> "Không ký mã" -> OK -> cmd + S (hoặc cmd + B);
  2. Thuộc tính dự án & mục tiêu -> "Hồ sơ cung cấp của bạn" -> OK

  3. Mọi thứ hoạt động trở lại!


4
Đây là giải pháp duy nhất hiệu quả với tôi (Sử dụng XCode4). Xây dựng ứng dụng với "Không ký mã" được chọn là bước bắt buộc đối với tôi.
Chazbot

Đây có vẻ là một giải pháp tốt hơn so với giải pháp có hơn 200 lượt tải lên, bởi vì Xcode có thể thay đổi cách ghi tệp dự án của nó trong tương lai.
Danyal Aytekin

1
Đây là cách giải quyết chính xác phù hợp với tôi trong Xcode 4.2
Selvin

10

Tôi đồng ý với câu trả lời của Brad, rằng bạn có thể khắc phục vấn đề này bằng cách chỉnh sửa mục tiêu / dự án của mình bằng tay, xóa bất kỳ dòng nào như thế này:

PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";

Tuy nhiên, trong Xcode 4.2 trở lên, có một cách dễ dàng hơn để truy cập văn bản này và chọn và xóa nó. Trong Trình điều hướng dự án ở bên trái, chọn dự án của bạn (dòng trên cùng của Trình điều hướng dự án). Bây giờ chỉ cần chọn Xem> Trình chỉnh sửa phiên bản> Hiển thị Trình chỉnh sửa phiên bản. Điều này sẽ hiển thị dự án của bạn dưới dạng văn bản và bạn có thể tìm kiếm CUNG CẤP và xóa dòng rắc rối, ngay trong khung soạn thảo của Xcode.


Theo đó, bạn không phải đóng và mở dự án. Cách tiếp cận tốt hơn :)
virus

6

Chỉ thấy một biến thể về vấn đề này: Tôi đã truy cập vào tệp project.pbxproj theo ghi chú của Brad Smith ở trên, ngoại trừ trong trường hợp này, tất cả các dòng PROVISIONING_PROFILE dường như đều chính xác, không xảy ra chuỗi hồ sơ "xấu" mà XCode không thể xảy ra. Không tìm thấy.

Tuy nhiên, cách khắc phục là như nhau: xóa TẤT CẢ các dòng PROVISIONING_PROFILE trong project.pbxproj, mặc dù về lý thuyết chúng trông "tốt", sau đó mở lại dự án trong XCode.


4

Để đạt được giải pháp của Brad hoàn toàn trong Terminal, hãy sử dụng các lệnh này

  1. cd [Xcode project parent]
  2. vi [Xcode project name].xcodeproj/project.pbxproj
  3. /[offending provisioning profile] [Enter]
  4. dd - xóa toàn bộ dòng
  5. Nhấn n cho đến khi không tìm thấy nữa
  6. Ctrl + x để lưu và đóng

3

Trong trường hợp của tôi, vấn đề đã được giải quyết bằng cách mở Window -> Organizer, chọn thiết bị của tôi và xóa Hồ sơ cung cấp cũ trong bảng "Cấp phép" ở bên phải. Chiếc cũ đã được đánh dấu bằng ký hiệu "x" màu đỏ nhưng iPhone vẫn đang sử dụng.

Bên cạnh hồ sơ đó, cái mới cũng xuất hiện (có cùng tên) và sau khi khởi chạy lại ứng dụng, tôi đã có nó chạy trơn tru.


+1, đôi khi tôi không thể cài đặt vì hồ sơ đã hết hạn - thậm chí không có cùng số nhận dạng! - là trên thiết bị của tôi.
quantumpotato

Cái này hoạt động với tôi, nhưng tôi cũng phải khởi chạy lại XCode để nó hoạt động.
Matt

3

Chỉ cần dành một giờ để làm điều này và với sự giúp đỡ của lời khuyên của Brad và một vài thay đổi bổ sung, tất cả đã hoạt động.

Tôi đã thực hiện việc này bằng cách sử dụng như sau: 10.7.3, Xcode 4.3.2, iOS 5.1 btw.

1) Nhấp chuột phải vào myapp.xcodeprojvà chọn nội dung gói

2) mở project.pbxprojbằng trình chỉnh sửa văn bản (không khuyến nghị textedit vì nó có thể làm hỏng định dạng)

3) Cuộn xuống cho đến khi bạn tìm thấy /* Begin XCBuildConfiguration section */

4) Lưu ý rằng bạn có phần gỡ lỗi và phát hành

5) Trong phần phát hành, hãy xem CODE_SIGN_IDENTITY"CODE_SIGN_IDENTITY[sdk=iphoneos*]"nó sẽ trông giống như thế này:

CODE_SIGN_IDENTITY = "iPhone Distribution: MyCompany LLC";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: MyCompany LLC";

6) Hãy nhìn vào PROVISIONING_PROFILE"PROVISIONING_PROFILE[sdk=iphoneos*]"chúng sẽ trông như thế này:

PROVISIONING_PROFILE = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";

Điều này sẽ phù hợp với hồ sơ cung cấp của bạn trong Xcode. Để xem liệu chúng có khớp với Xcode mở> Cửa sổ> Trình tổ chức> Thiết bị> Cấu hình cung cấp> Nhấp chuột phải vào hồ sơ> Hiển thị trong Finder> Tên tệp của .mobileprovision là id hồ sơ của bạn.

7) Cuộn xuống trong project.pbxprojvà tìm phiên bản thứ hai của phần phát hành. Bản sao thứ hai của phần phát hành nên kết thúc bằng một bình luận/* End XCBuildConfiguration section */

8) đảm bảo rằng phần thứ hai phù hợp với phần đầu tiên để CODE_SIGN_IDENTITY, "CODE_SIGN_IDENTITY[sdk=iphoneos*], và PROVISIONING_PROFILEtất cả đều được điền vào.


2

Một gợi ý tôi sẽ đưa ra vì chưa có ai nói điều đó: XIN VUI LÒNG tạo bản sao lưu toàn bộ tệp .xcodeproj TRƯỚC KHI bạn bắt đầu sửa đổi nội dung của nó. Vặn tập tin dự án và không có bản sao lưu sẽ dẫn đến một trải nghiệm rất khó chịu.

Có thể sao lưu bản chỉnh sửa có thể là một ơn trời.


Vâng, đây là lý do tại sao các vị thần SCM thực hiện kiểm soát nguồn.
Br.Bill

1

Tôi vừa gặp vấn đề này trong XCode4 của tôi. Để sửa lỗi, bạn cần đặt tất cả các điều khoản chính xác vào cả cấu hình Gỡ lỗi và Phát hành.

Tôi đã cố gắng gửi (bằng cách lưu trữ) ứng dụng của mình. Vì vậy, tôi chỉ thay đổi các điều khoản Gỡ lỗi thành "Không ký mã" và điều khoản Phát hành cho điều khoản cửa hàng ứng dụng của tôi.

Điều này sửa nó và cho phép tôi lưu trữ bình thường. Mong rằng sẽ giúp.


1

Chọn các dòng trong mã sắp xếp trống trong Bất kỳ SDK iOS nào và chọn chứng chỉ phù hợp.


1

Giải pháp của Brad Smith đã làm việc cho tôi, nhưng tôi cũng phải xóa trường CODE_SIGN_IDENTITY để làm cho nó hoạt động.


Điều này được thực hiện thủ công bằng cách sửa đổi tệp dự án xcode trong trình soạn thảo văn bản và tôi thường phải làm điều này để đi lại khi tôi rơi vào trạng thái bị hỏng. Biết cả hai thứ có thể được loại bỏ thường rất hữu ích. Điểm tốt.
Warren P

0

Thật không may, cách tiếp cận này đã không làm việc cho tôi. Nhưng đây là một bản sửa lỗi hoạt động với tôi (để làm cho nó hoạt động, bạn cần một tệp dự án hoạt động trên Subversion hoặc hơn):

Tôi đã quay trở lại một phiên bản làm việc của tập tin dự án của tôi. Vì không thể hoàn nguyên bằng Xcode ( Tùy chọn 'Hoàn nguyên' trong Kiểm soát nguồn của Xcode 4 ở đâu? ) - Tôi đã sử dụng Rùa, máy Windows của tôi và Hướng dẫn này ( http://tortoisesvn.net/docs/nightly/TortoirSVN_en /tsvn-howto-rollback.html ) để quay lại tệp dự án cũ hơn.

Vì Hướng dẫn không phù hợp với tôi, tôi chỉ sử dụng Rùa để lưu bản sửa đổi làm việc của tệp dự án của tôi vào một thanh USB để chuyển nó sang máy mac của tôi. Sau đó, tôi thay thế tệp dự án bị hỏng mới bằng tệp làm việc cũ, được làm sạch và nó hoạt động như một lá bùa!


0

Tôi gặp sự cố vì tôi đã cập nhật hồ sơ cung cấp AdHoc của mình với một số thiết bị mới để sử dụng trên TestFlight. Giả sử điều này xảy ra vì xcode có một tham chiếu cũ đến hồ sơ cung cấp của bạn trong cài đặt xây dựng mã cho dự án hoặc các mục tiêu. Cách tôi sửa lỗi là:

  1. Chuyển đến cả cài đặt xây dựng mục tiêu và cài đặt xây dựng dự án, Dưới ký mã thay đổi tất cả các cấu hình cung cấp sang thứ khác.
  2. Đi đến thiết bị / hồ sơ cung cấp trong trình tổ chức xóa các hồ sơ vi phạm, sau đó nhấp vào nút làm mới ở dưới cùng bên phải.
  3. Quay trở lại các cài đặt xây dựng mục tiêu và dự án và đặt hồ sơ cung cấp của bạn thành các hồ sơ cung cấp mới được làm mới (hy vọng).

0

Ít nhất là trong Xcode 5, đây là điều đã giải quyết vấn đề cho tôi:

Trong hồ sơ cung cấp, chọn hồ sơ cung cấp vi phạm và sau đó chọn hồ sơ cung cấp hợp lệ trong menu thả xuống.

nhập mô tả hình ảnh ở đây


0

Bạn có thể xóa tham chiếu cũ của tập tin cung cấp. Sau đó, sau khi nhập Hồ sơ cung cấp mới và chọn trình tạo Xcode.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.