Skip to content

Commit 1952530

Browse files
committed
seperate documentation, should be ok now.
1 parent 24e9711 commit 1952530

File tree

8 files changed

+262
-262
lines changed

8 files changed

+262
-262
lines changed

docs/source/customize.rst

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
Customize your distribution
2+
===========================
3+
4+
The basic layout of a distribution is::
5+
6+
AndroidManifest.xml - (*) android manifest (generated from templates)
7+
assets/
8+
private.mp3 - (*) fake package that will contain all the python installation
9+
public.mp3 - (*) fake package that will contain your application
10+
bin/ - contain all the apk generated from build.py
11+
blacklist.txt - list of file patterns to not include in the APK
12+
buildlib/ - internals libraries for build.py
13+
build.py - build script to use for packaging your application
14+
build.xml - (*) build settings (generated from templates)
15+
default.properties - settings generated from your distribute.sh
16+
libs/ - contain all the compiled libraries
17+
local.properties - settings generated from your distribute.sh
18+
private/ - private directory containing all the python files
19+
lib/ this is where you can remove or add python libs.
20+
python2.7/ by default, some modules are already removed (tests, idlelib, ...)
21+
project.properties - settings generated from your distribute.sh
22+
python-install/ - the whole python installation, generated from distribute.sh
23+
not included in the final package.
24+
res/ - (*) android resource (generated from build.py)
25+
src/ - Java bootstrap
26+
templates/ - Templates used by build.py
27+
28+
(*): Theses files are automatically generated from build.py, don't change them directly !
29+
30+

docs/source/howitworks.rst

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
How does it work ?
2+
==================
3+
4+
To be able to run Python on android, you need to compile it for android. And
5+
you need to compile all the libraries you want for android too.
6+
Since Python is a language, not a toolkit, you cannot draw any user interface
7+
with it: you need to use a toolkit for it. Kivy can be one of them.
8+
9+
So for a simple ui project, the first step is to compile Python + Kivy + all
10+
others libraries. Then you'll have what we call a "distribution".
11+
A distribution is composed of:
12+
13+
- Python libraries
14+
- All selected libraries (kivy, pygame, pil...)
15+
- A java bootstrap
16+
- A build script
17+
18+
You'll use the build script for create an "apk": an android package.
19+

docs/source/index.rst

Lines changed: 10 additions & 262 deletions
Original file line numberDiff line numberDiff line change
@@ -6,272 +6,20 @@
66
Python for Android
77
==================
88

9-
Contents:
10-
11-
.. toctree::
12-
:maxdepth: 2
13-
149
Python for android is a project to create your own Python distribution
1510
including the modules you want, and create an apk including python, libs, and
1611
your application.
1712

