Lỗi xác thực: Gói không hợp lệ. Gói tại 'Chứa tập tin không được phép' Khung '


165

Tôi đang cố gắng gửi một ứng dụng với Xcode6 GM và tôi gặp lỗi này khi xác thực. Ứng dụng có tiện ích mở rộng hành động và khung động được chia sẻ giữa tiện ích mở rộng và chính ứng dụng.

Tôi không có tệp có tên 'Khung' ở bất kỳ đâu trong dự án, vì vậy tôi thực sự không chắc điều này có nghĩa là gì. Có ai nhận được vấn đề này hoặc có bất kỳ ý tưởng?Đây là lỗi trông như thế nào


Làm thế nào về một thư mục có tên Frameworks?
mượn

Có một "nhóm" trong dự án có tên là Framework, nhưng không có thư mục. Tôi đã xóa nó, lưu trữ lại và tôi vẫn nhận được lỗi tương tự.
Mike

Câu trả lời:


308

Hóa ra lỗi liên quan đến việc sử dụng Swift (cả ứng dụng và tiện ích mở rộng đều sử dụng Swift).

Đối với ứng dụng, tôi phải đặt:

Embedded Content Contains Swift Code: YES

và cho phần mở rộng:

Embedded Content Contains Swift Code: NO

Xcode 8 và 9

Có vẻ như điều này đã được đổi tên thành Always Embed Swift Standard Librariestrong Xcode 8 và 9. Vì vậy, đối với ứng dụng:

Always Embed Swift Standard Libraries: YES

và cho phần mở rộng:

Always Embed Swift Standard Libraries: NO

7
Bạn là vị cứu tinh của tôi. "Nhúng" có nghĩa là tiện ích mở rộng trong gói và vì tiện ích mở rộng không chứa nhiều tiện ích mở rộng, nên nó không chứa mã nhanh chóng.
Chris Truman

2
Điều này đã không giải quyết vấn đề cho tôi. Tôi cũng đang sử dụng CocoaPods. Có ai nhìn thấy các vấn đề liên quan đến điều đó? Còn ý tưởng nào khác không?
timschmitz

8
Đừng quên với các tiện ích mở rộng WatchKit để đảm bảo rằng Đường dẫn tìm kiếm Runpath có@executable_path/../../Frameworks
Mr Rogers

1
@MrRogers Đây là những gì đã giải quyết vấn đề của tôi sau khi làm theo câu trả lời. Tôi có một ứng dụng objC với đồng hồ nhanh chóng. Sẽ chạy tốt mà không cần thiết lập nội dung nhúng, tuy nhiên nó bị từ chối từ apple. Đặt nội dung nhúng chính xác, phá vỡ ứng dụng. Con đường tìm kiếm này là những gì đã cố định nó.
Beau Nouvelle

1
Điều này không hiệu quả với tôi, tôi cần phải làm một cái gì đó khác và trên tiện ích mở rộng Target có vấn đề, tôi đã xóa tập lệnh trên "[CP * Embed Pods Frameworks" sau khi nó hoạt động chính xác !!
A. Trejo

122

Giải pháp duy nhất hiệu quả với tôi là thêm Run Script này vào mục tiêu Tiện ích mở rộng ứng dụng:

cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/"
if [[ -d "Frameworks" ]]; then 
    rm -fr Frameworks
fi

nhập mô tả hình ảnh ở đây Nguồn: https://github.com/CocoaPods/CocoaPods/issues/4203


7
Ứng dụng của tôi không sử dụng Swift nên đây cũng là cách khắc phục duy nhất phù hợp với tôi.
Dan Loughney

6
Đáng nói là điều này chỉ cần được thêm vào phần mở rộng, không phải là mục tiêu chính.
TheDuncs

3
Điều này thực sự giải quyết được vấn đề, nhưng nó đưa ra một vấn đề khác là tôi không thể chạy ứng dụng của mình trên trình giả lập trên thiết bị của mình. Nó đưa ra một lỗi: dyld: Library not loaded: ... Image not foundBất cứ ai cũng có thể giúp tôi?
Subkhan Sarif

4
Chỉ có tôi hay là loại điên rồ này?
bkbeachlabs

