Xcode 5: Lỗi quyền ký mã


149

Tôi đã xây dựng một ứng dụng mới sẽ hỗ trợ iOS 7. Tôi đã nhận được XCode 5 GM mới và đã cố gắng ký các ứng dụng của mình bằng hồ sơ cung cấp và chứng chỉ phân phối mới, nhưng tôi gặp vấn đề với việc phân phối. Tôi liên tục nhận được các lỗi sau:

"Quyền lợi khi ký mã không hợp lệ. Các quyền lợi trong chữ ký gói ứng dụng của bạn không khớp với các quyền được chứa trong hồ sơ cung cấp. Theo hồ sơ cung cấp, gói chứa giá trị khóa không được phép: '[XXXX.com.sample .company] 'cho khóa' nhóm truy cập khóa ".

Cũng lỗi tương tự cho một giá trị khóa được gọi application-identifier.

Ảnh chụp màn hình của errror:

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

Câu trả lời:


208

Giải pháp nằm trong tùy chọn mới trong Xcode 5 cho biết hồ sơ cung cấp. Chỉ cần đặt hồ sơ cung cấp của mục tiêu dự án sang bên phải và nó sẽ hoạt động.

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


6
Để thêm vào câu trả lời này - tôi đã có cả hai loại Phân phối và Phát hành để cung cấp hồ sơ. Tôi cũng gặp lỗi tương tự và đó là do tôi đã thiết lập hồ sơ phát triển cho loại Phát hành (tôi đã nghĩ rằng mình đang sử dụng loại Phân phối và không nhận thấy loại Phát hành). Khi tôi đặt nó vào hồ sơ distro của mình, nó đã hoạt động.
Bek

4
Để làm rõ hơn câu trả lời này, tôi đã cố gắng thiết lập hồ sơ cung cấp và nhận dạng ký mã của mình ở hàng cấp cao nhất của mỗi loại, sử dụng chế độ xem Kết hợp. Làm như vậy vẫn bắt nó trở lại <Nhiều giá trị>. Tuy nhiên, khi tôi mở rộng cả hai hàng, tôi đã thấy các nhánh con "Bất kỳ SDK iOS" nào cho mỗi cấu hình đều được đặt thành Không, mặc dù các hàng Gỡ lỗi / Phát hành đã liệt kê danh tính hồ sơ / ký hợp lệ. Lưu trữ trong trạng thái này vẫn gây ra lỗi cho tôi, cho đến khi tôi đặt rõ ràng tất cả các hàng "Bất kỳ SDK iOS nào" thành các giá trị phù hợp của chúng.
qix

1
Chúng tôi đã dành nhiều ngày cho cái này! điều xấu về vấn đề này chúng ta vẫn phải chọn cùng một cấu hình một lần nữa khi xây dựng IPA. Làm thế nào bạn tìm thấy về điều này, Benjamin?
cregox

2
Thật không may, nó không làm việc cho tôi. Tôi đã kiểm tra hồ sơ của mình trong trang web developer.apple.com và tôi đã bật Trung tâm trò chơi và mua ứng dụng. Tôi không sử dụng một trong hai và tự hỏi nếu đó có thể là một vấn đề.
JScarry

4
Để thêm làm rõ, lưu ý rằng Xcode cho phép bạn chọn Cung cấp thông tin hồ sơ cho cả dự ánmục tiêu . Bạn cần chắc chắn rằng bạn đang thay đổi cài đặt cho mục tiêu không chỉ là dự án.
Brian Stormont

55

Nếu bạn giống như tôi và bạn nghĩ rằng bạn đã thử MỌI THỨ , đã lưu trữ dự án của bạn hơn mười lần, đập đầu vào bàn phím và vẫn gặp lỗi này. Xin hãy tự giúp mình và chỉ cần Khởi động lại XCode , nó đã làm việc cho tôi. Thỉnh thoảng Apple ... tôi ghét bạn.


