Làm cách nào tôi có thể triển khai ứng dụng iPhone từ Xcode sang thiết bị iPhone thật?


157

Làm cách nào tôi có thể triển khai ứng dụng iPhone từ Xcode sang thiết bị iPhone thật mà không cần chứng chỉ Apple 99 USD?


Xem câu trả lời này cho một câu hỏi tôi đã hỏi trước đó để có hướng dẫn rất tốt về cách đặt nó trên iPhone đã jailbreak của bạn.
Dan Walker


2
Xcode 7 hiện đã cung cấp miễn phí nên không cần đăng ký Tài khoản nhà phát triển Apple để kiểm tra ứng dụng trên thiết bị thực. Xem câu trả lời này để biết thêm chi tiết.
Suragch

Câu trả lời:


56

Có vẻ như ứng dụng không được ký. Tải xuống ldid từ Cydia và sau đó sử dụng nó như vậy:ldid -S /Applications/AccelerometerGraph.app/AccelerometerGraph

Cũng chắc chắn rằng nhị phân được đánh dấu là thực thi: chmod +x /Applications/AccelerometerGraph.app/AccelerometerGraph


3
Có, bạn sẽ cần bẻ khóa thiết bị của mình để phương pháp này hoạt động. (rõ ràng)
esqew

Làm thế nào để bạn khởi chạy lệnh ldid -S ...? Bạn có cần một giao diện điều khiển SSH cho điều đó? Có cách nào miễn phí để có được ứng dụng khách SSH trên iPhone đã jailbreak không?
Dan Leahu

tanderson: có một gói ldid trong Cydia và bạn có thể biên dịch một gói cho OS X
rpetrich

rpetrich Tôi tin rằng câu hỏi của anh ấy là làm thế nào để gõ và sử dụng lệnh, chứ không phải làm thế nào để có được gói. @tanderson bạn có thể thông qua Open SSH (và sau đó kết nối với điện thoại từ máy tính để bàn của bạn) hoặc Terminal bên trong chính iPhone. Cả hai ứng dụng đều được tải xuống miễn phí từ Cydia . Với SSH, bạn có lợi thế, bạn cũng có thể sử dụng nó để sao chép ứng dụng của mình vào điện thoại. Nếu bạn làm điều này rất nhiều, hãy chắc chắn kiểm tra các câu trả lời khác - bạn có thể khiến XCode thực hiện tất cả công việc cho bạn nhưng đó là một thủ tục rắc rối để lừa nó thực hiện điều đó.
cregox

92

Tôi đã sử dụng kết hợp hai howtos: Jason'salex's . Với cái thứ hai, chúng ta có lợi thế là có thể gỡ lỗi. Tôi sẽ chỉ sao chép cả hai bên dưới (và đơn giản hóa alex):

Cập nhật tháng 1 năm 2012: tính năng này vẫn hoạt động trên SDK 4.2.1 và iOS 5.0.1 - Tôi vừa thử nghiệm tất cả trên một máy tính và thiết bị mới!


1. Tạo chứng chỉ tự ký

Vá SDK iPhone của bạn để cho phép sử dụng chứng chỉ này:

  1. Khởi chạy Keychain Access.app. Không có mục nào được chọn, từ menu Keychain chọn Trợ lý chứng chỉ, sau đó Tạo chứng chỉ.

    • Tên: Nhà phát triển iPhone
    • Loại chứng chỉ: Ký mã
    • Hãy để tôi ghi đè mặc định:
  2. Nhấp vào Tiếp tục

    • Hiệu lực: 3650 ngày
  3. Nhấp vào Tiếp tục

  4. Trống ra các Email address field.

  5. Nhấp vào Tiếp tục cho đến khi hoàn thành .

    Bạn sẽ thấy "Chứng chỉ gốc này không đáng tin cậy" . Điều này được mong đợi.

  6. Đặt SDK iPhone để cho phép chứng chỉ tự ký được sử dụng:

    sudo /usr/bin/sed -i .bak 's/XCiPhoneOSCodeSignContext/XCCodeSignContext/' /Developer/Platforms/iPhoneOS.platform/Info.plist

    Nếu bạn đã mở Xcode, hãy khởi động lại để thay đổi này có hiệu lực.

Và nếu bạn đang dùng iOS 5, thì đúng là như vậy! Thử ngay bây giờ! Nó có thể không cho phép gỡ lỗi, nhưng ứng dụng sẽ ở đó!

Tôi đã rất ngạc nhiên bởi vì như bạn biết , tôi không biết tất cả những vụ hack đó là gì! Tất cả những gì tôi đã làm là cải thiện một chút những gì tôi tìm thấy ở nơi khác, như tôi đã chỉ.

