phoneME Advanced Directory Structure Explained
In this blog entry, I'll be talking
about the directory layout of the phoneME Advanced project. You can
follow along by browsing the source code here
while you're reading this blog. You'll have to join the project to
The start of the phoneME Advanced code
is located components/cdc/trunk
directory. Underneath the trunk directory are these directories:
– contains the make files. This is where you want to go to
– contains the source files
– contains the test files
This is obvious enough.
Once you're at the src directory,
you're at the root of the source code for all platforms. You'll
notice a listing of several hardware and os/hardware combination
directories here as well as a share directory, which I'll talk about
later. These directories contain code specific to the os/hardware
(except the share directory). Code in these directories are
minimized and are mainly native (non-Java) code. The majority of it
is cvm code.
Underneath the share directory is the
bulk of the phoneME Advanced code.
– contains the code for the application manager
– contains the code for the Personal Basis Profile
– contains demo code for the Connected Device Configuration
- contains the code for the Connected Device Configuration<
– contains the code for the Foundation Profile
– contains the code for the cvm
– contains Java security files
– contains shared native code
– contains the code for the Personal Profile
– contains tools
Each of these directories can be put
into categories: basis, foundation, personal, and the src directory
in which we're “in”, typically have a classes directory
and a native directory. The classes directory contains all of the
Java code and the native directory contains supporting native code
for the Java classes. The native directories contain JNI code and
code which interfaces with other native libraries, like Qt.
is an all-Java component and contains no native code. cdc
contains only a demo file and lib
contains two text files relating to Java security, a policy and
security file. tools
contains both native and Java files, but the directory structure
underneath it is slightly different. For now, I'll focus on the
Underneath the classes directory is,
for the most part, the root of the Java packages. So here's where
you'll find the java/lang directory.
The CDC profiles build upon each other.
So the Personal Basis Profile includes Foundation Profile and the
Personal Profile includes the Personal Basis Profile. For the most
part, the Foundation Profile code is in the foundation directory, the
Personal Basis Profile code is in the basis directory and so forth.
There are some cases where you'll find the same file in different
profiles. For example, you'll find Toolkit.java in basis:
basis/classes/common/java/awt/Toolkit.java and in personal:
personal/classes/common/java/awt/Toolkit.java. This is to account
for the differences in the various profiles.
Underneath the build
directory, you'll find directories similar to the src
directory, a share directory, which contains makefiles which are
shared across all platforms, and directories specific to each
os/hardware platform. Again, the os/hardware-specific makefiles are