tôi đã xây dựng hai ứng dụng khác nhau trong một phiên xcode và gặp 1000 lỗi. khởi động lại làm việc. cảm ơn bạn!
donmarkusi

Điều này làm việc cho tôi quá. Tôi đang sử dụng Xcode 6.3. Tôi không thể chọn tài khoản apple dev để ký mã. Thông báo lỗi hoàn toàn không liên quan được hiển thị mỗi lần "id ứng dụng ios 'xxxxxxxxx' không hỗ trợ thay đổi tính năng bản đồ". Một khởi động lại mã đơn giản đã sửa nó cho tôi.
Sahil

3
Nếu tôi có thể nâng bạn 1000 lần, tôi sẽ làm thế. Điều này làm việc cho tôi. Điều này đã xảy ra trên XCode 7.1.
Manu Kanthan

25

Tôi đã trải qua nhiều bước ở trên nhưng điều cuối cùng đã làm cho tôi là làm mới hồ sơ của mình trong Xcode. Không chắc tại sao lại cần thiết vì hồ sơ phân phối ứng dụng của tôi đã hiển thị trong danh sách. Dưới đây là các bước:

  1. Tùy chọn Xcode
  2. Tab tài khoản
  3. Chọn ID Apple của bạn
  4. Nhấn nút Xem chi tiết trong bảng chi tiết Apple ID
  5. Nhấn nút Làm mới ở góc dưới bên trái

2
Khi bạn thực hiện việc này, bạn cũng nên chạy lại lệnh Xây dựng và Lưu trữ để đảm bảo cấu hình mới được áp dụng. (Ít nhất, điều đó là cần thiết đối với tôi.)
Brent Royal-Gordon

12

Trong trường hợp của tôi, tôi đã kích hoạt các khả năng tương tự trong Xcode trong các dịch vụ Ứng dụng trong developer.apple.com. Đó là công việc cho tôi

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

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


Đây là những gì làm việc với tôi - không thể tắt chúng trong trung tâm dành cho nhà phát triển và có vẻ như iOS 7.0 đã biên dịch với Xcode 5.1.1 yêu cầu chúng Bật.
Matt H

6

Trong trường hợp của tôi (xin lỗi) tôi đã chuyển "Đội" thành "Không" trong -> Chung -> Danh tính

Trong một trường hợp khác, tôi cần chuyển danh tính này từ "Không" sang tài khoản nhà phát triển quản lý danh tính và hồ sơ.

Xcode đôi khi gây rối rất nhiều với việc ký mã, dường như. Hoặc, chúng ta chỉ là những người phàm tục đơn giản là không đủ thông minh để hiểu những gì nó đang làm, tất nhiên. Đừng bỏ cuộc, đôi khi chúng ta sẽ trải qua một số tra tấn ký mã!


Wow, bạn đã cứu buổi tối của tôi, cảm ơn bạn. Nhưng ... tại sao nó hoạt động?
Martin

Tại sao nó hoạt động được. Tôi nghĩ Xcode là một sản phẩm cực kỳ phức tạp và các đặc điểm nhận dạng và hồ sơ cung cấp đã có lông ngay từ đầu. Tôi nghĩ rằng không ai có một sự hiểu biết đầy đủ về các mối quan hệ nữa. Tôi không. Đôi khi nó là thử nghiệm và lỗi, như chủ đề này cho thấy.
RickJansen

5

Trong trường hợp của tôi, tôi phải đặt Hồ sơ dự phòng chính xác để phát hành và sau đó phải khởi động lại Xcode. Trước khi khởi động lại, nó có cùng một hồ sơ cung cấp và không hoạt động. Vì vậy, đôi khi một khởi động lại có thể làm phép lạ. Có lẽ điều này giúp ai đó.


3

