113 lines
4.0 KiB
Plaintext
113 lines
4.0 KiB
Plaintext
Some of the SDK tools sources have moved out of the sdk.git project.
|
|
They are no longer found here.
|
|
|
|
Instead they can be found in the tools/base.git and the tools/swt.git projects.
|
|
If you need to view/change the source and lack these folders, you can bring
|
|
them by using a repo init command such as:
|
|
|
|
$ repo init -u https://android.googlesource.com/platform/manifest -g all,-notdefault,tools
|
|
$ repo sync [-j N]
|
|
|
|
The libraries that are sourced in tools/base and tools/swt are converted to
|
|
prebuilts which are located in prebuilts/devtools. These prebuilts are the
|
|
ones being used when doing a "make sdk".
|
|
|
|
|
|
----------
|
|
1- I don't build full SDKs but I want to change tool X:
|
|
----------
|
|
|
|
Let's say as an example you want to change lint.
|
|
It's now located in tools/base/lint.
|
|
|
|
To build it from the command-line, you'd use "gradle" as such:
|
|
|
|
$ cd tools/base
|
|
$ ./gradlew lint:build
|
|
|
|
Output is located in $TOP/out/host/gradle/tools/base/lint/libs/
|
|
|
|
Some comments/tips:
|
|
- Gradle is a build system, a bit like make or ant.
|
|
If you want to know more, visit http://www.gradle.org/
|
|
|
|
- On Windows with the CMD shell, use ./gradlew.bat.
|
|
For Cygwin, Linux or Mac, use ./gradlew.
|
|
|
|
- Gradle targets are in the form "project-name:task-name".
|
|
To get a list of possible tasks, try this: $ ./gradlew lint:tasks
|
|
|
|
- Generally there are only 2 task names to remember:
|
|
$ ./gradlew lint:assemble ==> builds but do not run tests.
|
|
$ ./gradlew lint:check ==> runs tests and checks such as findbugs.
|
|
|
|
- To find the list of project-names you can use with gradle:
|
|
$ ./gradlew projects
|
|
|
|
The new moved projects are unsurprisingly named like their former "make"
|
|
counterparts. They are split between 2 repos:
|
|
- tools/swt contains all SWT-dependent projects.
|
|
- tools/base contains all other non-SWT projects.
|
|
|
|
However that means that when you want to modify a project using both repos,
|
|
you need an extra step.
|
|
|
|
For example, the SDK Manager UI is located in /tools/swt/sdkmanager.
|
|
However it does depend on /tools/base/sdklib. Let's say you want to
|
|
make a change in both sdklib and sdkuilib. Here are the steps:
|
|
|
|
$ # Edit tools/base/sdklib files.
|
|
$ cd tools/base ; ./gradlew sdklib:publishLocal
|
|
=> this builds sdklib and "publishes" an sdklib.JAR into a local maven
|
|
repo located in the out/gradle folder. Note that this is just a
|
|
temporary build artifact and is NOT used by "make sdk".
|
|
|
|
$ # Edit tools/swt/sdkmanager/sdkuilib files to use the changes from sdklib.
|
|
$ cd ../../tools/swt ; ./gradlew sdkuilib:assemble
|
|
=> this builds sdkuilib by using the local JAR of sdklib that is
|
|
located in the out/gradlew folder.
|
|
|
|
|
|
|
|
----------
|
|
2- How do I change some tools sources and build a new SDK using these?
|
|
----------
|
|
|
|
Let's say you changed something in tools/base/lint and run "make sdk" from
|
|
the top dir. Your changes will NOT be included in the resulting SDK.
|
|
|
|
That's because the SDK has been changed to only rely on the prebuilts located
|
|
in /prebuilts/devtools. There are pros and cons with this approach and we're
|
|
not going to discuss them here. Instead we'll focus on what you need to do.
|
|
|
|
It's fairly simple. Go back to the top dir on your Android tree and run:
|
|
|
|
$ prebuilts/devtools/update_jars.sh -f
|
|
$ make sdk
|
|
|
|
Now your changes are included in the generated SDK.
|
|
|
|
What you should know about the update_jars.sh script:
|
|
- Without argument, it prints what it would do but does nothing.
|
|
Use the "-f" argument to make it build/copy stuff.
|
|
|
|
- It builds indiscriminiately. It just builds ALL the libs from
|
|
tools/base and tools/swt and updates all the JARs under prebuilts/devtools.
|
|
That should only take 20-30 seconds though. Eventually we'll work on
|
|
making it smarter because obviously we don't want anyone to just try
|
|
to submit 30 JARs just because their timestamp changed.
|
|
|
|
- It generates a git merge msg in prebuilts/devtools that has the sha1
|
|
of the corresponding tools/base and tools/swt projects.
|
|
Use option -m to prevent this.
|
|
|
|
|
|
------
|
|
|
|
Need a place to discuss all this?
|
|
http://groups.google.com/group/adt-dev is the right place.
|
|
|
|
--- RM 20130409
|
|
|
|
|