아이폰 앱 마이너스 앱 스토어?


199

Mac에서 응용 프로그램을 만들면 앱 스토어를 거치지 않고 iPhone에서 실행할 수있는 방법이 있습니까?

공식 SDK를 사용하여 만든 응용 프로그램을 계속 실행할 수 있다면 iPhone을 탈옥해야하는 것은 중요하지 않습니다. 내가 들어 가지 않는 이유 때문에이 프로그램을 앱 스토어를 통과 할 수 없습니다.


1
Xcode 7부터는 개발자 계정에 가입하거나 기기를 탈옥하지 않고도 연결된 기기에서 앱을 실행할 수 있습니다. 자세한 내용은이 안내서 를 참조하십시오.
Suragch

보관 용 계정을 사용하여 임시 및 엔터프라이즈 응용 프로그램을 배포하는 Mac 응용 프로그램 인 AppBox 를 사용할 수 있습니다 . 그것을 여기에 시도해 github.com/vineetchoudhary/AppBox-iOSAppsWirelessInstallation/...
Vineet Choudhary

답변:


187

공식 개발자 프로그램

표준 iPhone의 경우 개발자 프로그램의 멤버가 되려면 1 년에 미화 99 달러를 지불해야합니다. 그런 다음 adhoc 시스템을 사용하여 최대 100 개의 장치에 응용 프로그램을 설치할 수 있습니다. 개발자 프로그램에는 세부 사항이 있지만 각 디바이스에 대한 UUID를 애플리케이션 패키지에 추가해야합니다. UUID는 App Store에서 제공 하는 Ad Hoc Helper를 사용하여 가장 쉽게 검색 할 수 있습니다 . 이 방법에 대한 자세한 내용 은 iPhone 2.0에서 Craig Hockenberry의 베타 테스트 기사를 참조하십시오.

탈옥 아이폰

탈옥 된 iPhone의 경우 iPhone OS 3.0 에서 AccelerometerGraph 샘플 앱을 사용하여 개인적으로 테스트 한 다음 방법을 사용할 수 있습니다 .

자체 서명 인증서 작성

먼저 자체 서명 된 인증서를 생성하고이 인증서를 사용할 수 있도록 iPhone SDK를 패치해야합니다.

  1. Keychain Access.app를 시작하십시오. 항목을 선택하지 않고 키 체인 메뉴에서 인증 지원을 선택한 다음 인증 작성을 선택하십시오.

    이름 : iPhone 개발자
    인증서 유형 : 코드 서명
    기본값을 무시하겠습니다. 예

  2. 계속을 클릭하십시오

    유효 기간 : 3650 일

  3. 계속을 클릭하십시오

  4. 이메일 주소 필드를 비 웁니다.

  5. 완료 될 때까지 계속을 클릭하십시오.

    "이 루트 인증서를 신뢰할 수 없습니다"가 표시되어야합니다. 이것은 예상됩니다.

  6. 자체 서명 인증서를 사용할 수 있도록 iPhone SDK를 설정하십시오.

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

    Xcode가 열려 있으면 다시 시작하여이 변경 사항을 적용하십시오.

WiFi를 통한 수동 배포

다음 단계는을 요구 openssh하며 uikittools먼저 설치해야합니다. 교환 jasoniphone.local대상 장치의 호스트 이름. SSH를 설치 한 후 사용자 mobileroot사용자 모두 자신의 암호를 설정하십시오 .

Apple의 설치 시스템을 우회하여 시스템 앱으로 휴대 전화에서 응용 프로그램을 수동으로 컴파일하고 설치하려면 :

  1. 프로젝트, 활성 SDK 설정, 장치 및 활성 빌드 구성 설정, 릴리스.

  2. 빌드 및 이동이 아닌 빌드를 사용하여 프로젝트를 정상적으로 컴파일하십시오.

  3. 에서 build/Release-iphoneos디렉토리는 앱 번들이있을 것이다. 선호하는 방법을 사용하여이를 장치의 / Applications로 전송하십시오.

    scp -r AccelerometerGraph.app root@jasoniphone:/Applications/

  4. 새로운 애플리케이션이 설치되었다는 것을 SpringBoard에 알리십시오 :

    ssh mobile@jasoniphone.local uicache

    응용 프로그램을 추가하거나 제거 할 때만 수행해야합니다. 업데이트 된 응용 프로그램을 다시 시작하면됩니다.