Vì vậy, vâng, toàn bộ phương pháp không còn hoạt động theo cùng một cách nữa và tôi không thể tìm thấy một phương thức mới ... Ngoại trừ việc này, sử dụng một công cụ có tên Theos nhưng tôi không thể thực hiện toàn bộ quá trình.

Cuối cùng, nếu bạn cần gỡ cài đặt nó vì bất kỳ lý do gì, hãy kiểm tra phần cuối của bài đăng này. Trong trường hợp của tôi, tôi đã phải làm vì tôi không thể hiểu tại sao toàn bộ màu xanh này toàn bộ phương pháp này đã ngừng hoạt động và tôi không thể quan tâm nữa vì chúng tôi đã có giấy phép chờ đợi từ lâu. (Số DUNS Freaking mất quá nhiều thời gian ...)

.

.


.

.

.

2. Kích hoạt Xcode để xây dựng trên thiết bị bẻ khóa

  1. Trên iPhone đã bẻ khóa của bạn, hãy cài đặt ứng dụng AppSync bằng cách thêm nguồn ** http://repo.hackyouriphone.org **

  2. Xóa các yêu cầu SDK cho ký hiệu và quyền lợi (Tôi yêu sed !):

    sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist
  3. Hãy chú ý đếniPhoneOS5.0.sdkmột phần. Ví dụ: nếu bạn sử dụng SDK iOS 4.2, chỉ cần thay thế nó cho phù hợp:

    sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist
  4. Kết luận loại bỏ yêu cầu thông qua vá Xcode. Điều này có nghĩa là chỉnh sửa nhị phân:

    cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
    dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
    printf "\xc3\x26\x00\x00" >> working
    /bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
    /bin/mv working iPhoneOS\ Build\ System\ Support
    chmod a+x iPhoneOS\ Build\ System\ Support
    

    Nếu bạn đã mở Xcode, hãy khởi động lại để thay đổi này (và cuối cùng) có hiệu lực.

  5. Mở "Dự án> Chỉnh sửa cài đặt dự án" (từ menu). Nhấp vào tab "Xây dựng" . Tìm "Danh tính ký mã" và danh mục "Bất kỳ thiết bị iPhoneOS" nào trong danh sách và đặt cả hai vào mục "Không ký mã" :

    văn bản thay thế

    Sau đó, hãy thoải mái hoàn tác bước 3. Ít nhất trong trường hợp của tôi, nó đã ổn.

  6. Đặt Xcode thành ký mã với chứng chỉ tự ký tùy chỉnh của chúng tôi (cách thực hiện đầu tiên). Bước này có thể được bỏ qua nếu bạn không muốn gỡ lỗi:

    mkdir /Developer/iphoneentitlements401
    cd /Developer/iphoneentitlements401
    curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
    mv gen_entitlements.txt gen_entitlements.py
    chmod 777 gen_entitlements.py
    

    Cắm iPhone của bạn vào và mở Xcode. Mở cửa sổ> Sắp xếp. Chọn thiết bị từ danh sách ở phía bên trái và nhấp vào "Sử dụng để phát triển". Bạn sẽ được nhắc đăng nhập trang web cung cấp, nhấp vào hủy bỏ. Đó là để làm cho việc cung cấp hợp pháp dễ dàng hơn, nhưng không làm cho việc cung cấp bất hợp pháp trở nên khó khăn hơn.

    Bây giờ bạn phải làm phần cuối cùng này cho mỗi dự án mới mà bạn thực hiện . Chuyển đến menu Project> New Build Phase> New Run Script Build Phase. Trong cửa sổ, sao chép / dán này:

    export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
    if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
    /Developer/iphoneentitlements401/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
    codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
    fi
    

.

.


.

.

Gỡ cài đặt

Đối với phần 1:

sudo mv -f /Developer/Platforms/iPhoneOS.platform/Info.plist.bak /Developer/Platforms/iPhoneOS.platform/Info.plist

Đối với phần 2:

sudo mv -f /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist.bak /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist
sudo mv -f iPhoneOS\ Build\ System\ Support.original iPhoneOS\ Build\ System\ Support

trong trường hợp bạn đã làm bước 3 thay vì 2, chỉ cần sửa đổi nó cho phù hợp:

sudo mv -f /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist.bak /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist

phần còn lại, chỉ là hoàn nguyên những gì bạn đã làm trên XCode và xóa /Developer/iphoneentitlements401/gen_entitlements.pynếu bạn muốn:

sudo rm -f /Developer/iphoneentitlements401/gen_entitlements.py

Đã thử làm theo các hướng dẫn này, nhưng bây giờ 'Lược đồ' thuộc loại Mac 64 bit của tôi và tôi không còn tùy chọn nào để chạy trình giả lập hoặc iPhone thật nữa, vì vậy tôi thậm chí không thể kiểm tra mã. Tôi đã sử dụng SDK 4.3, không chắc có vấn đề gì không
nosatalian

