如果我在Mac上创建了一个应用程序,有没有什么方法可以让它在iPhone上运行,而不需要通过应用程序商店?
只要我还能运行使用官方SDK创建的应用程序,iPhone是否需要越狱也没有关系。因为一些原因,我不能让这个程序进入应用商店。
是的,一旦你加入了iPhone开发者计划,并向苹果支付99美元,你就可以在最多100台iOS设备上配置你的应用程序。
对于一个标准的iPhone,你需要支付99美元/年成为开发者计划的成员。然后,您可以使用adhoc系统将应用程序安装到多达100个设备上。开发人员程序提供了详细信息,但它涉及到将每个设备的uuid添加到应用程序包中。uuid可以使用App Store中的Ad Hoc Helper最容易获取。有关此方法的更多详细信息,请参阅Craig Hockenberry的iPhone 2.0的Beta测试文章
对于越狱的iPhone,你可以使用以下方法,我个人在iPhone OS 3.0上使用AccelerometerGraph示例应用程序进行了测试。
首先,你需要创建一个自签名证书,并给你的iPhone SDK打补丁,以允许使用这个证书:
启动Keychain Access.app。如果没有选择任何项,请从“密钥链”菜单中选择“证书助手”,然后创建证书。
名称:iPhone开发者 证书类型:代码签名 让我重写默认值:Yes
有效期:3650天
点击继续
清空电子邮件地址字段。
单击“继续”,直到完成。
您应该看到“此根证书不受信任”。
设置iPhone SDK允许使用自签名证书:
sudo /usr/bin/sed -i .bak 's/XCiPhoneOSCodeSignContext/XCCodeSignContext/' /Developer/Platforms/iPhoneOS.platform/Info.plist . txt
如果你的Xcode是打开的,重新启动它使这个改变生效
下面的步骤需要先安装openssh和uikittools。将jasoniphone.local替换为目标设备的主机名。安装SSH后,请确保在mobile和root用户上设置自己的密码。
openssh
uikittools
jasoniphone.local
mobile
root
手动编译并将应用程序作为系统应用程序安装在手机上(绕过苹果的安装系统):
项目,设置活动SDK,设备和设置活动构建配置,发布。
正常编译项目(使用Build,而不是Build &去)。
build/Release-iphoneos
scp -r AccelerometerGraph.app root@jasoniphone:/Applications/ 李< /引用> < / > 让SpringBoard知道新的应用程序已经安装: ssh mobile@jasoniphone.local uicache 只有在添加或删除应用程序时才需要这样做。更新后的应用程序只需要重新启动
scp -r AccelerometerGraph.app root@jasoniphone:/Applications/
ssh mobile@jasoniphone.local uicache
只有在添加或删除应用程序时才需要这样做。更新后的应用程序只需要重新启动
为了简化开发过程,您可以设置SSH密钥验证,并将这些额外的步骤作为自定义构建步骤添加到项目中。
注意,如果你想在以后删除应用程序,你不能通过标准的SpringBoard接口这样做,你需要使用SSH并更新SpringBoard:
ssh root@jasoniphone.local rm -r /Applications/AccelerometerGraph.app && ssh mobile@jasoniphone.local uicache
值得注意的是,如果你走越狱路线,iPhone操作系统的更新可能(很可能?)会让你无法运行这些应用程序。我会走官方路线,支付99美元获得授权。除了不用担心你的应用被攻击之外,你还有机会(如果你选择的话)在应用商店上发布你的应用。
*对Xcode 3.2.1之上和iPhone SDK 3.1.2的修改/注意事项
WiFi方式手动部署
2)修改Info.plist后一定要重新启动Xcode
3)“uicache”命令没有找到,使用killall -HUP SpringBoard对我来说工作很好。
除此之外,我可以确认这工作得很好。
Mac用户使用PwnageTool 3.1.4对越狱(通过torrent进行DL)非常有效。
如果你打了/Developer/Platforms/iPhoneOS.platform/Info.plist补丁,然后尝试调试一个运行在设备上的应用程序,使用苹果提供的真正的开发配置文件,它可能不会工作。症状是来自com.apple.debugserver的奇怪错误消息,在Xcode中构建时,你可以使用任何bundle标识符而不会得到错误。解决方案是恢复Info.plist。
/Developer/Platforms/iPhoneOS.platform/Info.plist
com.apple.debugserver
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/Downloads。
~/Documents/Installous/Downloads
按照@Jason所描述的方式将应用程序复制到iPhone后,请确保应用程序的“chmod +x”,否则它将无法运行。
随着即将到来的Xcode 7,现在你可以在没有苹果开发者许可的情况下在你的设备上安装应用程序,所以现在有可能跳过应用程序商店,你不必越狱你的设备。
现在每个人都可以在他们的苹果设备上使用他们的应用程序。 Xcode 7和 Swift现在让每个人都更容易构建和运行应用程序 直接在他们的苹果设备上只需用你的苹果ID登录, 把你的想法变成一个可以在iPad上触摸的应用程序, 或者苹果手表。下载Xcode 7测试版,自己试试 今天。 . .
现在每个人都可以在他们的苹果设备上使用他们的应用程序。
Xcode 7和 Swift现在让每个人都更容易构建和运行应用程序 直接在他们的苹果设备上只需用你的苹果ID登录, 把你的想法变成一个可以在iPad上触摸的应用程序, 或者苹果手表。下载Xcode 7测试版,自己试试 今天。
引用自:https://developer.apple.com/xcode/
更新:
XCode 7现已发布:
免费设备开发 现在每个人都可以运行和测试他们自己的应用程序 在一个设备上——免费的。对象上运行和调试自己的创建 Mac, iPhone, iPad, iPod touch或Apple Watch不收取任何费用,而且没有 加入的程序。你所需要做的就是输入你的免费苹果账号 Xcode。你甚至可以使用已经用于应用程序的同一个Apple ID Store或iTunes。一旦你完善了你的应用,苹果开发者 . . 详细信息见在设备上启动应用 .在设备上安装和运行
免费设备开发 现在每个人都可以运行和测试他们自己的应用程序 在一个设备上——免费的。对象上运行和调试自己的创建 Mac, iPhone, iPad, iPod touch或Apple Watch不收取任何费用,而且没有 加入的程序。你所需要做的就是输入你的免费苹果账号 Xcode。你甚至可以使用已经用于应用程序的同一个Apple ID Store或iTunes。一旦你完善了你的应用,苹果开发者
详细信息见在设备上启动应用