iPhone Capistrano deployment
October 28th, 2008
You can automatically deploy your own application to the iPhonedevice by using Capistrano.
Requirements: Capistrano (gem install capistrano) and ldid (install via Cydia).
Build your application for the ARM architecture:
bjam --toolset=darwin macosx-version=iphone-2.0 architecture=arm release
Deploy the application to the iPhone:
cap deploy
Your app is packaged (tar), copied (scp) to your iphone and SpringBoards is restarted. I use the following Capfile:
set :application_name, "LocateMe"
set :iphone_ip, "192.168.1.4"
set :user, "root"
# password = alpine
desc "Package your iPhone application"
task :package do
%x[cd "~/Library/Application Support/iPhone Simulator/User/Applications/00000000-0000-0000-0000-000000000000" && \
tar -czpvf #{application_name}.tar.gz #{application_name}.app && \
scp #{application_name}.tar.gz #{user}@#{iphone_ip}:/Applications]
end
desc "Install the application on your iPhone"
task :install, :hosts => "#{iphone_ip}" do
run <<-CMD
cd /Applications/;
tar -xzpvf #{application_name}.tar.gz;
rm #{application_name}.tar.gz;
ldid -S /Applications/#{application_name}.app/#{application_name};
killall SpringBoard; # OS 2.0
# /Applications/BossPrefs.app/Respring; # OS 2.1
CMD
end
desc "Package and install the application on your iPhone"
task :deploy, :hosts => "#{iphone_ip}" do
package
install
end
Building iPhone LocateMe with BJAM
October 28th, 2008
Here’s an example Jamfile that you can use to build the LocateMe example with BJAM. The jamfile basically just sums up the sources and resources that need to be compiled. BJAM already supports the Darwin toolset.
The application is compiled and installed in your iPhone Simulator user directory. If you want to compile for the iPhone Simulator you invoke bjam with the following command:
bjam --toolset=darwin macosx-version=iphonesim-2.0
If you want to compile for the iPhone device you have to change the architecture to ARM.
bjam --toolset=darwin macosx-version=iphone-2.0 architecture=arm release
Also see the article about automatically deploying your application to the iPhone using Capistrano.
The complete jamfile.v2 for reference:
# jamfile.v2
#
#
# bjam --toolset=darwin macosx-version=iphonesim-2.0
# bjam --toolset=darwin macosx-version=iphone-2.0 architecture=arm release
import ibtool ;
project locate_me
: source-location .
: requirements
: usage-requirements
;
# RESOURCES = Background.png Default.png HelloWorld.xib MainWindow.xib Icon.png Info.plist ;
RESOURCES = Default.png Icon.png Info.plist Localizable.strings ;
nib resources/FlipsideView : en.lproj/FlipsideView.xib ;
nib resources/MainView : en.lproj/MainView.xib ;
nib resources/MainWindow : en.lproj/MainWindow.xib ;
alias compiled_resources : resources/FlipsideView resources/MainView resources/MainWindow ;
exe LocateMe
: main.m
Classes/AccuracyPickerItem.m
Classes/FlipsideViewController.m
Classes/LocateMeAppDelegate.m
Classes/MainViewController.m
Classes/MyCLController.m
Classes/RootViewController.m
: <framework>/System/Library/Frameworks/UIKit
<framework>/System/Library/Frameworks/Foundation
<framework>/System/Library/Frameworks/CoreLocation
;
install simulator
: LocateMe
:
<location>"~/Library/Application Support/iPhone Simulator/User/Applications/00000000-0000-0000-0000-000000000000/LocateMe.app"
<install-dependencies>on
<install-type>EXE
;
install resources
: $(RESOURCES) compiled_resources
: <location>"~/Library/Application Support/iPhone Simulator/User/Applications/00000000-0000-0000-0000-000000000000/LocateMe.app"
;