iPhone App减去App​​ Store?

时间:2020-03-05 18:45:49  来源:igfitidea点击:

如果我在Mac上创建应用程序,是否有任何方法可以使它在iPhone上运行而无需通过应用程序商店?

只要我仍然可以运行使用官方SDK创建的应用程序,是否必须将iPhone越狱都没有关系。出于某些原因,我无法进入应用程序商店。

解决方案

回答

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

回答

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

对于越狱的iPhone,我们可以使用以下方法,该方法是我使用iPhone OS 3.0上的AccelerometerGraphGraph示例应用程序亲自测试过的。

创建自签名证书

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

  • 启动Keychain Access.app。在未选择任何项目的情况下,从"钥匙串"菜单中选择"证书助手",然后选择"创建证书"。名称:iPhone开发人员证书类型:代码签名让我覆盖默认值:是
  • 单击继续有效:3650天
  • 点击继续
  • 清空电子邮件地址字段。
  • 单击继续,直到完成。我们应该看到"此根证书不受信任"。这是预期的。
  • 将iPhone SDK设置为允许使用自签名证书:
sudo /usr/bin/sed -i .bak 's/XCiPhoneOSCodeSignContext/XCCodeSignContext/' /Developer/Platforms/iPhoneOS.platform/Info.plist

如果我们打开了Xcode,请重新启动它以使更改生效。

通过WiFi手动部署

以下步骤要求先安装" openssh"和" uikittools"。将" jasoniphone.local"替换为目标设备的主机名。安装SSH后,请确保在" mobile"和" root"用户上都设置自己的密码。

要将应用程序作为系统应用程序手动编译并安装在手机上(绕过Apple的安装系统):

  • 项目,设置活动SDK,设备并设置活动构建配置,发布。
  • 正常编译项目(使用Build,而不是Build&Go)。
  • 在build / Release-iphoneos目录中,我们将拥有一个应用程序捆绑包。使用我们首选的方法将其传输到设备上的/ Applications。
scp -r AccelerometerGraph.app root@jasoniphone:/Applications/
  • 让SpringBoard知道已经安装了新应用程序:
ssh [email protected] uicache

仅在添加或者删除应用程序时才需要这样做。更新的应用程序仅需要重新启动。

为了使开发过程更轻松,我们可以设置SSH密钥身份验证,并将这些额外的步骤添加为项目中的自定义构建步骤。

请注意,如果我们希望以后删除该应用程序,则无法通过标准SpringBoard接口删除它,并且需要使用SSH并更新SpringBoard:

ssh [email protected] rm -r /Applications/AccelerometerGraph.app &&
ssh [email protected] uicache

回答

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

回答

*更改/注释使此功能适用于Xcode 3.2.1和iPhone SDK 3.1.2

通过WiFi手动部署

2)确保在修改Info.plist之后重新启动Xcode

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

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

使用PwnageTool 3.1.4的Mac用户非常适合越狱(通过torrent通过DL)。

回答

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

回答

  • 建立应用程式
  • 上传到破解网站
  • (如果应用程序足够好),破解版本将在几分钟后发布,并可供所有人下载;-)

回答

在这篇文章的帮助下,我制作了一个脚本,该脚本将通过应用程序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 /下载