Nếu ai đó sử dụng GameCenter thì hãy kiểm tra phần này trong mục tiêu của bạn. Tôi đã làm việc với một số dự án cũ và có 2 lỗi (nhưng mọi thứ đều hoạt động tốt). Vô hiệu hóa và cho phép nó trở lại giải quyết vấn đề này.nhập mô tả hình ảnh ở đây

Nhiều khả năng hành động này sẽ thêm quyền của Trung tâm trò chơi vào ID ứng dụng và tự xử lý.


3

1.Đi vào thư mục dự án, xóa các tệp * .entitlements. 2.Sau đó đi yo trong mục tiêu dự án xcode -> xây dựng cài đặt -> quyền ký mã - xóa các giá trị 3. Xóa 4.Run


3

Ah, lỗi vinh quang này. Đối với tôi bất cứ khi nào tôi thấy lỗi này, tôi kiểm tra những điều sau đây:

1. Cho phép XCode truy cập thông tin hồ sơ cung cấp của bạn mọi lúc - Nếu XCode cứ hỏi khi bạn khởi động để có quyền truy cập vào các tệp riêng tư của máy tính để có thể nhận thông tin hồ sơ cung cấp với các tùy chọn để luôn luôn truy cập, không phải bây giờ, hoặc chỉ một lần - đặt nó thành LUÔN LUÔN truy cập

2. Nếu bạn có bất kỳ tệp quyền lợi cũ nào xung quanh dự án của bạn, hãy loại bỏ chúng và bất kỳ dấu hiệu nào của chúng - nếu bạn thấy tệp .entitlements trong dự án của bạn sẽ xóa nó (hoặc ít nhất là xóa tham chiếu đến nó nếu bạn không chắc chắn bạn đã sẵn sàng xóa hoàn toàn nó), sau đó đảm bảo dòng 'Quyền ký mã' trong phần 'Ký mã' trong Cài đặt bản dựng trống

3. Kiểm tra Dịch vụ ứng dụng trực tuyến và kết hợp chúng với Dịch vụ của bạn trong XCode cho ứng dụng - Truy cập Trung tâm thành viên Apple và kiểm tra ID ứng dụng cho ứng dụng của bạn, nhấp vào ứng dụng để xem 'Dịch vụ ứng dụng' và xem bạn là gì đã kiểm tra, sau đó truy cập XCode và kiểm tra phần 'Khả năng' của bạn để đảm bảo hai dịch vụ có cùng danh sách các dịch vụ của Apple trên cả hai

4. Đảm bảo bạn chỉ định Hồ sơ cung cấp hợp lệ cho ứng dụng của mình trước khi xác thực - kiểm tra kỹ hồ sơ cung cấp cho ứng dụng của bạn trong Trung tâm thành viên Apple, đảm bảo rằng nó chưa hết hạn, có ID ứng dụng đúng với phân phối và id gói chính xác . Tải xuống và nhấp vào hồ sơ cung cấp mới để đảm bảo XCode có nó hoặc truy cập XCode> Tùy chọn> Tài khoản> nhấp vào tài khoản của bạn và 'Xem chi tiết', sau đó nhấp vào nút góc dưới cùng để Đồng bộ hóa tất cả các cấu hình với XCode. Bạn nên có sẵn hồ sơ để chọn trong phần 'Ký mã'. Khi bạn có hồ sơ cung cấp chính xác thì bạn có thể đặt các dòng 'Nhận dạng ký mã' thành tùy chọn chính xác cho hồ sơ cung cấp đó.

Lưu ý - nếu thực hiện chứng chỉ phân phối, có thể giúp đặt tất cả các dòng 'Nhận dạng ký mã' thành nhận dạng bạn sử dụng để phân phối bao gồm các dòng gỡ lỗi

5. NẾU TẤT CẢ CÁC FAIL ELSE - Làm sạch dự án của bạn và Khởi động lại XCode và một số phép thuật của Apple có thể hoạt động tốt vào lần tới khi bạn mở dự án của mình và cố gắng Xác thực


