【问题标题】:iPhone App Minus App Store?iPhone App 减去 App Store?
【发布时间】:2010-09-07 10:31:14
【问题描述】:

如果我在我的 Mac 上创建一个应用程序,有什么方法可以让它在 iPhone 上运行而无需通过应用商店?

iPhone是否必须越狱并不重要,只要我仍然可以运行使用官方SDK创建的应用程序即可。由于我不会进入的原因,我不能让这个程序通过应用商店。

【问题讨论】:

标签: ios iphone


【解决方案1】:

官方开发者计划

对于标准 iPhone,您需要每年支付 99 美元才能成为开发者计划的成员。然后,您可以使用 adhoc 系统将您的应用程序安装到多达 100 台设备上。开发人员程序有详细信息,但它涉及将每个设备的 UUID 添加到您的应用程序包中。使用 App Store 提供的Ad Hoc Helper 可以最轻松地检索 UUID。有关此方法的更多详细信息,请参阅 Craig Hockenberry 的 Beta testing on iPhone 2.0 文章

越狱的 iPhone

对于越狱的 iPhone,您可以使用我在 iPhone OS 3.0 上使用AccelerometerGraph 示例应用亲自测试过的以下方法。

创建自签名证书

首先,您需要创建一个自签名证书并修补您的 iPhone SDK 以允许使用此证书:

  1. 启动 Keychain Access.app。在未选择任何项目的情况下,从 Keychain 菜单中选择 Certificate Assistant,然后选择 Create a Certificate。

    姓名: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 手动部署

以下步骤需要先安装opensshuikittools。将jasoniphone.local 替换为目标设备的主机名。请务必在安装 SSH 后为 mobileroot 用户设置自己的密码。

在手机上手动编译安装你的应用作为系统应用(绕过苹果的安装系统):

  1. Project、Set Active SDK、Device 和 Set Active Build Configuration、Release。

  2. 正常编译您的项目(使用 Build,而不是 Build & Go)。

  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

【讨论】:

  • 我的不会构建 - 一旦我尝试构建,Xcode 会立即给出代码签名错误...
  • @Rev316 uicache 如果您安装了 uikittools 软件包,则应该在那里。
  • 我关注你但遇到了这个错误:stackoverflow.com/questions/2161877/…
  • 另外,你想通过 ssh 设置一个私钥/公钥对,以使事情无密码
  • 配置文件怎么样?有没有办法在不订阅开发者计划的情况下获得?
【解决方案2】:

是的,一旦您加入了 iPhone 开发者计划并支付了 Apple 99 美元,您就可以在多达 100 台 iOS 设备上配置您的应用程序。

【讨论】:

  • 为什么有 100 个安装限制?
  • 所以人们不能用它来完全绕过应用商店。
  • 而 100 台的限制被计算为您当年在 iOS Provisioning Portal 上注册的设备数量,而不是您当前拥有的数量。因此,如果您添加 5 台设备,然后将 5 台全部删除,您可以再添加 95 台(而不是 100 台)设备。
  • 但在您更新开发者计划后,使用的设备数量会重置。
  • 临时配置文件将在 3 个月后到期,因此即使您注册的有限 (100) 组设备也无法永久分发应用程序。
【解决方案3】:
  • 构建您的应用
  • 上传到破解站点
  • (如果你的应用足够好)破解版将在几分钟后发布,供大家下载;-)

【讨论】:

    【解决方案4】:

    this post 的帮助下,我制作了一个脚本,可以通过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 将无法正确安装应用程序。这是 iTunes 元数据的示例:

    <?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 我对此表示怀疑,但鉴于现在您可以使用任何 Apple ID 免费侧载 iOS 应用程序,我认为没有必要。
    【解决方案5】:

    随着即将推出的 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。您甚至可以使用已用于应用程序的同一个 Apple ID 商店或 iTunes。一旦你完善了你的应用程序,Apple Developer 程序可以帮助您在 App Store 上获得它。

    有关详细信息,请参阅Launching Your App on Devices 在设备上安装和运行。

    【讨论】:

      【解决方案6】:

      值得注意的是,如果您选择越狱路线,iPhone OS 更新可能(很可能?)会扼杀您运行这些应用程序的能力。我会走官方路线并支付 99 美元以获得授权。除了不必担心您的应用程序被破坏之外,您还有机会(如果您选择)在商店中发布您的应用程序。

      【讨论】:

        【解决方案7】:

        按照@Jason Weathered描述的方式将应用复制到iPhone后,一定要对应用“chmod +x”,否则无法运行。

        【讨论】:

          【解决方案8】:

          *更改/说明以使其适用于 Xcode 3.2.1iPhone SDK 3.1.2

          通过 WiFi 手动部署

          2) 修改Info.plist后一定要重启Xcode

          3) 找不到“uicache”命令,使用 killall -HUP SpringBoard 对我来说效果很好。

          除此之外,我可以确认这可以正常工作。

          Mac 用户,使用 PwnageTool 3.1.4 非常适合越狱(通过 torrent 进行深度学习)。

          【讨论】:

          • 啊。谢谢杰森,感谢有据可查的帖子!可能想提一下为像我这样的越狱小伙伴安装 Cydia 的 UIKit 工具包。
          【解决方案9】:

          如果您修补 /Developer/Platforms/iPhoneOS.platform/Info.plist,然后尝试使用来自 Apple 的真实开发配置文件来调试在设备上运行的应用程序,它可能无法正常工作。症状是来自com.apple.debugserver 的奇怪错误消息,并且在 Xcode 中构建时您可以使用任何包标识符而不会出现错误。解决方法是恢复Info.plist

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-06-30
            • 2011-07-08
            • 1970-01-01
            相关资源
            最近更新 更多