개발 과정에서보다 쉽게 ​​작업 할 수 있도록 SSH 키 인증을 설정하고 이러한 추가 단계를 프로젝트의 사용자 정의 빌드 단계로 추가 할 수 있습니다.

나중에 응용 프로그램을 제거하려면 표준 SpringBoard 인터페이스를 통해 제거 할 수 없으며 SSH를 사용하고 SpringBoard를 업데이트해야합니다.

ssh root@jasoniphone.local rm -r /Applications/AccelerometerGraph.app &&
ssh mobile@jasoniphone.local uicache

2
내 빌드하지 않습니다-Xcode는 내가 빌드하려고하자마자 즉시 코드 서명 오류를 발생시킵니다 ...
Devoted

1
패키지가 설치되어 uicache있으면 @ Rev316이 있어야합니다 uikittools.
Jason 날씨

나는 당신을 따르고 있지만이 오류를 만났습니다 : stackoverflow.com/questions/2161877/…
hungbm06

또한 암호를 사용하지 않도록 ssh를 통해 개인 / 공개 키 쌍을 설정하려고합니다.
conradev

2
프로비저닝 프로파일은 어떻습니까? 개발자 프로그램에 가입하지 않고 얻을 수있는 방법이 있습니까?
Teodor Kostov

18

예. iPhone 개발자 프로그램에 가입하고 Apple에 99 달러를 지불하면 최대 100 개의 iOS 장비에서 응용 프로그램을 프로비저닝 할 수 있습니다.


2
설치 제한이 100 인 이유는 무엇입니까?
Marcus Leon

25
따라서 사람들은이를 앱 스토어를 완전히 우회하는 방법으로 사용할 수 없습니다.
willc2

2
그리고 100 개 한도는 현재 보유한 숫자가 아니라 iOS 프로비저닝 포털에서 그해에 등록한 장치 수로 계산됩니다. 따라서 5 개의 장치를 추가 한 다음 5 개를 모두 삭제하면 추가 할 수있는 장치가 95 개 (100 개가 아님)입니다.
Scott C Wilson

1
그러나 개발자 프로그램을 갱신하면 사용한 장치 수가 재설정됩니다.
dgund

1
또한 임시 프로비저닝 프로파일은 3 개월 후에 만료되므로 등록한 제한된 장치 세트 (100)에도 앱을 영구적으로 배포 할 수 없습니다.
Bogatyr

14
  • 앱 구축
  • 크랙 사이트에 업로드
  • (앱이 충분하다면) 크랙 버전이 몇 분 후에 게시되고 모든 사람이 다운로드 할 수 있도록 준비됩니다 ;-)

8

이 게시물 의 도움으로 빠른 배포를 위해 Installous 앱을 통해 설치할 스크립트를 만들었습니다.

# compress application.
/bin/mkdir -p $CONFIGURATION_BUILD_DIR/Payload
/bin/cp -R $CONFIGURATION_BUILD_DIR/MyApp.app $CONFIGURATION_BUILD_DIR/Payload
/bin/cp iTunesCrap/logo_itunes.png $CONFIGURATION_BUILD_DIR/iTunesArtwork
/bin/cp iTunesCrap/iTunesMetadata.plist $CONFIGURATION_BUILD_DIR/iTunesMetadata.plist

cd $CONFIGURATION_BUILD_DIR

# zip up the HelloWorld directory

/usr/bin/zip -r MyApp.ipa Payload iTunesArtwork iTunesMetadata.plist

