1#!/bin/sh
2# Copyright 2008, The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#     http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
16# Set up prog to be the path of this script, including following symlinks,
17# and set up progdir to be the fully-qualified pathname of its directory.
18
19prog="$0"
20while [ -h "${prog}" ]; do
21    newProg=`/bin/ls -ld "${prog}"`
22    newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
23    if expr "x${newProg}" : 'x/' >/dev/null; then
24        prog="${newProg}"
25    else
26        progdir=`dirname "${prog}"`
27        prog="${progdir}/${newProg}"
28    fi
29done
30oldwd=`pwd`
31progdir=`dirname "${prog}"`
32cd "${progdir}"
33progdir=`pwd`
34prog="${progdir}"/`basename "${prog}"`
35cd "${oldwd}"
36
37jarfile=hierarchyviewer2.jar
38frameworkdir="$progdir"
39libdir="$progdir"
40if [ ! -r "$frameworkdir/$jarfile" ]
41then
42    frameworkdir=`dirname "$progdir"`/tools/lib
43    libdir=`dirname "$progdir"`/tools/lib
44fi
45if [ ! -r "$frameworkdir/$jarfile" ]
46then
47    frameworkdir=`dirname "$progdir"`/framework
48    libdir=`dirname "$progdir"`/lib
49fi
50if [ ! -r "$frameworkdir/$jarfile" ]
51then
52    echo `basename "$prog"`": can't find $jarfile"
53    exit 1
54fi
55
56
57# Check args.
58if [ debug = "$1" ]; then
59    # add this in for debugging
60    java_debug=-agentlib:jdwp=transport=dt_socket,server=y,address=8050,suspend=y
61    shift 1
62else
63    java_debug=
64fi
65
66javaCmd="java"
67
68# Mac OS X needs an additional arg, or you get an "illegal thread" complaint.
69if [ `uname` = "Darwin" ]; then
70    os_opts="-XstartOnFirstThread"
71else
72    os_opts=
73fi
74
75if [ `uname` = "Linux" ]; then
76    export GDK_NATIVE_WINDOWS=true
77fi
78
79jarpath="$frameworkdir/$jarfile:$frameworkdir/swtmenubar.jar"
80
81# Figure out the path to the swt.jar for the current architecture.
82# if ANDROID_SWT is defined, then just use this.
83# else, if running in the Android source tree, then look for the correct swt folder in prebuilt
84# else, look for the correct swt folder in the SDK under tools/lib/
85swtpath=""
86if [ -n "$ANDROID_SWT" ]; then
87    swtpath="$ANDROID_SWT"
88else
89    vmarch=`${javaCmd} -jar "${frameworkdir}"/archquery.jar`
90    if [ -n "$ANDROID_BUILD_TOP" ]; then
91        osname=`uname -s | tr A-Z a-z`
92        swtpath="${ANDROID_BUILD_TOP}/prebuilts/tools/${osname}-${vmarch}/swt"
93    else
94        swtpath="${frameworkdir}/${vmarch}"
95    fi
96fi
97
98if [ ! -d "$swtpath" ]; then
99    echo "SWT folder '${swtpath}' does not exist."
100    echo "Please export ANDROID_SWT to point to the folder containing swt.jar for your platform."
101    exit 1
102fi
103
104# need to use "java.ext.dirs" because "-jar" causes classpath to be ignored
105# might need more memory, e.g. -Xmx128M
106echo "The standalone version of hieararchyviewer is deprecated."
107echo "Please use Android Device Monitor (tools/monitor) instead."
108exec "$javaCmd" \
109    -Xmx512M $os_opts $java_debug \
110    -Dcom.android.hierarchyviewer.bindir="$progdir" \
111    -classpath "$jarpath:$swtpath/swt.jar" \
112    com.android.hierarchyviewer.HierarchyViewerApplication "$@"
113