OLD | NEW |
1 #!/bin/bash | 1 #!/bin/bash |
2 # | 2 # |
3 # android_setup.sh: Sets environment variables used by other Android scripts. | 3 # android_setup.sh: Sets environment variables used by other Android scripts. |
4 | 4 |
5 # Parse the arguments for a DEVICE_ID. | 5 # Fail-fast if anything in the script fails. |
6 DEVICE_ID="" | 6 set -e |
7 DEVICE_SERIAL="" | 7 |
| 8 BUILDTYPE=${BUILDTYPE-Debug} |
| 9 |
8 while (( "$#" )); do | 10 while (( "$#" )); do |
9 if [[ $(echo "$1" | grep "^-d$") != "" ]]; | 11 if [[ "$1" == "-d" ]]; then |
10 then | |
11 DEVICE_ID=$2 | 12 DEVICE_ID=$2 |
12 shift | 13 shift |
13 elif [[ "$1" == "-s" ]]; | 14 elif [[ "$1" == "-s" ]]; then |
14 then | |
15 if [[ $# -lt 2 ]]; | |
16 then | |
17 echo "ERROR: missing serial number" | |
18 exit 1; | |
19 fi | |
20 DEVICE_SERIAL="-s $2" | 15 DEVICE_SERIAL="-s $2" |
21 shift | 16 shift |
22 elif [[ $(echo "$1" | grep "^BUILDTYPE=") != "" ]]; | 17 elif [[ "$1" == "-t" ]]; then |
23 then | 18 BUILDTYPE=$2 |
24 BUILDTYPE=${1##BUILDTYPE=} | 19 shift |
| 20 elif [[ "$1" == "--release" ]]; then |
| 21 BUILDTYPE=Release |
25 else | 22 else |
26 APP_ARGS=("${APP_ARGS[@]}" "${1}") | 23 APP_ARGS=("${APP_ARGS[@]}" "${1}") |
27 fi | 24 fi |
28 | |
29 shift | 25 shift |
30 done | 26 done |
31 | 27 |
32 function verbose { | 28 function verbose { |
33 if [[ -n $SKIA_ANDROID_VERBOSE_SETUP ]]; then | 29 if [[ -n $VERBOSE ]]; then |
34 echo $@ | 30 echo $@ |
35 fi | 31 fi |
36 } | 32 } |
37 | 33 |
38 function exportVar { | 34 function exportVar { |
39 NAME=$1 | 35 NAME=$1 |
40 VALUE=$2 | 36 VALUE=$2 |
41 verbose export $NAME=\"$VALUE\" | 37 verbose export $NAME=\"$VALUE\" |
42 export $NAME="$VALUE" | 38 export $NAME="$VALUE" |
43 } | 39 } |
44 | 40 |
45 SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" | 41 function absPath { |
| 42 (cd $1; pwd) |
| 43 } |
46 | 44 |
47 # A valid Android SDK installation is required to build the sample app. | 45 SCRIPT_DIR=$(absPath "$(dirname "$BASH_SOURCE[0]}")") |
| 46 |
48 if [ -z "$ANDROID_SDK_ROOT" ]; then | 47 if [ -z "$ANDROID_SDK_ROOT" ]; then |
49 ANDROID_TOOL=$(which android 2>/dev/null) | 48 if ANDROID_SDK_ROOT="$(dirname $(which android))/.."; then |
50 if [ -z "$ANDROID_TOOL" ]; then | 49 exportVar ANDROID_SDK_ROOT $ANDROID_SDK_ROOT |
51 echo "ERROR: Please define ANDROID_SDK_ROOT in your environment to point" | 50 else |
52 echo " to a valid Android SDK installation." | 51 echo "No ANDROID_SDK_ROOT set and can't auto detect it from location of and
roid binary." |
53 exit 1 | 52 exit 1 |
54 fi | 53 fi |
55 ANDROID_SDK_ROOT=$(cd $(dirname "$ANDROID_TOOL")/.. && pwd) | |
56 exportVar ANDROID_SDK_ROOT "$ANDROID_SDK_ROOT" | |
57 fi | |
58 | |
59 # ant is required to be installed on your system and in your PATH | |
60 which ant &> /dev/null | |
61 if [[ "$?" != "0" ]]; then | |
62 echo "ERROR: Unable to find ant. Please install it before proceeding." | |
63 exit 1 | |
64 fi | 54 fi |
65 | 55 |
66 # check to see that gclient sync ran successfully | 56 # check to see that gclient sync ran successfully |
67 THIRD_PARTY_EXTERNAL_DIR=${SCRIPT_DIR}/../third_party/externals | 57 THIRD_PARTY_EXTERNAL_DIR=${SCRIPT_DIR}/../third_party/externals |
68 if [ ! -d "$THIRD_PARTY_EXTERNAL_DIR" ]; then | 58 if [ ! -d "$THIRD_PARTY_EXTERNAL_DIR" ]; then |
69 echo "" | 59 echo "" |
70 echo "ERROR: Unable to find the required third_party dependencies needed
to build." | 60 echo "ERROR: Unable to find the required third_party dependencies needed
to build." |
71 echo " To fix this add the following line to your .gclient file an
d run 'gclient sync'" | 61 echo " To fix this add the following line to your .gclient file an
d run 'gclient sync'" |
72 echo " target_os = ['android']" | 62 echo " target_os = ['android']" |
73 echo "" | 63 echo "" |
74 exit 1; | 64 exit 1; |
75 fi | 65 fi |
76 | 66 |
77 # Helper function to determine and download the toolchain that we will be using. | 67 # Helper function to determine and download the toolchain that we will be using. |
78 setup_toolchain() { | 68 setup_toolchain() { |
79 API_LEVEL=14 | 69 API_LEVEL=14 |
80 | 70 NDK_REV=${NDK_REV-8e} |
81 if [[ -z "$NDK_REV" ]]; | 71 ANDROID_ARCH=${ANDROID_ARCH-arm} |
82 then | |
83 NDK_REV="8e" | |
84 fi | |
85 | |
86 if [[ -z "$ANDROID_ARCH" ]]; | |
87 then | |
88 ANDROID_ARCH="arm" | |
89 fi | |
90 | 72 |
91 TOOLCHAIN_DIR=${SCRIPT_DIR}/../toolchains | 73 TOOLCHAIN_DIR=${SCRIPT_DIR}/../toolchains |
92 if [ $(uname) == "Linux" ]; then | 74 if [ $(uname) == "Darwin" ]; then |
93 verbose "Using Linux toolchain." | |
94 TOOLCHAIN_TYPE=ndk-r$NDK_REV-$ANDROID_ARCH-linux_v$API_LEVEL | |
95 elif [ $(uname) == "Darwin" ]; then | |
96 verbose "Using Mac toolchain." | 75 verbose "Using Mac toolchain." |
97 TOOLCHAIN_TYPE=ndk-r$NDK_REV-$ANDROID_ARCH-mac_v$API_LEVEL | 76 TOOLCHAIN_TYPE=ndk-r$NDK_REV-$ANDROID_ARCH-mac_v$API_LEVEL |
98 else | 77 else |
99 verbose "Could not automatically determine toolchain! Defaulting to Linux." | 78 verbose "Using Linux toolchain." |
100 TOOLCHAIN_TYPE=ndk-r$NDK_REV-$ANDROID_ARCH-linux_v$API_LEVEL | 79 TOOLCHAIN_TYPE=ndk-r$NDK_REV-$ANDROID_ARCH-linux_v$API_LEVEL |
101 fi | 80 fi |
102 exportVar ANDROID_TOOLCHAIN ${TOOLCHAIN_DIR}/${TOOLCHAIN_TYPE}/bin | 81 exportVar ANDROID_TOOLCHAIN "${TOOLCHAIN_DIR}/${TOOLCHAIN_TYPE}/bin" |
103 | 82 |
104 # if the toolchain doesn't exist on your machine then we need to fetch it | 83 # if the toolchain doesn't exist on your machine then we need to fetch it |
105 if [ ! -d "$ANDROID_TOOLCHAIN" ]; then | 84 if [ ! -d "$ANDROID_TOOLCHAIN" ]; then |
106 # create the toolchain directory if needed | 85 mkdir -p $TOOLCHAIN_DIR |
107 if [ ! -d "$TOOLCHAIN_DIR" ]; then | |
108 mkdir $TOOLCHAIN_DIR | |
109 fi | |
110 # enter the toolchain directory then download, unpack, and remove the tarbal
l | 86 # enter the toolchain directory then download, unpack, and remove the tarbal
l |
111 pushd $TOOLCHAIN_DIR | 87 pushd $TOOLCHAIN_DIR |
112 TARBALL=ndk-r$NDK_REV-v$API_LEVEL.tgz | 88 TARBALL=ndk-r$NDK_REV-v$API_LEVEL.tgz |
113 | 89 |
114 echo "Downloading $TARBALL ..." | 90 ${SCRIPT_DIR}/download_toolchains.py \ |
115 ${SCRIPT_DIR}/download_toolchains.py http://chromium-skia-gm.commondatastora
ge.googleapis.com/android-toolchains/$TARBALL $TOOLCHAIN_DIR/$TARBALL | 91 http://chromium-skia-gm.commondatastorage.googleapis.com/android-toolcha
ins/$TARBALL \ |
116 if [[ "$?" != "0" ]]; then | 92 $TOOLCHAIN_DIR/$TARBALL |
117 echo "ERROR: Unable to download toolchain $TARBALL." | |
118 exit 1 | |
119 fi | |
120 | |
121 echo "Untarring $TOOLCHAIN_TYPE from $TARBALL." | |
122 tar -xzf $TARBALL $TOOLCHAIN_TYPE | 93 tar -xzf $TARBALL $TOOLCHAIN_TYPE |
123 echo "Removing $TARBALL" | |
124 rm $TARBALL | 94 rm $TARBALL |
125 popd | 95 popd |
126 fi | 96 fi |
127 | 97 |
128 if [ ! -d "$ANDROID_TOOLCHAIN" ]; then | 98 if [ ! -d "$ANDROID_TOOLCHAIN" ]; then |
129 echo "ERROR: unable to download/setup the required toolchain (${TOOLCHAIN_TY
PE})" | 99 echo "ERROR: unable to download/setup the required toolchain (${TOOLCHAIN_TY
PE})" |
130 return 1; | 100 return 1; |
131 fi | 101 fi |
132 | 102 |
133 verbose "The build is targeting NDK API level $API_LEVEL for use on Android 4.
0 (NDK Revision $NDK_REV) and above" | 103 verbose "Targeting NDK API $API_LEVEL for use on Android 4.0 (NDK Revision $ND
K_REV) and above" |
134 | 104 |
135 LS="/bin/ls" # Use directly to avoid any 'ls' alias that might be defined. | 105 GCC=$(command ls $ANDROID_TOOLCHAIN/*-gcc | head -n1) |
136 GCC=$($LS $ANDROID_TOOLCHAIN/*-gcc | head -n1) | |
137 if [ -z "$GCC" ]; then | 106 if [ -z "$GCC" ]; then |
138 echo "ERROR: Could not find Android cross-compiler in: $ANDROID_TOOLCHAIN" | 107 echo "ERROR: Could not find Android cross-compiler in: $ANDROID_TOOLCHAIN" |
139 return 1 | 108 return 1 |
140 fi | 109 fi |
141 | 110 |
142 # Remove the '-gcc' at the end to get the full toolchain prefix | 111 # Remove the '-gcc' at the end to get the full toolchain prefix |
143 ANDROID_TOOLCHAIN_PREFIX=${GCC%%-gcc} | 112 ANDROID_TOOLCHAIN_PREFIX=${GCC%%-gcc} |
144 | 113 |
145 if [[ -z "$ANDROID_MAKE_CCACHE" ]]; then | 114 CCACHE=${ANDROID_MAKE_CCACHE-$(which ccache || true)} |
146 export CC="$ANDROID_TOOLCHAIN_PREFIX-gcc" | 115 |
147 export CXX="$ANDROID_TOOLCHAIN_PREFIX-g++" | 116 exportVar CC "$CCACHE $ANDROID_TOOLCHAIN_PREFIX-gcc" |
148 export LINK="$ANDROID_TOOLCHAIN_PREFIX-gcc" | 117 exportVar CXX "$CCACHE $ANDROID_TOOLCHAIN_PREFIX-g++" |
149 else | 118 exportVar LINK "$CCACHE $ANDROID_TOOLCHAIN_PREFIX-gcc" |
150 export CC="$ANDROID_MAKE_CCACHE $ANDROID_TOOLCHAIN_PREFIX-gcc" | 119 |
151 export CXX="$ANDROID_MAKE_CCACHE $ANDROID_TOOLCHAIN_PREFIX-g++" | 120 exportVar AR "$ANDROID_TOOLCHAIN_PREFIX-ar" |
152 export LINK="$ANDROID_MAKE_CCACHE $ANDROID_TOOLCHAIN_PREFIX-gcc" | 121 exportVar RANLIB "$ANDROID_TOOLCHAIN_PREFIX-ranlib" |
153 fi | 122 exportVar OBJCOPY "$ANDROID_TOOLCHAIN_PREFIX-objcopy" |
154 export AR="$ANDROID_TOOLCHAIN_PREFIX-ar" | 123 exportVar STRIP "$ANDROID_TOOLCHAIN_PREFIX-strip" |
155 export RANLIB="$ANDROID_TOOLCHAIN_PREFIX-ranlib" | 124 |
156 export OBJCOPY="$ANDROID_TOOLCHAIN_PREFIX-objcopy" | 125 # Create symlinks for nm & readelf and add them to the path so that the ninja |
157 export STRIP="$ANDROID_TOOLCHAIN_PREFIX-strip" | 126 # build uses them instead of attempting to use the one on the system. |
158 | 127 # This is required to build using ninja on a Mac. |
159 # create symlinks for nm & readelf and add them to the path so that the ninja | |
160 # build uses them instead of attempting to use the one on the system | |
161 ln -sf $ANDROID_TOOLCHAIN_PREFIX-nm $ANDROID_TOOLCHAIN/nm | 128 ln -sf $ANDROID_TOOLCHAIN_PREFIX-nm $ANDROID_TOOLCHAIN/nm |
162 ln -sf $ANDROID_TOOLCHAIN_PREFIX-readelf $ANDROID_TOOLCHAIN/readelf | 129 ln -sf $ANDROID_TOOLCHAIN_PREFIX-readelf $ANDROID_TOOLCHAIN/readelf |
163 export PATH=$ANDROID_TOOLCHAIN:$PATH | 130 exportVar PATH $ANDROID_TOOLCHAIN:$PATH |
164 | |
165 } | 131 } |
166 | 132 |
167 # Helper function to configure the GYP defines to the appropriate values | 133 # Helper function to configure the GYP defines to the appropriate values |
168 # based on the target device. | 134 # based on the target device. |
169 setup_device() { | 135 setup_device() { |
170 DEFINES="OS=android" | 136 DEFINES="OS=android" |
171 DEFINES="${DEFINES} host_os=$(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/'
)" | 137 DEFINES="${DEFINES} host_os=$(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/'
)" |
172 DEFINES="${DEFINES} skia_os=android" | 138 DEFINES="${DEFINES} skia_os=android" |
173 DEFINES="${DEFINES} android_base=${SCRIPT_DIR}/.." | 139 DEFINES="${DEFINES} android_base=$(absPath ${SCRIPT_DIR}/..)" |
174 if [[ "$GYP_DEFINES" != *skia_shared_lib=* ]]; then | 140 if [[ "$GYP_DEFINES" != *skia_shared_lib=* ]]; then |
175 DEFINES="${DEFINES} skia_shared_lib=1" | 141 DEFINES="${DEFINES} skia_shared_lib=1" |
176 fi | 142 fi |
177 | 143 |
178 # Setup the build variation depending on the target device | 144 # Setup the build variation depending on the target device |
179 TARGET_DEVICE="$1" | 145 TARGET_DEVICE="$1" |
180 | 146 |
181 if [ -z "$TARGET_DEVICE" ]; then | 147 if [ -z "$TARGET_DEVICE" ]; then |
182 if [ -f .android_config ]; then | 148 if [ -f .android_config ]; then |
183 TARGET_DEVICE=$(cat .android_config) | 149 TARGET_DEVICE=$(cat .android_config) |
184 verbose "INFO: no target device was specified so using the device (${TARGE
T_DEVICE}) from the most recent build" | 150 verbose "no target device (-d), using ${TARGET_DEVICE} from most recent bu
ild" |
185 else | 151 else |
186 TARGET_DEVICE="arm_v7_thumb" | 152 TARGET_DEVICE="arm_v7_thumb" |
187 verbose "INFO: no target device type was specified so using the default '$
{TARGET_DEVICE}'" | 153 verbose "no target device (-d), using ${TARGET_DEVICE}" |
188 fi | 154 fi |
189 fi | 155 fi |
190 | 156 |
191 case $TARGET_DEVICE in | 157 case $TARGET_DEVICE in |
192 nexus_s) | 158 nexus_s) |
193 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 arm_version=7 arm_thumb=
1" | 159 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 arm_version=7 arm_thumb=
1" |
194 DEFINES="${DEFINES} skia_resource_cache_mb_limit=24" | 160 DEFINES="${DEFINES} skia_resource_cache_mb_limit=24" |
195 ANDROID_ARCH="arm" | 161 ANDROID_ARCH="arm" |
196 ;; | 162 ;; |
197 nexus_4 | nexus_7 | nexus_10) | 163 nexus_4 | nexus_7 | nexus_10) |
198 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 arm_version=7 arm_thumb=
1" | 164 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 arm_version=7 arm_thumb=
1" |
199 ANDROID_ARCH="arm" | 165 ANDROID_ARCH="arm" |
200 ;; | 166 ;; |
201 xoom) | 167 xoom) |
202 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=0 arm_version=7 arm_thumb=
1" | 168 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=0 arm_version=7 arm_thumb=
1" |
203 ANDROID_ARCH="arm" | 169 ANDROID_ARCH="arm" |
204 ;; | 170 ;; |
205 galaxy_nexus) | 171 galaxy_nexus) |
206 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 arm_version=7 arm_thumb=
1" | 172 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 arm_version=7 arm_thumb=
1" |
207 DEFINES="${DEFINES} skia_resource_cache_mb_limit=32" | 173 DEFINES="${DEFINES} skia_resource_cache_mb_limit=32" |
208 ANDROID_ARCH="arm" | 174 ANDROID_ARCH="arm" |
209 ;; | 175 ;; |
210 intel_rhb) | 176 intel_rhb | razr_i | x86) |
211 DEFINES="${DEFINES} skia_arch_type=x86 skia_arch_width=32" | 177 DEFINES="${DEFINES} skia_arch_type=x86 skia_arch_width=32" |
212 DEFINES="${DEFINES} skia_resource_cache_mb_limit=32" | 178 DEFINES="${DEFINES} skia_resource_cache_mb_limit=32" |
213 ANDROID_ARCH="x86" | 179 ANDROID_ARCH="x86" |
214 ;; | |
215 razr_i) | |
216 DEFINES="${DEFINES} skia_arch_type=x86 skia_arch_width=32" | |
217 DEFINES="${DEFINES} skia_resource_cache_mb_limit=32" | |
218 ANDROID_ARCH="x86" | |
219 ;; | 180 ;; |
220 arm_v7) | 181 arm_v7) |
221 DEFINES="${DEFINES} skia_arch_type=arm arm_neon_optional=1 arm_version=7 a
rm_thumb=0" | 182 DEFINES="${DEFINES} skia_arch_type=arm arm_neon_optional=1 arm_version=7 a
rm_thumb=0" |
222 ANDROID_ARCH="arm" | 183 ANDROID_ARCH="arm" |
223 ;; | 184 ;; |
224 arm_v7_thumb | nvidia_logan) | 185 arm_v7_thumb | nvidia_logan) |
225 DEFINES="${DEFINES} skia_arch_type=arm arm_neon_optional=1 arm_version=7 a
rm_thumb=1" | 186 DEFINES="${DEFINES} skia_arch_type=arm arm_neon_optional=1 arm_version=7 a
rm_thumb=1" |
226 ANDROID_ARCH="arm" | 187 ANDROID_ARCH="arm" |
227 ;; | 188 ;; |
228 arm) | 189 arm) |
229 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=0 arm_thumb=0" | 190 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=0 arm_thumb=0" |
230 ANDROID_ARCH="arm" | 191 ANDROID_ARCH="arm" |
231 ;; | 192 ;; |
232 arm_thumb) | 193 arm_thumb) |
233 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=0 arm_thumb=1" | 194 DEFINES="${DEFINES} skia_arch_type=arm arm_neon=0 arm_thumb=1" |
234 ANDROID_ARCH="arm" | 195 ANDROID_ARCH="arm" |
235 ;; | 196 ;; |
236 mips) | 197 mips) |
237 DEFINES="${DEFINES} skia_arch_type=mips skia_arch_width=32" | 198 DEFINES="${DEFINES} skia_arch_type=mips skia_arch_width=32" |
238 DEFINES="${DEFINES} skia_resource_cache_mb_limit=32" | 199 DEFINES="${DEFINES} skia_resource_cache_mb_limit=32" |
239 ANDROID_ARCH="mips" | 200 ANDROID_ARCH="mips" |
240 ;; | 201 ;; |
241 x86) | |
242 DEFINES="${DEFINES} skia_arch_type=x86 skia_arch_width=32" | |
243 DEFINES="${DEFINES} skia_resource_cache_mb_limit=32" | |
244 ANDROID_ARCH="x86" | |
245 ;; | |
246 *) | 202 *) |
247 echo -n "ERROR: unknown device specified ($TARGET_DEVICE), valid values: " | 203 echo "ERROR: unknown device $TARGET_DEVICE" |
248 echo "nexus_[s,4,7,10] xoom galaxy_nexus razr_i arm arm_thumb arm_v7 arm_v
7_thumb x86" | 204 exit 1 |
249 return 1; | |
250 ;; | 205 ;; |
251 esac | 206 esac |
252 | 207 |
253 verbose "The build is targeting the device: $TARGET_DEVICE" | 208 verbose "The build is targeting the device: $TARGET_DEVICE" |
254 export DEVICE_ID="$TARGET_DEVICE" | 209 exportVar DEVICE_ID $TARGET_DEVICE |
255 | 210 |
256 # Set up the toolchain. | |
257 setup_toolchain | 211 setup_toolchain |
258 if [[ "$?" != "0" ]]; then | 212 |
259 return 1 | |
260 fi | |
261 DEFINES="${DEFINES} android_toolchain=${TOOLCHAIN_TYPE}" | 213 DEFINES="${DEFINES} android_toolchain=${TOOLCHAIN_TYPE}" |
262 | 214 |
263 exportVar GYP_DEFINES "$DEFINES $GYP_DEFINES" | 215 exportVar GYP_DEFINES "$DEFINES $GYP_DEFINES" |
264 exportVar SKIA_OUT "out/config/android-${TARGET_DEVICE}" | 216 exportVar SKIA_OUT "out/config/android-${TARGET_DEVICE}" |
265 } | 217 } |
266 | 218 |
267 # adb_pull_if_needed(android_src, host_dst) | 219 # adb_pull_if_needed(android_src, host_dst) |
268 adb_pull_if_needed() { | 220 adb_pull_if_needed() { |
269 | 221 |
270 # get adb location | 222 # get adb location |
271 source $SCRIPT_DIR/utils/setup_adb.sh | 223 source $SCRIPT_DIR/utils/setup_adb.sh |
272 | 224 |
273 # read input params | 225 # read input params |
274 ANDROID_SRC="$1" | 226 ANDROID_SRC="$1" |
275 HOST_DST="$2" | 227 HOST_DST="$2" |
276 | 228 |
277 if [ -d $HOST_DST ]; | 229 if [ -d $HOST_DST ]; |
278 then | 230 then |
279 HOST_DST="${HOST_DST}/$(basename ${ANDROID_SRC})" | 231 HOST_DST="${HOST_DST}/$(basename ${ANDROID_SRC})" |
280 fi | 232 fi |
281 | 233 |
282 echo "HOST: $HOST_DST" | |
283 | 234 |
284 if [ -f $HOST_DST ]; | 235 if [ -f $HOST_DST ]; |
285 then | 236 then |
286 #get the MD5 for dst and src | 237 #get the MD5 for dst and src |
287 ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5 $ANDROID_SRC` | 238 ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5 $ANDROID_SRC` |
288 if [ $(uname) == "Darwin" ]; then | 239 if [ $(uname) == "Darwin" ]; then |
289 HOST_MD5=`md5 -q $HOST_DST` | 240 HOST_MD5=`md5 -q $HOST_DST` |
290 else | 241 else |
291 HOST_MD5=`md5sum $HOST_DST` | 242 HOST_MD5=`md5sum $HOST_DST` |
292 fi | 243 fi |
293 | 244 |
294 if [ "${ANDROID_MD5:0:32}" != "${HOST_MD5:0:32}" ]; | 245 if [ "${ANDROID_MD5:0:32}" != "${HOST_MD5:0:32}" ]; then |
295 then | 246 echo -n "$HOST_DST " |
296 $ADB $DEVICE_SERIAL pull $ANDROID_SRC $HOST_DST | 247 $ADB $DEVICE_SERIAL pull $ANDROID_SRC $HOST_DST |
297 # else | |
298 # echo "md5 match of android [$ANDROID_SRC] and host [$HOST_DST]" | |
299 fi | 248 fi |
300 else | 249 else |
| 250 echo -n "$HOST_DST " |
301 $ADB $DEVICE_SERIAL pull $ANDROID_SRC $HOST_DST | 251 $ADB $DEVICE_SERIAL pull $ANDROID_SRC $HOST_DST |
302 fi | 252 fi |
303 } | 253 } |
304 | 254 |
305 # adb_push_if_needed(host_src, android_dst) | 255 # adb_push_if_needed(host_src, android_dst) |
306 adb_push_if_needed() { | 256 adb_push_if_needed() { |
307 | 257 |
308 # get adb location | 258 # get adb location |
309 source $SCRIPT_DIR/utils/setup_adb.sh | 259 source $SCRIPT_DIR/utils/setup_adb.sh |
310 | 260 |
311 # read input params | 261 # read input params |
312 HOST_SRC="$1" | 262 HOST_SRC="$1" |
313 ANDROID_DST="$2" | 263 ANDROID_DST="$2" |
314 | 264 |
315 ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld $ANDROID_DST` | 265 ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld $ANDROID_DST` |
316 if [ "${ANDROID_LS:0:1}" == "d" ]; | 266 if [ "${ANDROID_LS:0:1}" == "d" ]; |
317 then | 267 then |
318 ANDROID_DST="${ANDROID_DST}/$(basename ${HOST_SRC})" | 268 ANDROID_DST="${ANDROID_DST}/$(basename ${HOST_SRC})" |
319 fi | 269 fi |
320 | 270 |
321 echo "ANDROID: $ANDROID_DST" | |
322 | 271 |
323 ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld $ANDROID_DST` | 272 ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld $ANDROID_DST` |
324 if [ "${ANDROID_LS:0:1}" == "-" ]; | 273 if [ "${ANDROID_LS:0:1}" == "-" ]; then |
325 then | |
326 #get the MD5 for dst and src | 274 #get the MD5 for dst and src |
327 ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5 $ANDROID_DST` | 275 ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5 $ANDROID_DST` |
328 if [ $(uname) == "Darwin" ]; then | 276 if [ $(uname) == "Darwin" ]; then |
329 HOST_MD5=`md5 -q $HOST_SRC` | 277 HOST_MD5=`md5 -q $HOST_SRC` |
330 else | 278 else |
331 HOST_MD5=`md5sum $HOST_SRC` | 279 HOST_MD5=`md5sum $HOST_SRC` |
332 fi | 280 fi |
333 | 281 |
334 if [ "${ANDROID_MD5:0:32}" != "${HOST_MD5:0:32}" ]; | 282 if [ "${ANDROID_MD5:0:32}" != "${HOST_MD5:0:32}" ]; then |
335 then | 283 echo -n "$ANDROID_DST " |
336 $ADB $DEVICE_SERIAL push $HOST_SRC $ANDROID_DST | 284 $ADB $DEVICE_SERIAL push $HOST_SRC $ANDROID_DST |
337 # else | |
338 # echo "md5 match of android [${ANDROID_DST}] and host [${HOST_SRC}]" | |
339 fi | 285 fi |
340 else | 286 else |
| 287 echo -n "$ANDROID_DST " |
341 $ADB $DEVICE_SERIAL push $HOST_SRC $ANDROID_DST | 288 $ADB $DEVICE_SERIAL push $HOST_SRC $ANDROID_DST |
342 fi | 289 fi |
343 } | 290 } |
344 | 291 |
345 # Set up the device. | |
346 setup_device "${DEVICE_ID}" | 292 setup_device "${DEVICE_ID}" |
347 if [[ "$?" != "0" ]]; then | |
348 exit 1 | |
349 fi | |
OLD | NEW |