Using the Eclipse project DDMS
------------------------------

DDMS requires some external libraries to compile.
If you build DDMS using the makefile, you have nothing to configure.
However if you want to develop on DDMS using Eclipse, you need to
perform the following configuration.


-------
1- Projects required in Eclipse
-------

To run DDMS from Eclipse, you need to import the following 5 projects:

  - sdk/androidpprefs:      project AndroidPrefs
  - sdk/sdkstats:           project SdkStatsService
  - sdk/ddms/app:           project Ddms
  - sdk/ddms/libs/ddmlib:   project Ddmlib
  - sdk/ddms/libs/ddmuilib: project Ddmuilib


-------
2- DDMS requires some SWT and OSGI JARs to compile.
-------

SWT is available in the tree under prebuild/<platform>/swt

Because the build path cannot contain relative path that are not inside
the project directory, the .classpath file references a user library
called ANDROID_SWT.
SWT depends on OSGI, so we'll also create an ANDROID_OSGI library for that.

In order to compile the project:
- Open Preferences > Java > Build Path > User Libraries

- Create a new user library named ANDROID_SWT
- Add the following 4 JAR files:

  - prebuilt/<platform>/swt/swt.jar
  - prebuilt/common/eclipse/org.eclipse.core.commands_3.*.jar
  - prebuilt/common/eclipse/org.eclipse.equinox.common_3.*.jar
  - prebuilt/common/eclipse/org.eclipse.jface_3.*.jar

- Create a new user library named ANDROID_OSGI
- Add the following JAR file:

  - prebuilt/common/eclipse/org.eclipse.osgi_3.*.jar


-------
3- DDMS also requires the compiled SwtMenuBar library.
-------

Build the swtmenubar library:
$ cd $TOP (top of Android tree)
$ . build/envsetup.sh && lunch sdk-eng
$ sdk/eclipse/scripts/create_sdkman_symlinks.sh

Define a classpath variable in Eclipse:
- Open Preferences > Java > Build Path > Classpath Variables
- Create a new classpath variable named ANDROID_OUT_FRAMEWORK
- Set its folder value to <Android tree>/out/host/<platform>/framework
- Create a new classpath variable named ANDROID_SRC
- Set its folder value to <Android tree>

You might need to clean the ddms project (Project > Clean...) after
you add the new classpath variable, otherwise previous errors might not
go away automatically.

The ANDROID_SRC part should be optional. It allows you to have access to
the SwtMenuBar generic parts from the Java editor.

--
EOF