2

Nếu bạn đang xây dựng một dự án 3.1.5 cũ, Xcode 5 có một số lỗi khiến cho câu trả lời của Benjamin không thể thực hiện được, vì không có hồ sơ Cung cấp nào để chọn. Sau nhiều giờ đọc các tệp dự án Xcode, tôi đã tìm ra giải pháp hiệu quả cho mình:

  • Trong ngăn Tiện ích (bên phải) trong Xcode 5, trong Tài liệu dự án, thay đổi từ Xcode 3.1 - tương thích với Xcode 3.2 tương thích.
  • Nhập tên tổ chức của bạn.
  • Đóng dự án.
  • Mở tệp dự án của bạn, vd open -a TextEdit path/to/name.xcodeproj/project.pbxproj
    • Xóa hai mệnh đề phân phối ( isa=XCBuildConfiguration).
    • Xóa hai dòng đi kèm trong buildConfiguration (một trong PBXNativeTargetvà một trong PBXProject XCConfigurationLists)

Bây giờ bạn đã sẵn sàng để mở lại, lưu trữ và gửi đến App store - voilà! Nó hoạt động trở lại!

Tôi nghĩ nó hoạt động như thế nào

Tôi cho rằng điều này hoạt động vì Apple ở đâu đó dọc theo quyết định bỏ nhu cầu về bất kỳ cấu hình phân phối riêng biệt nào, đây là một điều tốt. Khi tôi lưu trữ, Xcode tự động ký mã để phân phối. Đó là cách nó nên được thực hiện ngay từ đầu, thật đáng tiếc khi Apple không thể tự động chuyển thành một phần của IDE; thay vào đó họ buộc các nhà phát triển của chúng ta phải mất hàng thập kỷ để làm cho công cụ này hoạt động.


2

Tôi đã phải vật lộn với vấn đề này hơn một ngày nay, thử tất cả các loại giải pháp được đề xuất ở đây và các nơi khác trên internet. Không có gì làm việc ...

Nhưng cuối cùng tôi cũng giải quyết được vấn đề!

Vấn đề tôi gặp phải là với một ứng dụng cũ mà tôi đã không chạm tới trong hơn 3 năm và bây giờ tôi sắp phát hành một bản cập nhật được chờ đợi từ lâu. Kể từ khi tôi phát hành ứng dụng, Apple đã cập nhật cách thức chứng chỉ và Id ứng dụng hoạt động. Họ đã giới thiệu khái niệm về Team Id dường như được khuyến nghị sử dụng. Đặc biệt, trang web "Chứng chỉ, Số nhận dạng & Hồ sơ" của Apple, đã thấy rất nhiều thay đổi kể từ đó.

Ở đó tôi nhận ra rằng Hồ sơ cung cấp mà tôi đang sử dụng cho Phân phối App Store đã được kết nối với Id ứng dụng ED8xxxxxxx.com.rostsolutions.*nhưng nhìn vào Id ứng dụng cho trò chơi tôi sắp gửi tôi nhận thấy rằng Id ứng dụng là ATMxxxxxxx.com.rostsolutions.Swisch. Vì vậy, tiền tố Id ứng dụng không khớp! Đó dường như là gốc rễ của vấn đề. Vì vậy, những gì tôi đã làm là tạo một Hồ sơ cung cấp mới được kết nối với Id ứng dụng ATMxxxxxxx.com.rostsolutions.Swischthay thế. Sử dụng Hồ sơ cung cấp đó, tôi đã gửi thành công ứng dụng của mình lên App Store và bây giờ tôi chỉ cần giữ ngón tay của mình vượt qua rằng mọi thứ khác đều hoạt động tốt ở phía Apple.

(Lần đầu tiên tôi đã cố gắng kết nối với hồ sơ Cung cấp mới với Id ký tự đại diện ATMxxxxxxx.com.rostsolutions.*, nhưng điều đó dường như không hoạt động).