1
Cố định trên xác nhận .ipa nhưng đâm về cài đặt với thông báo lỗi: dyld: Thư viện không nạp: @ rPath / AFNetworking.framework / AFNetworking tham chiếu từ: / var / container / Bundle / Application / .... Lý do: không tìm thấy hình ảnh
Aleem

45

Vì vậy, 3 bước để khắc phục điều này từ cài đặt bản dựng

  1. Ứng dụng container: Embedded Content Contains Swift Code: YES
  2. Sự mở rộng: Embedded Content Contains Swift Code: NO
  3. Tiện ích mở rộng: Đường dẫn tìm kiếm Runpath = @executable_path/../../Frameworks

2
Container vs Tiện ích mở rộng, tôi mới sử dụng Xcode. đó là ở đâu, vỏ ca cao mở rộng? hoặc hai thứ này nằm ở đâu?
Serge Pedroza

16

Trong trường hợp của tôi, tôi vừa nâng cấp lên CocoaPods 1.0.1 và đây có vẻ là một lỗi mới.

Bản cập nhật Pod thêm một tập lệnh chạy vào mục tiêu của Tiện ích mở rộng của tôi để tạo thư mục Khung. Tôi đã tìm thấy nó khi tôi chuẩn bị thêm tập lệnh chạy của @ Roman để xóa nó.

Giải pháp là xóa tập lệnh này khỏi giai đoạn xây dựng tiện ích mở rộng của tôi. Đây là cái cần thiết để đi ...

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


7
Giải quyết nó cho tôi! Một lần nữa, Cốc Cốc làm tôi mất hơn một giờ cố gắng tìm ra điều gì sai. Tôi có một mối quan hệ yêu và ghét nghiêm trọng với sản phẩm đó.
fguchelaar

2
Nâng cấp Cocoapods để 1.1.0.rc.2giải quyết vấn đề cho tôi.
Otávio

1
Việc xóa các Khung công tác nhúng trong các Giai đoạn xây dựng của bàn phím mở rộng hoạt động với tôi! Tôi đang sử dụng Xcode 8 và CocoaPods v1.0.1. Cảm ơn!
Nhà máy bão

13

Xóa mọi giai đoạn xây dựng cho tiện ích mở rộng của bạn cóembed từ trong tiêu đề.

Ngoài ra:

  • Nội dung nhúng chứa mã Swift phải được đặt thành Yescho mục tiêu mở rộng.

11

Không có câu trả lời nào ở trên làm việc cho tôi. Điều này là do lỗi không phải do ứng dụng gốc hoặc do tiện ích mở rộng. Thay vào đó, một trong những thư viện được liên kết đã có lỗi.

Để xác nhận, trước tiên, lưu trữ bằng Xcode, sau đó sử dụng Trình tổ chức, chọn mục nhập và định vị bằng Hiển thị trong Trình tìm kiếm. Điều này sẽ hiển thị các .xcarchivetập tin.

Chọn tệp đó và chọn "Hiển thị nội dung gói".

Chọn .app trong thư mục Sản phẩm / Ứng dụng và chọn lại "Hiển thị nội dung gói".

Xác định vị trí mô-đun vi phạm trong thư mục Khung. Ví dụ: nếu lỗi là:

ERROR ITMS-90206: "Invalid Bundle. The bundle at 'MyApp.app/Frameworks/MyLib.framework' contains disallowed file 'Frameworks'."

Sau đó, Frameworks/MyLib.frameworksau đây có thể sẽ được hiển thị:

../Frameworks/libswiftContacts.dylib
../Frameworks/libswiftCore.dylib
../Frameworks/libswiftCoreData.dylib
../Frameworks/libswiftCoreGraphics.dylib
../Frameworks/libswiftCoreImage.dylib
../Frameworks/libswiftCoreLocation.dylib
../Frameworks/libswiftDarwin.dylib
../Frameworks/libswiftDispatch.dylib
../Frameworks/libswiftFoundation.dylib
../Frameworks/libswiftLocalAuthentication.dylib
../Frameworks/libswiftObjectiveC.dylib
../Frameworks/libswiftPassKit.dylib
../Frameworks/libswiftUIKit.dylib
../Frameworks/libswiftWebKit.dylib

