With the ever growing complexity of mobile development most other modern development platforms have a series of package management and merge tools to simplify the development process. Particularly around adding third party components. These tools simplify the process of adding a component into an application, managing dependencies and merging manifests or plists.
If AIR is to progress as a modern development tool I believe it is well past time that we have some similar tools at our disposal and as a community agree upon a series of standards around component descriptions.
I know there are proprietary tools that manage certain aspects of this process such as ane-lab and Adobe Air Assistant however these tools are highly customised to the integrated ANEs and would probably be better suited as UI components built upon a common standard.
To this end I would like to propose we, as a community, start development of an open source "AIR package manager"
apm, similar to
npm for node. I believe this should be able to manage any AIR libraries, eg SWCs such as starling / feathers and particularly ANEs.
The goals of this tool would be to:
- read from a central repository of packages (ANEs and SWCs)
- install (download) packages and dependencies
- update packages and dependencies
- assist in the creation of the application descriptor (particularly on iOS / Android to merge android manifest additions and iOS info additions / entitlements )
I believe the initial goal should be a single command line tool for macOS and Windows that may be leveraged by others to develop UI based versions in the future.
The tool would save the current packages and versions in a small config file in project directory again similar to npm.
apm search starling
apm install starling
- Update installed libraries:
apm generate app-descriptor
I see several factors that need defining here:
- standard definition of a library to be hosted in a repository, including:
- Android manifest additions
- iOS Info Additions and Entitlements
- required configuration variables to be inserted into the above (eg )
- definition for an application
- installed libraries
- configuration variables
- method for creating app descriptor including
- merging all the above definitions (manifest / info additions etc) similar process to android's AAR manifest merge
- conflict resolution
Obviously this is something that we have internally talked a lot about at distriqt and we actually started development of our own ane-lab style utility a long time ago, and even helped to develop the Adobe AIR Assistant. However we feel this tool should be something owned and developed by the community making it as extensible as possible. We currently see this as one of the biggest lacking features of the AIR platform. AIR has this amazing potential but is held back by the time taken to integrate libraries, extensions and their dependencies.
I am very keen to contribute and even lead the development but wanted to start a discussion on this topic to gauge what others think about the creation of a community driven opensource utility.
To start this process I have setup the following github repository:
If you have any thoughts or would like to be involved please have a look at the repository and let me know what you think.