[View]  [Edit]  [Lock]  [References]  [Attachments]  [History]  [Home]  [Changes]  [Search]  [Help] 

[coco8] iPhone development with S8

Development workflow

The development of an iPhone application with S8 has similar workflow than normal smalltalk development.
In case of iPhone dev. (and other mobile platforms) the executable is a package that MUST be produced (and signed/encrypted) by platform development tools (e.g. xcode from Apple).
So, we use to start a new project copying contents from another project and add/change/remove files to customize the new application and ensure we can package the system to a new executable that run in the device.
The first version of the application will contain a simple startup image.
The first packaged version of the application (.ipa file) can be used to request application approval at Apple, in case you need to use Apple store for delivery.
Development is iterative, producing a new image file on each cycle, that image will be used to package upgrades of the application.
The time required to build a new version and produce the package for delivery is in the order of minutes.
The time required to run a version of the application and enter debugging mode is in the order of seconds.
Both times are related to tasks that must be done with XCode and other Apple's tools.

Suggested steps to produce a new iPhone app with S8

1.-Clone coco8 project (or other iPhone app project to start)
1.1.-add resources (files/icons/etc) to project
1.2.-add the initial S8 image file
2.-build the project with xcode
2.1.-connect the phone, to run/debug the app
3.-export the application package file (ipa)
3.1-publish/distribute the ipa file

Steps to upgrade the app

1.-upgrade the image file and resources
1.1.-build the project
1.2.-export ipa file and publish

FAQ

S8 is a complete smalltalk environment, nothing has changed here (code can be fileIn from files or loaded from binary modules).
The system contents can be obtained as a string and saved as a new image file.
The image can be loaded in a web browser (chrome) for development, browser, workspaces and other smalltalk tools can be used during development; in case of an iOS object is required, the S8 object will trigger an error in development environment.
Currently we implement UI as suggested by Apple (as implemented with ObjectiveC but with smalltalk syntax).
To test GUI, it is required to be running in iPhone/iPad.
Any objectiveC or javascript library loadable dynamically, can be loaded and used/subclassed by S8 objects.
The use of iOS objects require running in iPhone/iPad.
We implement API wrappers as S8 loadable modules (similar to VSE's DynamicLinkLibrary subclasses and SLL files); so API can be browsed during dev. time; but requires iPhone/iPad for testing.
We actually clone an existing project to start a new application
The operation of renaming projects using xcode has had issues for years, and we actually suggest to rename names by hand in all project files.
The documentation pages about development with coco8 for iPhone is hosted in our swiki at http://alereimondo.no-ip.org/U8/coco8IndexPage
The coco8 platform files required for development are published at http://u8.smalltalking.net/profile/aleReimondo/coco8/coco8.zip