1
Trên thực tế, cập nhật: sau khi thay đổi SDK cơ sở trong cài đặt dự án từ iphoneos sang iOS 4.3, mọi thứ đều hoạt động. Mặc dù xcode nói 'Lỗi khi khởi chạy chương trình từ xa: không nhận được tác vụ cho quá trình' Tôi có thể khởi chạy ứng dụng bằng cách nhấp vào nó.
nosatalian

1
Tôi nhận được lỗi này: The identity used to sign the executable is no longer valid. ... (0xE8008018) Ngay cả khi tôi đặt 3650 ngày để hết hạn. Có vẻ như chính điện thoại đang kiểm tra.
Stephen

liệu thủ thuật "vá XCode" này có hoạt động trong 4.3.2 hay không hoặc nó sẽ phanh lại
Gabor

1
Điểm 6. Trong trường hợp của tôi, tôi đã phải thay đổi các quyền /Developer/iphoneentitlements401/gen_entitlements.py để người dùng bình thường thực thi nó. Với thủ tục này hoạt động hoàn hảo.
abidibo

43

Cung cấp miễn phí sau Xcode 7

Để kiểm tra ứng dụng của bạn trên thiết bị thực chứ không phải trả phí Nhà phát triển Apple (hoặc bẻ khóa thiết bị của bạn), bạn có thể sử dụng tính năng cung cấp miễn phí mới mà Xcode 7 và iOS 9 hỗ trợ.

Dưới đây là các bước được thực hiện nhiều hơn hoặc ít hơn từ tài liệu (khá tốt, vì vậy hãy đọc nó):

1. Thêm ID Apple của bạn trong Xcode

Chuyển đến XCode> Tùy chọn> tab Tài khoản> Nút Thêm (+)> Thêm ID Apple. Xem các tài liệu để được giúp đỡ nhiều hơn.

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

2. Nhấp vào tab Chung trong Trình điều hướng dự án

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

3. Chọn ID Apple của bạn từ menu bật lên Đội.

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

4. Kết nối thiết bị của bạn và chọn nó trong menu chương trình.

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

5. Nhấp vào nút Khắc phục sự cố

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

Nếu bạn gặp lỗi về tên gói không hợp lệ, hãy đổi nó thành tên duy nhất.

6. Chạy ứng dụng của bạn

Trong Xcode, nhấp vào nút Xây dựng và chạy.

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

7. Tin tưởng nhà phát triển ứng dụng trong cài đặt thiết bị

Sau khi chạy ứng dụng của bạn, bạn sẽ gặp lỗi bảo mật vì ứng dụng bạn muốn chạy không phải từ App Store.

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

Trên thiết bị của bạn , truy cập Cài đặt> Chung> Cấu hình> tên -Apple-ID > Tin tưởng tên -Apple-ID của bạn > Tin cậy.

8. Chạy ứng dụng của bạn trên thiết bị của bạn một lần nữa.

Đó là nó. Bây giờ bạn có thể chạy riêng của bạn (hoặc bất kỳ ứng dụng nào khác mà bạn có mã nguồn) mà không cần phải bỏ ra 99 đô la. Cảm ơn bạn, Apple, cuối cùng đã cho phép điều này.


1
cảm ơn rất nhiều. điều này hoạt động hoàn hảo mà không cần Giấy phép Nhà phát triển Apple trả phí.
kishorer747

Tuy nhiên, điều này có một số vấn đề - bạn chỉ có thể cài đặt tối đa 3 ứng dụng một lần và bạn cần gia hạn chứng chỉ mỗi tuần.
SilverWolf - Tái lập Monica

@seaturtle, cảm ơn đã cập nhật. Cuối cùng tôi đã rút tiền cho giấy phép nhà phát triển vì vậy tôi đã không cập nhật câu trả lời này. Điều đó quá tệ về những hạn chế. Có một số điều về Android đẹp hơn nhiều so với Apple.
Suragch

9

Bạn không thể, nếu bạn đang nói về các ứng dụng được xây dựng với SDK chính thức và triển khai trực tiếp từ xcode.


8

Bạn sẽ phải bẻ khóa thiết bị của bạn.


1
Thực hiện theo phương pháp của @ rpetrich và SSH tệp thực thi vào thư mục Ứng dụng / thiết bị, thiết bị sẽ hoạt động sau khi khởi động lại / khởi động lại.
esqew

6

Có một cách để triển khai các ứng dụng iPhone mà không phải trả tiền cho apple Bạn sẽ phải bẻ khóa thiết bị của mình và làm theo hướng dẫn trong http://www.alexwhittemore.com/?p=398


