iPhone App Minus App Store?


199

Macでアプリケーションを作成した場合、App Storeを経由せずにiPhoneで実行する方法はありますか?

公式のSDKを使用して作成されたアプリケーションを実行できる限り、iPhoneをジェイルブレイクする必要があるかどうかは問題ではありません。私が入らない理由のために、私はこのプログラムがアプリストアを通過することはできません。


1
Xcode 7以降、開発者アカウントにサインアップしたり、デバイスを脱獄したりすることなく、接続されたデバイスでアプリを実行できるようになりました。詳細については、このガイドを参照してください。
Suragch、2015年

Dropboxアカウントを使用してアドホックアプリやエンタープライズアプリを配布するMacアプリケーションであるAppBoxを使用できます。それをここで試してみてくださいgithub.com/vineetchoudhary/AppBox-iOSAppsWirelessInstallation/...
Vineet Choudharyさん

回答:


187

公式開発者プログラム

標準のiPhoneの場合、開発者プログラムのメンバーになるには年額99米ドルを支払う必要があります。その後、アドホックシステムを使用して、アプリケーションを最大100台のデバイスにインストールできます。開発者プログラムには詳細がありますが、各デバイスのUUIDをアプリケーションパッケージに追加する必要があります。UUIDは、App Storeから入手できるAd Hoc Helperを使用して最も簡単に取得できます。この方法の詳細については、Craig HockenberryのiPhone 2.0でベータテストの記事を参照してください。

脱獄iPhone

ジェイルブレイクされた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. プロジェクト、Set Active SDK、Device、Set Active Build Configuration、Release。

  2. プロジェクトを通常どおりにコンパイルします(Build&GoではなくBuildを使用)。

  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
Mineはビルドされません
-Xcodeは

1
パッケージがインストールされuicacheている場合は、@ Rev316 が存在するはずですuikittools
Jasonは、

私はあなたに従うんだが、このエラー会っ:stackoverflow.com/questions/2161877/...
hungbm06を

また、あなたは物事がパスワードなしにするためにSSH経由で公開鍵/秘密鍵のペアを設定したい
conradev

2
プロビジョニングプロファイルはどうですか?開発者プログラムに登録せずに入手する方法はありますか?
Teodor Kostov

18

はい。iPhoneDeveloper Programに参加し、Appleに$ 99を支払えば、最大100台のiOSデバイスにアプリケーションをプロビジョニングできます。


2
インストール制限が100あるのはなぜですか?
マーカスレオン

25
そのため、App Storeを完全にバイパスする方法としてこれを使用することはできません。
willc2 2009年

2
100の制限は、iOSプロビジョニングポータルでその年に登録したデバイスの数として数えられ、現在の数ではありません。したがって、5つのデバイスを追加してから5つすべてを削除すると、追加できるデバイスの数は95(100ではない)になります。
Scott C Wilson、

1
ただし、デベロッパープログラムを更新すると、使用するデバイスの数はリセットされます。
2011

1
また、アドホックプロビジョニングプロファイルは3か月で有効期限が切れるため、登録した限られた(100)台のデバイスにアプリを永続的に配布することはできません。
Bogatyr 2012年

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がインストールされている任意のジェイルブレイクされたデバイスにインストールされます。セットアップ後は、どこからでもインストールでき、会社のWebサイトにアップロードし、ファイルをデバイスに直接ダウンロードして、にコピー/移動するだけなので、導入が非常に高速になります~/Documents/Installous/Downloads


@ToolmakerSteve私はそれを疑っていますが、今ではiOSアプリを任意のApple IDで無料でサイドロードできるので、その必要性はないと思います。
リチャードJ.ロス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を支払います。アプリが破壊されることを心配する必要がないことに加えて、ストアでアプリをリリースする機会(選択した場合)も得られます。



1

*これを機能させるための変更/メモ Xcode 3.2.1およびiPhone SDK 3.1.2で

WiFiを介した手動展開

2)Info.plistを変更した後は必ずXcodeを再起動してください

3)killall -HUP SpringBoardを使用すると、「uicache」コマンドが見つかりませんでした。

それ以外は、私はこれがうまく機能することを確認できます。

Macユーザーは、PwnageTool 3.1.4を使用して、脱獄(torrentを介したDL)に優れた働きをしました。


ああ。ジェイソンに感謝します、十分に文書化された投稿に感謝します!私のようなジェイルブレイクnubsのためのCydiaのUIKitツールパッケージのインストールについて言及したいかもしれません。
Rev316、2010年

1

パッチ/Developer/Platforms/iPhoneOS.platform/Info.plistを適用してから、Appleの実際の開発プロビジョニングプロファイルを使用して、デバイス上で実行されているアプリケーションをデバッグしようとすると、おそらく機能しません。症状はからの奇妙なエラーメッセージでcom.apple.debugserverあり、Xcodeでビルドするときにエラーが発生することなく、任意のバンドル識別子を使用できます。解決策は、復元することInfo.plistです。


0

他のブラウザからインストールする場合は、ドロップボックスアカウントを使用してアドホックアプリやエンタープライズアプリを配布する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.