-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
151 lines (95 loc) · 4.8 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
Appcelerator Titanium iPhone Module Project
===========================================
This is a skeleton Titanium Mobile iPhone module project. Modules can be
used to extend the functionality of Titanium by providing additional native
code that is compiled into your application at build time and can expose certain
APIs into JavaScript.
MODULE NAMING
--------------
Choose a unique module id for your module. This ID usually follows a namespace
convention using DNS notation. For example, com.appcelerator.module.test. This
ID can only be used once by all public modules in Titanium.
COMPONENTS
-----------
Components that are exposed by your module must follow a special naming convention.
A component (widget, proxy, etc) must be named with the pattern:
Ti<ModuleName><ComponentName>Proxy
For example, if you component was called Foo, your proxy would be named:
TiMyfirstFooProxy
For view proxies or widgets, you must create both a view proxy and a view implementation.
If you widget was named proxy, you would create the following files:
TiMyfirstFooProxy.h
TiMyfirstFooProxy.m
TiMyfirstFoo.h
TiMyfirstFoo.m
The view implementation is named the same except it does contain the suffix `Proxy`.
View implementations extend the Titanium base class `TiUIView`. View Proxies extend the
Titanium base class `TiUIViewProxy` or `TiUIWidgetProxy`.
For proxies that are simply native objects that can be returned to JavaScript, you can
simply extend `TiProxy` and no view implementation is required.
GET STARTED
------------
1. Edit manifest with the appropriate details about your module.
2. Edit LICENSE to add your license details.
3. Place any assets (such as PNG files) that are required in the assets folder.
4. Edit the titanium.xcconfig and make sure you're building for the right Titanium version.
5. Code and build.
BUILD TIME COMPILER CONFIG
--------------------------
You can edit the file `module.xcconfig` to include any build time settings that should be
set during application compilation that your module requires. This file will automatically get `#include` in the main application project.
For more information about this file, please see the Apple documentation at:
<http://developer.apple.com/mac/library/documentation/DeveloperTools/Conceptual/XcodeBuildSystem/400-Build_Configurations/build_configs.html>
DOCUMENTATION FOR YOUR MODULE
-----------------------------
You should provide at least minimal documentation for your module in `documentation` folder using the Markdown syntax.
For more information on the Markdown syntax, refer to this documentation at:
<http://daringfireball.net/projects/markdown/>
TEST HARNESS EXAMPLE FOR YOUR MODULE
------------------------------------
The `example` directory contains a skeleton application test harness that can be
used for testing and providing an example of usage to the users of your module.
INSTALL YOUR MODULE
--------------------
1. Run `build.py` which creates your distribution
2. cd to `/Library/Application Support/Titanium`
3. copy this zip file into the folder of your Titanium SDK
REGISTER YOUR MODULE
---------------------
Register your module with your application by editing `tiapp.xml` and adding your module.
Example:
<modules>
<module version="0.1">com.atypical.htmlToPDF</module>
</modules>
When you run your project, the compiler will know automatically compile in your module
dependencies and copy appropriate image assets into the application.
USING YOUR MODULE IN CODE
-------------------------
To use your module in code, you will need to require it.
For example,
var my_module = require('com.atypical.htmlToPDF');
my_module.foo();
WRITING PURE JS NATIVE MODULES
------------------------------
You can write a pure JavaScript "natively compiled" module. This is nice if you
want to distribute a JS module pre-compiled.
To create a module, create a file named com.atypical.htmlToPDF.js under the assets folder.
This file must be in the Common JS format. For example:
exports.echo = function(s)
{
return s;
};
Any functions and properties that are exported will be made available as part of your
module. All other code inside your JS will be private to your module.
For pure JS module, you don't need to modify any of the Objective-C module code. You
can leave it as-is and build.
TESTING YOUR MODULE
-------------------
Run the `titanium.py` script to test your module or test from within XCode.
To test with the script, execute:
titanium run --dir=YOURMODULEDIR
This will execute the app.js in the example folder as a Titanium application.
DISTRIBUTING YOUR MODULE
-------------------------
Currently, you will need to manually distribution your module distribution zip file directly. However, in the near future, we will make module distribution and sharing built-in to Titanium Developer and in the Titanium Marketplace!
Cheers!