cũng là một hướng dẫn hoàn hảo, với cách tiếp cận khác với @Dan ... Tôi đã sử dụng cả hai, tho.
cregox

5

Không có gì tôi thấy ở bất cứ đâu cho thấy bạn có thể triển khai quảng cáo cho iPhone thật mà không cần chứng chỉ (trả tiền).


4

Tôi đã đi qua Nhà phát triển Apple tối qua và ở đó trong Chứng chỉ cung cấp tôi đã tìm thấy một cái gì đó như - "Thành viên nhóm ký kết". Tôi nghĩ rằng có một cách để thêm các thành viên trong nhóm vào hồ sơ trả phí. Bạn chỉ có thể yêu cầu Chủ sở hữu Id ứng dụng (trả phí) để thêm bạn làm thành viên nhóm. Tôi không chắc. Vẫn đang tìm kiếm trên đó.


Có, bạn có thể thêm thành viên nhóm. Có giới hạn 200 thiết bị mỗi năm.
cregox

Cawas - Bạn có biết cách thêm thành viên vào id apple không?
Akshay

chúng tôi chỉ nhận được thông báo nếu bạn thêm @ trước tên. Như bạn đã nói, trước tiên bạn phải có Tài khoản thanh toán. Sau đó, nó sẽ thực sự đơn giản vì tôi không thể tìm thấy bất kỳ hướng dẫn nào về cách thực hiện. Tôi không bao giờ tự làm điều đó, tho.
cregox

3

Không, thật dễ dàng để làm điều này. Trong Xcode, đặt Cấu hình hoạt động thành Phát hành. Thay đổi thiết bị từ Trình mô phỏng thành Thiết bị - bất kỳ SDK nào. Nếu bạn muốn xuất trực tiếp sang iPhone, hãy kết nối nó với máy tính của bạn. Nhấn Build và Go. Nếu iPhone của bạn không được kết nối với máy tính của bạn, một thông báo sẽ xuất hiện nói rằng iPhone của bạn không được kết nối.

Nếu điều này áp dụng cho bạn: (iPhone chưa được kết nối)

Chuyển đến thư mục dự án của bạn và sau đó đến thư mục xây dựng bên trong. Chuyển đến thư mục Release-iphoneos và đưa ứng dụng vào trong, kéo và thả vào biểu tượng iTunes. Khi bạn đồng bộ hóa thiết bị iTouch của mình, nó sẽ sao chép nó vào thiết bị của bạn. Nó cũng sẽ hiển thị trong iTunes dưới dạng một ứng dụng cho iPhone.

Hi vọng điêu nay co ich!

PS: Nếu nó nói điều gì đó về chứng chỉ không hợp lệ, chỉ cần nhấp vào dự án trong Xcode, biểu tượng dự án nhỏ trong ngăn xếp tệp ở bên trái và nhấn Apple + I hoặc thực hiện Nhận thông tin từ thanh menu. Nhấp vào Xây dựng ở trên cùng. Trong phần Ký mã, thay đổi Nhận dạng ký mã - Bất kỳ thiết bị hệ điều hành iPhone nào sẽ không được ký.


7
OP không có chứng nhận ký hoặc hồ sơ cung cấp. Các hướng dẫn này dành cho thành viên nếu Chương trình dành cho nhà phát triển iPhone $ 99 nhưng không giải quyết câu hỏi về cách chạy trên thiết bị mà không cần đăng ký chương trình.
cdespinosa

2

Điều này thực sự phụ thuộc vào phiên bản Xcode bạn đang sử dụng vì các phiên bản khác nhau sử dụng các phương pháp khác nhau để triển khai cho iPhone của bạn mà không cần cấu hình cung cấp.

Xcode 3.2.1 là phiên bản tốt và dễ sắp xếp, nhưng chúng tôi cần biết bạn đang sử dụng phiên bản nào.


2

Giải pháp được đăng bởi Cawas cũng hoạt động hoàn hảo với XCode4. Tuy nhiên, có một số thay đổi đối với giao diện người dùng của IDE, vì vậy bạn cần thực hiện một số nghiên cứu để tìm Run Script :)

Trong khung nhìn Project Navigator, nhấp vào mục gốc của dự án, sau đó trong cửa sổ ở giữa, chọn Target, sau đó nhấp vào tab Build Ph Phase và ở dưới cùng bạn sẽ thấy nút Add Build Phase, nhấp và chọn Add Run Script, sau đó dán "Codeign "Kịch bản được đăng bởi Cawas.


1

Không có cách giải quyết. Bạn chỉ có thể quảng cáo các ứng dụng triển khai nếu chúng được đăng ký với thiết bị của bạn. Điều này ngăn bạn xây dựng cửa hàng ứng dụng của riêng bạ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.