18-
In terms of comparaison, you can check how Python for android can be useful
19-
compared to other projects.
20-
21-
+--------------------+---------------+---------------+----------------+--------------+
22-
| Project | Native Python | GUI libraries | APK generation | Custom build |
23-
+====================+===============+===============+================+==============+
24-
| Python for android | Yes | Yes | Yes | Yes |
25-
+--------------------+---------------+---------------+----------------+--------------+
26-
| PGS4A | Yes | Yes | Yes | No |
27-
+--------------------+---------------+---------------+----------------+--------------+
28-
| Android scripting | No | No | No | No |
29-
+--------------------+---------------+---------------+----------------+--------------+
30-
| Python on a chip | No | No | No | No |
31-
+--------------------+---------------+---------------+----------------+--------------+
32-
33-
.. note::
34-
35-
For the moment, we are shipping only one "java bootstrap" needed for
36-
decompressing all the files of your project, create an OpenGL ES 2.0
37-
surface, handle touch input and manage an audio thread.
38-
39-
If you want to use it without kivy module (an opengl es 2.0 ui toolkit),
40-
then you might want a lighter java bootstrap, that we don't have right now.
41-
Help is welcome :)
42-
43-
44-
Prerequisites
45-
-------------
46-
47-
.. warning::
48-
49-
The current version is tested only on Ubuntu oneiric (11.10). If it doesn't
50-
work on another platform, send us patch, not bug report.
51-
52-
You need the minimal environment for building python. Note that other libraries
53-
might need other tools (cython is used by some recipes, and ccache to speedup the build)::
54-
55-
sudo apt-get install build-essential patch git-core ccache cython ant
56-
57-
You must have android SDK and NDK. You can download them at::
58-
59-
http://developer.android.com/sdk/index.html
60-
http://developer.android.com/sdk/ndk/index.html
61-
62-
If it's your very first time into android SDK, don't forget to follow
63-
documentation for recommended components at::
64-
65-
http://developer.android.com/sdk/installing.html#which
66-
67-
You need to download at least one platform into your environment, so
68-
that you will be able to compile your application and set up an Android
69-
Virtual Device (AVD) to run it on (in the emulator). To start with,
70-
just download the latest version of the platform. Later, if you plan to
71-
publish your application, you will want to download other platforms as
72-
well, so that you can test your application on the full range of
73-
Android platform versions that your application supports.
74-
75-
After installing them, export both installation path, NDK version and API to use::
76-
77-
export ANDROIDSDK=/path/to/android-sdk
78-
export ANDROIDNDK=/path/to/android-ndk
79-
export ANDROIDNDKVER=rX
80-
export ANDROIDAPI=X
81-
82-
# example
83-
export ANDROIDSDK="/home/tito/code/android/android-sdk-linux_86"
84-
export ANDROIDNDK="/home/tito/code/android/android-ndk-r7"
85-
export ANDROIDNDKVER=r7
86-
export ANDROIDAPI=14
87-
88-
89-
Usage
90-
-----
91-
92-
Step 1: compile the toolchain
93-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
94-
95-
If you want to compile the toolchain with only kivy module::
96-
97-
./distribute.sh -m "kivy"
98-
99-
After a long time, you'll get a "dist/default" directory containing all the compiled
100-
libraries and build.py script to package your application using thoses
101-
libraries.
102-
103-
You can include other libraries to compile using `-m`::
104-
105-
./distribute.sh -m "openssl kivy"
106-
./distribute.sh -m "pil ffmpeg kivy"
107-
108-
Available options to `distribute.sh`::
109-
110-
-d directory Name of the distribution directory
111-
-h Show this help
112-
-l Show a list of available modules
113-
-m 'mod1 mod2' Modules to include
114-
-f Restart from scratch (remove the current build)
115-
116-
Step 2: package your application
117-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
118-
119-
Go fo your custom python distribution::
120-
121-
cd dist/default
122-
123-
Use the build.py for creating the APK::
124-
125-
./build.py --package org.test.touchtracer --name touchtracer \
126-
--version 1.0 --dir ~/code/kivy/examples/demo/touchtracer debug
127-
128-
Then, the android package (APK) will be generated at:
129-
130-
bin/touchtracer-1.0-debug.apk
131-
132-
Available options to `build.py`::
133-
134-
-h, --help show this help message and exit
135-
--package PACKAGE The name of the java package the project will be
136-
packaged under.
137-
--name NAME The human-readable name of the project.
138-
--version VERSION The version number of the project. This should consist
139-
of numbers and dots, and should have the same number
140-
of groups of numbers as previous versions.
141-
--numeric-version NUMERIC_VERSION
142-
The numeric version number of the project. If not
143-
given, this is automatically computed from the
144-
version.
145-
--dir DIR The directory containing public files for the project.
146-
--private PRIVATE The directory containing additional private files for
147-
the project.
148-
--launcher Provide this argument to build a multi-app launcher,
149-
rather than a single app.
150-
--icon-name ICON_NAME
151-
The name of the project's launcher icon.
152-
--orientation ORIENTATION
153-
The orientation that the game will display in. Usually
154-
one of "landscape" or "portrait".
155-
--permission PERMISSIONS
156-
The permissions to give this app.
157-
--ignore-path IGNORE_PATH
158-
Ignore path when building the app
159-
--icon ICON A png file to use as the icon for the application.
160-
--presplash PRESPLASH
161-
A jpeg file to use as a screen while the application
162-
is loading.
163-
--install-location INSTALL_LOCATION
164-
The default install location. Should be "auto",
165-
"preferExternal" or "internalOnly".
166-
--compile-pyo Compile all .py files to .pyo, and only distribute the
167-
compiled bytecode.
168-
--blacklist BLACKLIST
169-
Use a blacklist file to match unwanted file in the
170-
final APK
171-
172-
173-
How does it work ?
174-
------------------
175-
176-
To be able to run Python on android, you need to compile it for android. And
177-
you need to compile all the libraries you want for android too.
178-
Since Python is a language, not a toolkit, you cannot draw any user interface
179-
with it: you need to use a toolkit for it. Kivy can be one of them.
180-
181-
So for a simple ui project, the first step is to compile Python + Kivy + all
182-
others libraries. Then you'll have what we call a "distribution".
183-
A distribution is composed of:
184-
185-
- Python libraries
186-
- All selected libraries (kivy, pygame, pil...)
187-
- A java bootstrap
188-
- A build script
189-
190-
You'll use the build script for create an "apk": an android package.
191-
192-
193-
Customize your distribution
194-
---------------------------
195-
196-
The basic layout of a distribution is::
197-
198-
AndroidManifest.xml - (*) android manifest (generated from templates)
199-
assets/
200-
private.mp3 - (*) fake package that will contain all the python installation
201-
public.mp3 - (*) fake package that will contain your application
202-
bin/ - contain all the apk generated from build.py
203-
blacklist.txt - list of file patterns to not include in the APK
204-
buildlib/ - internals libraries for build.py
205-
build.py - build script to use for packaging your application
206-
build.xml - (*) build settings (generated from templates)
207-
default.properties - settings generated from your distribute.sh
208-
libs/ - contain all the compiled libraries
209-
local.properties - settings generated from your distribute.sh
210-
private/ - private directory containing all the python files
211-
lib/ this is where you can remove or add python libs.
212-
python2.7/ by default, some modules are already removed (tests, idlelib, ...)
213-
project.properties - settings generated from your distribute.sh
214-
python-install/ - the whole python installation, generated from distribute.sh
215-
not included in the final package.
216-
res/ - (*) android resource (generated from build.py)
217-
src/ - Java bootstrap
218-
templates/ - Templates used by build.py
219-
220-
(*): Theses files are automatically generated from build.py, don't change them directly !
221-
222-
223-
Available modules
224-
-----------------
225-
226-
List of available modules: jpeg pil png sdl sqlite3 pygame kivy android
227-
libxml2 libxslt lxml ffmpeg openssl chipmunk
228-
229-
The up-to-date list is available at:
230-
https://github.com/kivy/python-for-android/tree/master/recipes
231-
232-
Only hostpython and python are 2 mandatory recipes, used for building
233-
hostpython / target python libraries.
234-
235-
236-
Create your own recipes
237-
-----------------------
238-
239-
A recipe is a script that contain the "definition" of a module to compile.
240-
The directory layout of a recipe for a <modulename> is something like::
241-
242-
python-for-android/recipes/<modulename>/recipe.sh
243-
python-for-android/recipes/<modulename>/patches/
244-
python-for-android/recipes/<modulename>/patches/fix-path.patch
245-
246-
When building, all the recipe build must go to::
247-
248-
python-for-android/build/<modulename>/<archiveroot>
249-
250-
For example, if you want to create a recipe for sdl, do::
251-
252-
cd python-for-android/recipes
253-
mkdir sdl
254-
cp recipe.sh.tmpl sdl/recipe.sh
255-
sed -i 's#XXX#sdl#' sdl/recipe.sh
256-
257-
Then, edit the sdl/recipe.sh to adjust other information (version, url) and
258-
complete build function.
259-
260-
261-
Related project
262-
---------------
263-
264-
- PGS4A: http://pygame.renpy.org/
265-
- Android scripting: http://code.google.com/p/android-scripting/
266-
- Python on a chip: http://code.google.com/p/python-on-a-chip/
267-
268-
269-
TODO
270-
----
271-
272-
- jni/Android.mk must not include ttf/image/mixer if not asked by the user
273-
- Python try always to import name.so, namemodule.so, name.py, name.pyo ?
274-
- restore libpymodules.so loading to reduce the number of dlopen.
13+
.. toctree::
14+
:maxdepth: 2
15+
16+
introduction.rst
17+
prerequisites.rst
18+
usage.rst
19+
howitworks.rst
20+
customize.rst
21+
recipes.rst
22+
related.rst
27523