Chúng có mặt vì thư viện được liên kết - hoặc mô-đun - mà ứng dụng mẹ bao gồm có EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;

Xác định vị trí mô-đun phụ thuộc trong Xcode và cập nhật cờ:

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

Lưu ý rằng đã khắc phục vấn đề này, ứng dụng vẫn có thể bị từ chối với một email giải thích từ iTunes Store:

Invalid Swift Support - The Watch OS application has Swift libraries at both...

Một lần nữa điều này trở lại với EMBEDDED_CONTENT_CONTAINS_SWIFTcờ. Đảm bảo rằng chỉ có ứng dụng gốc có cài đặt này YES. Cả ứng dụng và tiện ích mở rộng WatchKit đều phải đặt cờ này thành NO. Đây là chi tiết trong câu trả lời của @ Mike ở trên.


10

Trong trường hợp của tôi, có một thư viện "Blockly" của Thư viện Cốc Cốc chỉ định Có cho "Luôn nhúng Thư viện Chuẩn Swift". Sau khi thực hiện KHÔNG cho tùy chọn, nó đã hoạt động.nhập mô tả hình ảnh ở đây


9

Trong trường hợp của tôi, giải pháp là xóa khung công tác của tôi khỏi Binaries nhúng của tiện ích mở rộng của tôi và thêm nó vào Thư viện và Khung liên kết của tiện ích mở rộng của tôi. (Cả hai có thể được tìm thấy trong tab Chung của tiện ích mở rộng.)


7

Nếu cả hai tập lệnh Embedded Frameworksscript của Roman đều tồn tại trong cùng một mục tiêu.

Vui lòng kiểm tra xem các Khung công tác nhúng có nằm trước khung khác không. Nếu không, chỉ cần di chuyển kịch bản của Roman đến cuối cùng.


bạn thật tuyệt vời @Reeonce Zeng, hãy cứu lấy ngày của tôi!
mgyky

Tôi nên giữ cả hai kịch bản ở đó hay chỉ phần cuối? "$ {SRCROOT} / Pods / Tệp hỗ trợ mục tiêu / Pods-Orsys WatchKit Tiện ích mở rộng / Pods-Orsys WatchKit Extension-frameworks.sh" cd "$ {CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_" ]; sau đó rm

@stack, bạn nên thêm một giai đoạn tập lệnh chạy mới và điền vào: `cd" $ {CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_FOLDER_PATH} / "if [[-d" Frameworks "]]; sau đó rm -fr Frameworks fi `
Reeonce Zeng

Bạn có ý nghĩa gì khi chạy tập lệnh mới? chúng tôi đã có một kịch bản ở đó. đồng ý ? thay thế tập lệnh cũ, tôi có nên chạy một lần dự án bằng cách thay thế văn bản của bạn. Tôi có cần chọn tùy chọn "chạy tập lệnh khi cài đặt chương trình" không?

làm ơn giúp tôi thêm một chút Tôi đã nhận được lỗi cho phần mở rộng wathckit. Trong dự án mở rộng bộ đồng hồ của tôi, không có tùy chọn "menu / appex chứa không được phép ..." trong các dự án của tôi. tôi có thể tìm thấy nó ở đâu? Tôi chỉ có "khung pod nhúng" và "khung sao chép pod". Xin vui lòng giúp đỡ.

6

Tôi không thể tìm thấy bất kỳ cài đặt nào Embedded Content Contains Swift Codenhưng tôi có thể tìm thấy cài đặt Always Embed Swift Standard Librariesvà đặt cài đặt này thành KHÔNG cho khung của tôi đã khắc phục vấn đề này.


4
  1. Ứng dụng Container: Cài đặt bản dựng -> Nội dung được nhúng chứa Mã Swift:
  2. Tiện ích mở rộng: Cài đặt bản dựng -> Nội dung được nhúng chứa mã Swift: KHÔNG
  3. Tiện ích mở rộng: Giai đoạn xây dựng -> đã thêm Run Script sau vào

