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