Nhưng điều làm tôi bối rối là khi tôi nhìn vào Ứng dụng cũ trong iTunes Connects và đi đến Chi tiết nhị phân, nó nói rằng Id ứng dụng là ED8xxxxxxx.com.rostsolutions.Swisch. Vậy tại sao trang "Chứng chỉ, Số nhận dạng & Hồ sơ" liệt kê Id ứng dụng là ATMxxxxxxx.com.rostsolutions.Swisch?


Cảm ơn đã đăng bài này Daniel. Tôi đang thấy một hành vi tương tự ngăn không cho các chứng chỉ và hồ sơ mong muốn được sử dụng. Mỗi lần tôi tải xuống một chứng chỉ hoặc cho phép Xcode thực hiện điều đó, ID nhóm 'ảo' sẽ xuất hiện 'phá vỡ' khả năng (sử dụng) iCloud trong trường hợp của tôi. Không có giải pháp cho tôi chưa.
David

CHÚA ƠI! Điều tương tự này đang xảy ra với chúng tôi với hơn 50 ứng dụng! Ugh đội ma đang giết chúng tôi. Tại sao Apple Tại sao! ????
Sukima

2

Vấn đề của tôi đã được giải quyết bằng cách xóa Apple ID của tôi khỏi Tùy chọn-> Tài khoản và sau đó thêm lại. Sau đó, tất cả các tệp hồ sơ cung cấp của tôi xuất hiện trên bảng tiện ích Xem chi tiết. Tôi đã chọn nhầm "Hồ sơ cung cấp nhóm Mac: *" thay vì hồ sơ cung cấp phân phối thực tế cho dự án nghĩ rằng đó là một lựa chọn chung. Cung cấp các tập tin phải được cụ thể cho dự án. Ồ, và BTW, đảm bảo hồ sơ cung cấp của bạn có các quyền chính xác (ví dụ: Bản đồ). Tôi đã quản lý để phát hành một ứng dụng với Bản đồ OSX mà không có quyền và Apple đã chấp thuận - nhưng không có Bản đồ nào xuất hiện trên phiên bản sản xuất!


1

Trong trường hợp của tôi, tôi gặp vấn đề tương tự, giải pháp của tôi là thay đổi 'Hồ sơ cung cấp phát hành' trong Cài đặt bản dựng trước khi thực hiện Lưu trữ. Tôi làm điều này hai lần, một lần cho phân phối App Store và một lần khác cho phân phối Ad Hoc. Tôi cũng thêm một nhận xét về tài liệu lưu trữ của tôi. Kết luận của tôi là có một cái gì đó bị hỏng về "chữ ký lưu trữ lại".


1

Có một hướng dẫn rất tốt để giải quyết vấn đề đó trên trang web này .

Nó nói rằng vấn đề này có thể xảy ra khi Mã nhận dạng gói dự án của bạn khác với mã bạn đã nhập trên trang web iTunes Connect .


1

Tôi nghĩ xcode 5 sử dụng "phát hành" thay vì "phân phối" mà bạn có thể tự tạo.


1

Nếu tất cả những điều trên không hoạt động (trong trường hợp của tôi sau vài ngày không may mắn thử mọi thứ) thì tôi chỉ có một ứng dụng Mac. HÃY CẨN THẬN VỚI REVOKE!