위에서 언급 한 게시물에서 누락 된 것은 iTunesMetadata입니다. 이것이 없으면 Installous가 앱을 올바르게 설치하지 않습니다. 다음은 iTunesMetadata의 예입니다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>appleId</key>
    <string></string>
    <key>artistId</key>
    <integer>0</integer>
    <key>artistName</key>
    <string>MYCOMPANY</string>
    <key>buy-only</key>
    <true/>
    <key>buyParams</key>
    <string></string>
    <key>copyright</key>
    <string></string>
    <key>drmVersionNumber</key>
    <integer>0</integer>
    <key>fileExtension</key>
    <string>.app</string>
    <key>genre</key>
    <string></string>
    <key>genreId</key>
    <integer>0</integer>
    <key>itemId</key>
    <integer>0</integer>
    <key>itemName</key>
    <string>MYAPP</string>
    <key>kind</key>
    <string>software</string>
    <key>playlistArtistName</key>
    <string>MYCOMPANY</string>
    <key>playlistName</key>
    <string>MYAPP</string>
    <key>price</key>
    <integer>0</integer>
    <key>priceDisplay</key>
    <string>nil</string>
    <key>rating</key>
    <dict>
        <key>content</key>
        <string></string>
        <key>label</key>
        <string>4+</string>
        <key>rank</key>
        <integer>100</integer>
        <key>system</key>
        <string>itunes-games</string>
    </dict>
    <key>releaseDate</key>
    <string>Sunday, December 12, 2010</string>
    <key>s</key>
    <integer>143441</integer>
    <key>softwareIcon57x57URL</key>
    <string></string>
    <key>softwareIconNeedsShine</key>
    <false/>
    <key>softwareSupportedDeviceIds</key>
    <array>
        <integer>1</integer>
    </array>
    <key>softwareVersionBundleId</key>
    <string>com.mycompany.myapp</string>
    <key>softwareVersionExternalIdentifier</key>
    <integer>0</integer>
    <key>softwareVersionExternalIdentifiers</key>
    <array>
        <integer>1466803</integer>
        <integer>1529132</integer>
        <integer>1602608</integer>
        <integer>1651681</integer>
        <integer>1750461</integer>
        <integer>1930253</integer>
        <integer>1961532</integer>
        <integer>1973932</integer>
        <integer>2026202</integer>
        <integer>2526384</integer>
        <integer>2641622</integer>
        <integer>2703653</integer>
    </array>
    <key>vendorId</key>
    <integer>0</integer>
    <key>versionRestrictions</key>
    <integer>0</integer>
</dict>
</plist>

분명히 MyApp의 모든 인스턴스를 앱 이름으로 바꾸고 MyCompany를 회사 이름으로 바꾸십시오.

기본적으로 Installous가 설치된 탈옥 장치에 설치됩니다. 설치가 완료되면 어디서나 설치할 수 있고 회사 웹 사이트에 업로드 한 다음 파일을 장치로 직접 다운로드 한 후 파일을 복사 / 이동할 수 있으므로 배포가 매우 빠릅니다 ~/Documents/Installous/Downloads.


@ToolmakerSteve 의심하지만 지금은 애플 ID를 사용하여 iOS 앱을 무료로 사이드로드 할 수 있지만 필요하지는 않습니다.
Richard J. Ross III

7

곧 Xcode 7을 사용하면 이제 Apple 개발자 라이센스없이 장치에 앱을 설치할 수 있으므로 앱 스토어 를 건너 뛸 수 있으므로 장치를 탈옥 할 필요가 없습니다.

이제 모든 사람이 Apple 기기에서 앱을 얻을 수 있습니다.

Xcode 7 및 Swift는 이제 모든 사람이 더 쉽게 앱을 빌드하고 Apple 장치에서 직접 실행할 수 있도록합니다. Apple ID로 로그인하고 아이디어를 iPad, iPhone 또는 Apple Watch에서 만질 수있는 앱으로 바꾸십시오. Xcode 7 베타를 다운로드하여 지금 바로 사용해보십시오. 프로그램 멤버십이 필요하지 않습니다.

인용 : https://developer.apple.com/xcode/

최신 정보:

XCode 7이 출시되었습니다 :