cd "$ {CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_FOLDER_PATH} /" nếu [[-d "Khung"]]; sau đó rm -fr Frameworks fi

  1. (quan trọng) Tiện ích mở rộng: Giai đoạn xây dựng -> di chuyển Run Script đến lần cuối (sau khi kịch bản nhúng Pods Frameworks)

"Đến người cuối cùng" là phần quan trọng đối với tôi, cảm ơn.
Andy Obusek

3

Nếu bạn đang sử dụng CocoaPods, tôi sẽ xem xét xóa giai đoạn xây dựng khung nhúng trên mục tiêu có vấn đề (phần mở rộng), điều này đã khắc phục vấn đề cho tôi.


2

Tôi đã nhận được cùng một lỗi, và đó là vì tôi đã sao chép khung công tác vào gói tiện ích mở rộng. Khi nó bật ra, các khung được sử dụng bởi tiện ích mở rộng nên được sao chép vào gói Ứng dụng chính và chỉ được liên kết trong cài đặt xây dựng tiện ích mở rộng (không được sao chép). Hãy chắc chắn có đường dẫn tìm kiếm '@executable_path /../../ Frameworks' trong bản dựng tiện ích mở rộng. Tôi nghĩ rằng đường dẫn đã được thêm vào tự động bởi XCode 10.


1

Tôi đã tìm thấy rất nhiều câu hỏi như thế này và không có câu hỏi nào giúp tôi khắc phục vấn đề của mình, vì vậy hy vọng điều này có thể giúp được ai đó.

Tôi đang tạo một ứng dụng có tiện ích mở rộng Ý định (cho các phím tắt Siri) và tôi đang sử dụng khung cho mã được chia sẻ giữa tiện ích mở rộng và ứng dụng của tôi, theo khuyến nghị của Apple.

Tôi đã thêm khung của mình vào tiện ích mở rộng của mình trong phần "Khung và thư viện" trong cài đặt "Chung" cho mục tiêu. Khi bạn thêm một khung ở đây, có hai cột. Một người nói tên của khung và cái còn lại có tiêu đề "Nhúng". Tôi không có gì hiển thị trong cột "Nhúng" vì vậy tôi nghĩ điều đó là tốt, nhưng tôi phải chọn một cách rõ ràng tùy chọn "Không nhúng" cho cột đó cho khung của mình. Khi tôi làm điều đó và lưu trữ trong Xcode, tôi có thể thấy trong quá trình xác thực rằng khung không được liệt kê trong nội dung ipa của tôi dưới mỗi mục tiêu nữa, nhưng chỉ một lần và cuối cùng xác thực đã thành công.


0

Tôi đã gặp vấn đề này lần đầu tiên với XCode 7.1.1 cho ứng dụng của tôi có Tiện ích mở rộng hôm nay (không có Swift trong dự án của tôi). Kịch bản ( https://github.com/CocoaPods/CocoaPods/issues/4203 ) không hoạt động với tôi.

Hạ cấp cocoapods xuống phiên bản 0.39.0.beta.3, chạy pod installvà sau đó lưu trữ lại đã giải quyết vấn đề.


0

Tôi đã nhận được cùng một lỗi, cùng với một

Lỗi lồng không được phép

Vấn đề của tôi là với SquareReaderSDK.frameworkcụ thể nhưng tôi đã phải thêm một tập lệnh chạy mới theo hướng dẫn của họ:

FRAMEWORKS="${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}"
"${FRAMEWORKS}/SquareReaderSDK.framework/setup"

0

Không có Cài đặt bản dựng nào được liệt kê ở đây giải quyết vấn đề này cho tôi. Tuy nhiên, tôi đã làm điều này hoạt động sau khi chuyển một số khung từ "Các nhị phân nhúng" sang "Các thư viện và khung liên kết".

Có vẻ như ứng dụng chính của tôi và một trong các khung tùy chỉnh của tôi có cùng phụ thuộc khung trong cả hai và dường như là Không Không nhưng việc chuyển nó trong ứng dụng chính của tôi từ khu vực Nhúng sang khu vực được liên kết cho phép tôi tải lên ứng dụng thành công với không có lỗi.

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.