#!/bin/bash
java.lang.NullPointerException # Copyright (C) 2013 The Android Open Source Project
java.lang.NullPointerException # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at
java.lang.NullPointerException # http://www.apache.org/licenses/LICENSE-2.0
java.lang.NullPointerException # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License.
# NB This test is likely to be flakey. It attempts to merge random # DEX files from the Android build tree.
# Find dx.jar from dx in the android dev tree
prog=`which dx`
progdir=`dirname "${prog}"`
dxjar=$progdir/../framework/dx.jar
for i in "$dxjar"; do if [ ! -r $i ]; then
echo Missing dependency $i. Build dx-tests. exit1
fi
done
# Find all files that could contain dex bytecode.
candidates=`find "$ANDROID_BUILD_TOP/out" -name '*.dex' -o -name '*.jar' -o -name '*.apk'`
validdexes=()
checksums=() for dex in $candidates; do if [[ "$dex" = *"core"* ]]; then # Ignoring core files as hit limits of merging capability. continue
fi
# Filter out jar files and apks that donot unzip or contain a # classes.dex file. DexMerger assumes file contents based on the # file extension. Android build names some DEX files with a .jar # extension andthis raises an exception in DexMerger as it fails # to unzip them. if [[ "$dex" == *"jar" || "$dex" == *"apk" ]]; then
unzip -l "$dex"2>&1 | grep -q -m 1 classes.dex if [[ $? != 0 ]]; then continue
fi
fi
# Skip duplicate files
checksum=`shasum "$dex" | sed -e 's/ .*//' -e 's/^/_/'` if [[ "$checksums[$checksum]" == "$checksum" ]]; then continue
fi
checksums[$checksum]=$checksum
dexdump -c $dex >/dev/null 2>&1 if [ $? -eq 0 ]; then
validdexes+=("$dex")
fi
done
if [ ${#validdexes[@]} -eq 0 ]; then
echo No valid DEX files found. exit1
fi
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.