IPA: nó là gì, cấu trúc tệp và nguyên lý hoạt động

Tác giả: IT Sectr Đã đăng: 2026-04-15 Thời gian đọc: 8 phút

IPA (iOS App Store Package) là định dạng tệp lưu trữ để phân phối ứng dụng trên iOS. Mọi ứng dụng đến được App Store đều trải qua định dạng IPA: nhà phát triển xây dựng dự án, ký và tải IPA lên App Store Connect. Theo Apple Developer Documentation, 2026, định dạng IPA dựa trên ZIP và chứa tệp Mach-O thực thi, tài nguyên và siêu dữ liệu chữ ký.

Những điểm chính

  • IPA là định dạng lưu trữ để phân phối ứng dụng iOS qua App Store và cài đặt ad-hoc.
  • Cấu trúc bao gồm tệp thực thi Mach-O đã ký, tài nguyên và Provisioning Profile.
  • Chữ ký là bắt buộc: nếu không có chứng chỉ và hồ sơ hợp lệ, IPA sẽ không được cài đặt.
  • Xây dựng được thực hiện qua Xcode với hỗ trợ các lược đồ khác nhau: Debug, Release, Ad-hoc, Enterprise.
  • Kiến trúc — IPA hiện đại chứa nhị phân arm64, không hỗ trợ thiết bị 32 bit.

IPA là gì và nó được sử dụng để làm gì

IPA (iOS App Store Package) là định dạng gói để phân phối ứng dụng trên nền tảng Apple. Giống như APK, IPA về mặt kỹ thuật là một kho lưu trữ ZIP, nhưng với cấu trúc riêng do các yêu cầu bảo mật và chữ ký của iOS quy định.

Lịch sử của định dạng

Định dạng IPA xuất hiện cùng với iPhone OS 2.0 vào năm 2008 và App Store. Nó dựa trên định dạng gói .app từ macOS, được đóng gói trong ZIP để giảm kích thước khi truyền. Kể từ đó, cấu trúc IPA không có thay đổi lớn — chỉ có các lược đồ chữ ký và siêu dữ liệu phát triển.

Trường hợp sử dụng

App Store — kênh chính. Phân phối Ad-hoc — để kiểm tra trên một số lượng thiết bị giới hạn (tối đa 100). Phân phối Enterprise — cho ứng dụng doanh nghiệp mà không cần xuất bản trên cửa hàng. Nhà phát triển cũng sử dụng IPA để kiểm tra trên thiết bị thực qua Xcode.

Cấu trúc bên trong của tệp IPA

Cấu trúc bên trong của IPA là một kho lưu trữ ZIP chứa thư mục Payload với gói .app và siêu dữ liệu.

Tệp/Thư mụcMục đích
Payload/Thư mục gốc chứa gói .app
Payload/App.app/Gói ứng dụng: tệp thực thi, tài nguyên, nib/storyboard
Payload/App.app/Info.plistSiêu dữ liệu: bundle ID, phiên bản, quyền
Payload/App.app/embedded.mobileprovisionProvisioning Profile để cài đặt
iTunesMetadata.plistSiêu dữ liệu iTunes (tùy chọn)
META-INF/Chữ ký và hàm băm để xác minh

Gói .app

Bên trong thư mục Payload là gói ứng dụng với phần mở rộng .app. Đây không phải là tệp mà là một thư mục mà iOS nhận dạng là ứng dụng. Bên trong: tệp thực thi Mach-O (tên trùng với tên gói), Info.plist, tài nguyên, hình ảnh và chuỗi bản địa hóa.

Tệp thực thi Mach-O

Mã nguồn bằng Swift hoặc Objective-C được biên dịch thành mã máy ở định dạng Mach-O (Mach Object). Tệp chứa các phân đoạn __TEXT (mã), __DATA (dữ liệu) và __LINKEDIT (siêu dữ liệu liên kết). IPA hiện đại chỉ chứa kiến trúc arm64 64 bit.

Quy trình xây dựng IPA qua Xcode

Xcode tự động hóa việc xây dựng IPA: từ biên dịch mã nguồn đến tạo kho lưu trữ đã ký sẵn sàng để tải lên App Store Connect.

Lược đồ xây dựng

Debug — để phát triển, không tối ưu hóa. Release — để xuất bản, với tối ưu hóa trình biên dịch. Mỗi lược đồ xác định cờ biên dịch, ký mã và entitlements. Xcode tạo Kho lưu trữ (Archive) qua Product → Archive.

objective-c
// Info.plist — siêu dữ liệu cơ bản của ứng dụng
<key>CFBundleName</key>
<string>MyApp</string>
<key>CFBundleIdentifier</key>
<string>com.example.myapp</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>

Kiến trúc xây dựng