27624
Indices and tables
27725
==================

docs/source/introduction.rst

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
Introduction
2+
============
3+
4+
In terms of comparaison, you can check how Python for android can be useful
5+
compared to other projects.
6+
7+
+--------------------+---------------+---------------+----------------+--------------+
8+
| Project | Native Python | GUI libraries | APK generation | Custom build |
9+
+====================+===============+===============+================+==============+
10+
| Python for android | Yes | Yes | Yes | Yes |
11+
+--------------------+---------------+---------------+----------------+--------------+
12+
| PGS4A | Yes | Yes | Yes | No |
13+
+--------------------+---------------+---------------+----------------+--------------+
14+
| Android scripting | No | No | No | No |
15+
+--------------------+---------------+---------------+----------------+--------------+
16+
| Python on a chip | No | No | No | No |
17+
+--------------------+---------------+---------------+----------------+--------------+
18+
19+
.. note::
20+
21+
For the moment, we are shipping only one "java bootstrap" needed for
22+
decompressing all the files of your project, create an OpenGL ES 2.0
23+
surface, handle touch input and manage an audio thread.
24+
25+
If you want to use it without kivy module (an opengl es 2.0 ui toolkit),
26+
then you might want a lighter java bootstrap, that we don't have right now.
27+
Help is welcome :)
28+
29+

0 commit comments

Comments
 (0)