무료 온 디바이스 개발 이제 누구나 누구나 기기에서 자신의 앱을 무료로 실행하고 테스트 할 수 있습니다. Mac, iPhone, iPad, iPod touch 또는 Apple Watch에서 별도의 비용없이 프로그램을 실행하지 않고도 자신 만의 작품을 실행하고 디버깅 할 수 있습니다. 무료 Apple ID를 Xcode에 입력하기 만하면됩니다. App Store 또는 iTunes에 이미 사용한 것과 동일한 Apple ID를 사용할 수도 있습니다. 앱을 완성한 후에 Apple Developer Program을 통해 App Store에서 앱을 얻을 수 있습니다.

장치 에서 설치 및 실행에 대한 자세한 내용은 장치 에서 앱 시작을 참조하십시오 .


4

탈옥 된 경로로가는 경우 iPhone OS 업데이트로 인해 이러한 앱을 실행하는 기능이 중단 될 수 있습니다 (아마도?). 공식 경로로 가서 99 달러를 지불하면 승인을받습니다. 앱이 클로버되는 것에 대해 걱정할 필요가 없을뿐만 아니라 스토어에서 앱을 출시 할 기회도 있습니다 (선택해야 함).


2

@Jason Weathered에서 설명한 방식으로 앱을 iPhone에 복사 한 후 앱의 "chmod + x"를 확인하십시오. 그렇지 않으면 앱이 실행되지 않습니다.


1

* Xcode 3.2.1iPhone SDK 3.1.2 에서이 작업을 수행하기위한 변경 / 참고 사항

WiFi를 통한 수동 배포

2) Info.plist를 수정 한 후 Xcode를 다시 시작하십시오

3) killall -HUP SpringBoard를 사용하여 "uicache"명령을 찾을 수 없습니다.

그 외에는 이것이 잘 작동하는지 확인할 수 있습니다.

PwnageTool 3.1.4를 사용하는 Mac 사용자는 탈옥 (토렌트를 통한 DL)에 효과적이었습니다.


아 감사합니다 Jason, 잘 기록 된 게시물에 감사드립니다! 나처럼 Jailbreak Nob 용 Cydia의 UIKit 도구 패키지 설치를 언급하고 싶을 수도 있습니다.
Rev316

1

/Developer/Platforms/iPhoneOS.platform/Info.plistApple의 실제 개발 프로비저닝 프로파일을 사용하여 장치에서 실행되는 응용 프로그램 을 패치 한 다음 디버깅하려고하면 작동하지 않을 수 있습니다. 증상은 이상한 오류 메시지 com.apple.debugserver이며 Xcode에서 빌드 할 때 오류없이 번들 식별자를 사용할 수 있습니다. 해결책은 복원하는 것 Info.plist입니다.


0

다른 브라우저에서 설치하려는 경우 Dropbox 계정을 사용하여 임시 및 엔터프라이즈 앱을 배포하는 Mac 응용 프로그램 인 AppBox 를 사용할 수 있습니다 .

https://github.com/vineetchoudhary/AppBox-iOSAppsWirelessInstallation/releases


옵션

IPA 보관 및 업로드

  • 보관할 프로젝트 / 작업 공간을 선택하십시오 -> ipa 작성 -> ipa 업로드 -> 메일 보내기 -> Mac 종료

IPA 만 업로드

  • IPA 파일을 선택하여 ipa- > 메일 보내기 -> Mac업로드 하십시오.

특색

  • 동일한 링크 유지
    • 이 기능은 동일한 번들 식별자로 업로드 된 모든 향후 ipa에 대해 동일한 URL을 유지합니다.
    • 이 옵션을 사용하면 동일한 URL로 이전 빌드를 다운로드 할 수도 있습니다.
  • 자동 이메일 앱 배포 링크
  • 배포 후 자동 종료 Mac
  • 최대 업로드 크기 => Dropbox 계정 저장소와 동일
  • 업로드 된 앱 만료 => Dropbox에서 삭제할 때까지
  • 앱당 설치 수 => 무제한
  • 계기반*

    * 향후 버전에서 사용할 수 있습니다


AppBox와 Diawi

스크린 샷

IPA 업로드

IPA 보관 및 업로드

IPA 업로드

여기에 시도하십시오 https://github.com/vineetchoudhary/AppBox-iOSAppsWirelessInstallation/releases

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.