Xcode biên dịch mỗi tệp .swift hoặc .m thành tệp đối tượng (.o), sau đó liên kết chúng thành một nhị phân Mach-O duy nhất. Tài nguyên (hình ảnh, XIB, storyboard) được xử lý riêng: storyboard được biên dịch sang định dạng nhị phân .storyboardc, hình ảnh được tối ưu hóa trong Asset Catalog (.car).

Ký IPA và Provisioning Profile

Chữ ký là khía cạnh phức tạp nhất của IPA. Apple yêu cầu chữ ký số cho bất kỳ ứng dụng nào chạy trên thiết bị thực. Hệ thống xác minh chứng chỉ nhà phát triển, entitlements và sự tuân thủ Provisioning Profile.

Thành phần chữ ký

Chứng chỉ (Development hoặc Distribution) — xác thực danh tính nhà phát triển. Provisioning Profile — liên kết chứng chỉ, bundle ID và danh sách thiết bị được phép (cho ad-hoc). Entitlements — quyền của ứng dụng (thông báo push, iCloud, App Groups).

Quy trình ký

Xcode ký từng thư viện và framework bên trong gói .app, sau đó ký chính gói đó. IPA cuối cùng được ký ở cấp độ kho lưu trữ ZIP. Apple xác minh tất cả các cấp chữ ký trong quá trình cài đặt. iOS sẽ không khởi chạy ứng dụng nếu ít nhất một thành phần có chữ ký không hợp lệ.

swift
// Xác minh chữ ký qua Security framework
import Security

func checkSignature() -> Bool {
    let url = Bundle.main.bundleURL
    var staticCode: SecStaticCode?

    guard SecStaticCodeCreateWithPath(
        url as CFURL,
        [], &staticCode
    ) == errSecSuccess else {
        return false
    }
    return true
}

Xuất bản IPA lên App Store Connect

App Store Connect là nền tảng của Apple để quản lý xuất bản ứng dụng. Tải IPA lên được thực hiện qua Xcode Organizer, Transporter hoặc dòng lệnh bằng xcrun altool.

Quy trình tải lên

Sau khi tạo kho lưu trữ, Xcode cung cấp Distribute App với lựa chọn phương thức: App Store Connect, Ad-hoc, Enterprise hoặc Development. Chọn App Store Connect, nhà phát triển chỉ định nhóm và xác nhận tải lên. Xcode xác minh chữ ký, gửi IPA đến máy chủ Apple và trả về trạng thái xử lý.

Dòng lệnh

Cho CI/CD, sử dụng xcrun altool hoặc notarytool mới hơn. Apple yêu cầu công chứng cho ứng dụng macOS; cho iOS bước này là tùy chọn nhưng được khuyến nghị. xcodebuild -exportArchive tạo IPA đã ký sẵn sàng để tải lên.

Apple kiểm tra mỗi IPA để tìm mã độc, API riêng tư và tuân thủ App Store Review Guidelines. Quy trình xem xét mất từ 1 giờ đến 2 ngày.

App Thinning: tối ưu hóa IPA cho thiết bị

Khi tải IPA lên App Store Connect, Apple áp dụng App Thinning — công nghệ tối ưu hóa nhị phân cho thiết bị cụ thể. Slicing loại bỏ tài nguyên cho độ phân giải và kiến trúc không được hỗ trợ. On-Demand Resources cho phép tải các phần của ứng dụng (cấp độ trò chơi, video) chỉ theo yêu cầu của người dùng. Bitcode là biểu diễn trung gian mà Apple có thể biên dịch lại cho kiến trúc mới mà không cần sự tham gia của nhà phát triển.

App Store cũng kiểm tra tuân thủ IPA với yêu cầu Sandbox: ứng dụng không được truy cập dữ liệu của ứng dụng khác, hệ thống tệp bên ngoài vùng chứa của nó hoặc chức năng phần cứng mà không có sự cho phép rõ ràng của người dùng.

Kiểm tra IPA qua TestFlight

TestFlight là dịch vụ chính thức của Apple để thử nghiệm beta ứng dụng. Nhà phát triển tải IPA lên App Store Connect và mời người thử nghiệm qua email hoặc liên kết công khai.

Thử nghiệm nội bộ và bên ngoài

Internal Testing — tối đa 100 thành viên trong nhóm phát triển. Không yêu cầu đánh giá của Apple. External Testing — tối đa 10.000 người thử nghiệm, yêu cầu vượt qua Beta App Review. TestFlight tự động phân phối bản dựng cho người thử nghiệm và thu thập phân tích.

Giới hạn của TestFlight

Bản dựng có sẵn để thử nghiệm trong 90 ngày sau khi tải lên. TestFlight hỗ trợ tối đa 100 bản dựng đang hoạt động cùng lúc. Mỗi người thử nghiệm có thể cài đặt tối đa 30 ứng dụng cùng một lúc. Crashlytics tích hợp với TestFlight để thu thập báo cáo sự cố và lỗi không nghiêm trọng.

IPA và Tích hợp liên tục

