Build Script
From Rhomobile
This page is for the overall direction of the build scripts
Contents |
Directory Structure
Visible rake tasks
This describes the tasks that are visible when running rake -T. There may be significantly more tasks that can be run, but this is what we would present to the user.
Current
rake build:android:all # build all rake build:android:rhobundle # Build RhoBundle for android rake build:android:rhodes # Build Rhodes for android rake build:android:rjava # Generate R.java file rake build:android:rubyvm # Build RubyVM for android rake build:bb:rhobundle # Build rhoBundle rake build:bb:rhodes # Build rhodes rake build:bb:rubyvm # Build RubyVM rake build:iphone:rhobundle # Build iphone rhobundle rake build:iphone:rhodes # Build rhodes rake build:wm:rhobundle # Build wm rhobundle rake buildall:bb:production # Build all jdk versions for blackberry rake clean:android:all # clean android rake clean:bb:all # Clean all rake clean:bb:packaged # Clean packaged files rake clean:bb:preverified # Clean preverified jars rake clean:bb:tempdir # Clean temp dir rake clean:iphone:rhobundle # Clean rhobundle rake clean:iphone:rhodes # Clean rhodes binaries rake device:android:debug # build self signed for debug rake device:android:production # build signed for production rake device:bb:dev # Build and package dev for device rake device:bb:production # Build and package for production rake device:bb:rhobundle # Build and package dev rhobundle for device rake get_version # Get versions rake package:bb:dev # Package all dev (each part in separate pa... rake package:bb:production # Package all production (all parts in one ... rake package:bb:rhobundle # Package rhoBundle rake package:bb:rhodes # Package rhodesApp rake package:bb:rubyvm # Package rubyVM rake prebuild:android # Build binaries for anroid to be inserted ... rake prebuild:bb # Prebuild binaries for blackberry gems rake prebuild:iphone # Prebuild iPhone binaries for gems rake prebuild:wm # Prebuild binaries for WM gems rake run:android # build and launch emulator rake run:bb # Builds everything, loads and starts sim rake run:bb:startmdsandsim # Starts mds and sim rake run:iphone # Builds and launches app in simulator rake set_version[version] # Set version
Proposed
rake clean:android:all # Clean android rake clean:bb:all # Clean bb rake clean:iphone:all # Clean iphone rake clean:wm:all # Clean wm rake device:android:debug # Build debug self signed for device rake device:android:production # Build production signed for device rake device:bb:debug # Build debug for device rake device:bb:production # Build production for device rake device:iphone:debug # Build debug for device rake device:iphone:production # Build production for device rake get_version # Get versions rake run:android # Builds everything, launches android emulator rake run:bb # Builds everything, loads and starts bb sim and mds rake run:iphone # Builds everything, launches iphone simulator rake set_version[version] # Set version
Configuration Files
These sections describe the intent of the two configuration files. The exact contents may differ than what is here.
rhobuild.yml (in sdk folder)
- All settings required for building that does not depend on the application
env:
app: C:/rhodes-app
appname: Rhodes
version: 1.2.0
vendor: rhomobile
bbver: 4.6
applog: rholog.txt
paths:
java: C:/Program Files/Java/jdk1.6.0_11/bin
android: C:/android-sdk-windows-1.5_r2
cabwiz: C:/Program Files/Windows Mobile 6 SDK/Tools/CabWiz
4.6:
jde: C:/Program Files/Research In Motion/BlackBerry JDE 4.6.0
mds: C:/Program Files/Research In Motion/BlackBerry JDE 4.6.0/MDS
sim: 9000
4.2:
jde: C:/Program Files/Research In Motion/BlackBerry JDE 4.2.0
mds: C:/Program Files/Research In Motion/BlackBerry Email and MDS Services Simulators 4.1.2/MDS
sim: 8100
iphone:
configuration: Debug
sdk: iphonesimulator3.0
codesignidentity:
entitlements:
build:
bbpath: platform/bb
wmpath: platform/wm
androidpath: platform/android
iphonepath: platform/iphone
symbianpath: platform/symbian
bb:
bbsignpwd: "somepasswordhere"
excludedirs:
bb:
- public/js/iui
- public/js/jquery*
- public/js/prototype*
build.yml (in application folder)
- Generated by rhogen, prepopulates sdk path
- App specific settings, version, vendor, name etc.
sdk: "c:/work/rhodes-source" version: 1.2.2 vendor: rhomobile bbver: 4.6 applog: rholog.txt
Installation process
Delivery
Gem installation
- gem install rhodes
- run command line: rhodes-setup
Github installation
- unzip snapshot or clone into some folder
- add <installfolder>/bin to path
- run command line: rhodes-setup
Setup
A ruby script, 'rhodes-setup' that is in the bin folder. This script will attempt to auto-detect the installed directories for the required SDK's and will prompt the user for ones that it cannot find. It will then rewrite the rhobuild.yml with the correct information.
Things to prompt for:
- java bin folder
- android sdk folder
- cabwiz location
- blackberry jde locations
- certificate info?
LB: Maybe echo some info about the ruby environment (mention any required gem dependencies, etc...)