1) Thu hồi bằng tay tất cả "Phân phối ứng dụng Mac" & "Phân phối trình cài đặt Mac"
2) Làm sạch các chứng chỉ và khóa mở có liên quan trong Keychain ( Cảnh báo: xuất trước khi xóa)
3) Khởi động lại Xcode 4) Chuyển đến (trong Safari) developer.apple .com -> giấy chứng nhận, vv 5) Tạo CertificateSigningRequest.certSigningRequest trong Keychain-> chứng tá
6) Tạo bằng tay trên developer.apple.com cả "Mac App phân phối" & "Mac Installer phân phối" với bạn * .certSigningRequest
7) Cung cấp Cấu hình -> Phân phối -> tạo / sửa điều khoản tùy chỉnh cho AppStore (Tôi đặc biệt đặt tên nó là "Hồ sơ cung cấp Mac cho AppStore"
8) Xcode -> Cài đặt -> Tài khoản -> Tài khoản của bạn ->Làm mới 9) Làm sạch Xcode -> Lưu trữ -> Xác thực


1

Tôi đã phải vật lộn với vấn đề tương tự (tôi đang xây dựng để phân phối Ad-Hoc). Điều duy nhất đã thay đổi kể từ lần triển khai thành công cuối cùng, là thêm hai thiết bị vào hồ sơ cung cấp.

Sau khi kiểm tra hai lần và ba lần tất cả các cài đặt bản dựng, tôi đã tạo lại hồ sơ cung cấp (không thay đổi bất cứ điều gì), tải xuống lại và nó hoạt động tốt.

Vì vậy, hãy tự lưu ý: nếu không có lời giải thích logic, bạn luôn có thể thử voodoo CNTT cũ.

Tôi cũng khuyên dùng Tiện ích cấu hình iPhone , mặc dù tên của nó, rất hữu ích để kiểm tra những cấu hình cung cấp nào bạn có trên máy tính.


1

LRI ITMS-9000: Gói Gói này không hợp lệ. Các ứng dụng và cập nhật ứng dụng mới được gửi tới App Store phải được xây dựng với các phiên bản công khai (GM) của XCode 5.1.1 trở lên và SDK iOS 7. Không gửi ứng dụng được xây dựng bằng phần mềm beta.


0

Nếu nhiều nhà phát triển đang sử dụng cùng một tài khoản trung tâm thành viên. Một trong số họ không thể sử dụng chứng chỉ do người khác tạo vì họ đã sử dụng yêu cầu chứng chỉ được tạo bằng máy tính của họ.

Bạn cần sử dụng chứng chỉ do bạn tạo (yêu cầu chứng chỉ được tạo bằng máy tính của bạn).

Thay thế, bảo họ gửi cho bạn Hồ sơ nhà phát triển. không chắc chắn về tên. để sử dụng chứng chỉ được tạo trên máy tính khác.


0

Quyền đăng nhập mã xảy ra do tài nguyên của bạn không chứa tệp Entitlements trong tài nguyên, Chỉ cần đi đến xây dựng cài đặt và tìm kiếm ký mã Entitlements xóa mục nhập để gỡ lỗi và phát hành, xây dựng lại dự án bạn sẽ thấy không có lỗi. Chúc mừng


-1

Tôi đã có cùng một vấn đề, nhưng không có gì viết ở đây làm việc cho tôi. Tuy nhiên, tôi tìm thấy một cách đơn giản làm việc cho tôi. Đây là cách thực hiện:

1) Trong cài đặt xây dựng Dự án và (các) Mục tiêu của bạn, chọn "Không" cho tất cả các cấu hình Cung cấp và chọn "Không ký mã" cho tất cả các danh tính ký mã.

2) Bây giờ, chọn Target của bạn và đi đến cài đặt xây dựng. Trong cài đặt Phát hành danh tính ký mã, chọn "Phân phối iOS" cho "Bất kỳ SDK iOS nào". Và sau đó, trong cài đặt Phát hành hồ sơ cung cấp, hãy chọn hồ sơ phân phối của bạn cho "Bất kỳ SDK iOS nào". Sau đó, cài đặt Phát hành Nhận dạng Ký mã của bạn sẽ tự động thay đổi thành "Phân phối iPhone".

3) Lưu trữ bản dựng của bạn và xác nhận. Bây giờ nó sẽ hoạt động tốt. Đó là nó!

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.