Xây dựng IPA trong môi trường CI yêu cầu trình chạy macOS. GitHub Actions, GitLab CI và Bitrise cung cấp môi trường macOS cho bản dựng iOS. Fastlane lane `build_app` tự động hóa toàn bộ chu trình: lưu trữ, ký, xuất IPA và tải lên TestFlight. Để quản lý chứng chỉ và hồ sơ, sử dụng Match — công cụ Fastlane lưu trữ chữ ký trong kho Git mã hóa.

Các vấn đề điển hình với IPA

Các nhà phát triển gặp phải một số lỗi đặc trưng khi xây dựng và ký IPA. Hầu hết liên quan đến cấu hình không chính xác của chứng chỉ và hồ sơ.

Lỗi chữ ký: No matching provisioning profile found

Xcode không tìm thấy Provisioning Profile khớp với bundle ID và chứng chỉ. Giải pháp — tải hồ sơ hiện tại trong Xcode Accounts → Download Manual Profiles hoặc sử dụng Automatic Signing.

ITMS-90125: The binary is invalid

Lỗi này xảy ra khi tải IPA với kiến trúc không hợp lệ. IPA hiện đại chỉ nên chứa arm64. Sự hiện diện của i386 hoặc x86_64 trong nhị phân gây ra từ chối. Giải pháp — kiểm tra kiến trúc trong Build Settings và loại trừ kiến trúc trình mô phỏng.

Invalid Bundle Structure: The bundle is missing the required .app bundle

IPA không chứa cấu trúc Payload/App.app chính xác. Apple mong đợi hệ thống phân cấp chính xác. Giải pháp — xác minh kho lưu trữ bao gồm thư mục Payload với một gói .app, không phải danh sách tệp phẳng.

Phân phối IPA không qua App Store

Để phân phối doanh nghiệp, sử dụng chương trình Enterprise của Apple ($299/năm). IPA được ký bằng chứng chỉ Enterprise và có thể được cài đặt trên bất kỳ thiết bị nào của công ty mà không giới hạn số lượng. Phân phối Ad-hoc bị giới hạn 100 thiết bị cho mỗi tài khoản nhà phát triển ($99/năm). Hệ thống MDM (Quản lý thiết bị di động) như Jamf và Microsoft Intune hỗ trợ cài đặt hàng loạt IPA Enterprise.

Câu hỏi thường gặp

IPA khác APK như thế nào?

IPA sử dụng định dạng thực thi Mach-O thay vì DEX, yêu cầu Provisioning Profile để cài đặt và trải qua quá trình xem xét nghiêm ngặt của App Store. APK, không giống như IPA, có thể được cài đặt trực tiếp mà không qua trung gian (sideloading).

Có thể xây dựng IPA trên Windows không?

Không, xây dựng IPA yêu cầu Xcode và các công cụ của Apple, chỉ khả dụng trên macOS. Giải pháp thay thế: máy chủ macOS từ xa (Mac mini, AWS Mac) hoặc dịch vụ CI đám mây (GitHub Actions với trình chạy macOS).

Một IPA điển hình nặng bao nhiêu?

Ứng dụng đơn giản — 5–30 MB. Ứng dụng có độ phức tạp trung bình — 30–150 MB. Trò chơi có thể đạt tới 4 GB. Apple giới hạn kích thước tải xuống qua mạng di động ở mức 200 MB, nhưng người dùng có thể tải xuống qua Wi-Fi.

Làm thế nào để cài đặt IPA không qua App Store?

Để cài đặt ad-hoc, sử dụng Xcode hoặc Apple Configurator. Ứng dụng Enterprise được phân phối qua máy chủ nội bộ với manifest.plist. Người dùng thông thường không thể cài đặt IPA mà không jailbreak hoặc TestFlight.

IPA mỏng (thin) và IPA béo (fat) là gì?

Fat IPA chứa nhiều kiến trúc (arm64 + x86_64) cho bản dựng phổ quát. Thin IPA chỉ chứa một kiến trúc cho một thiết bị cụ thể. Apple chỉ chấp nhận thin IPA để xuất bản — nhị phân fat bị từ chối.

Tóm tắt

  • IPA là định dạng phân phối ứng dụng iOS dựa trên ZIP với tệp thực thi Mach-O.
  • Cấu trúc bao gồm gói Payload/.app, Info.plist, chữ ký và Provisioning Profile.
  • Xây dựng được thực hiện qua Xcode bằng cách biên dịch Swift/Objective-C thành mã máy arm64.
  • Chữ ký là bắt buộc: chứng chỉ + Provisioning Profile + entitlements được iOS xác minh trong quá trình cài đặt.
  • Xuất bản thông qua App Store Connect với kiểm tra App Store Review Guidelines.
  • TestFlight là công cụ thử nghiệm beta chính thức cho tối đa 10.000 người thử nghiệm.
  • Giới hạn: chỉ xây dựng trên macOS, chữ ký bắt buộc, kích thước tối đa 4 GB.

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm