Skip to content

Commit a7fa2e9

Browse files
committed
验证16kb对齐
1 parent 5584ad6 commit a7fa2e9

File tree

3 files changed

+123
-5
lines changed

3 files changed

+123
-5
lines changed

check_elf_alignment.sh

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
#!/bin/bash
2+
progname="${0##*/}"
3+
progname="${progname%.sh}"
4+
5+
# usage: check_elf_alignment.sh [path to *.so files|path to *.apk]
6+
7+
cleanup_trap() {
8+
if [ -n "${tmp}" -a -d "${tmp}" ]; then
9+
rm -rf ${tmp}
10+
fi
11+
exit $1
12+
}
13+
14+
usage() {
15+
echo "Host side script to check the ELF alignment of shared libraries."
16+
echo "Shared libraries are reported ALIGNED when their ELF regions are"
17+
echo "16 KB or 64 KB aligned. Otherwise they are reported as UNALIGNED."
18+
echo
19+
echo "Usage: ${progname} [input-path|input-APK|input-APEX]"
20+
}
21+
22+
if [ ${#} -ne 1 ]; then
23+
usage
24+
exit
25+
fi
26+
27+
case ${1} in
28+
--help | -h | -\?)
29+
usage
30+
exit
31+
;;
32+
33+
*)
34+
dir="${1}"
35+
;;
36+
esac
37+
38+
if ! [ -f "${dir}" -o -d "${dir}" ]; then
39+
echo "Invalid file: ${dir}" >&2
40+
exit 1
41+
fi
42+
43+
if [[ "${dir}" == *.apk ]]; then
44+
trap 'cleanup_trap' EXIT
45+
46+
echo
47+
echo "Recursively analyzing $dir"
48+
echo
49+
50+
if { zipalign --help 2>&1 | grep -q "\-P <pagesize_kb>"; }; then
51+
echo "=== APK zip-alignment ==="
52+
zipalign -v -c -P 16 4 "${dir}" | egrep 'lib/arm64-v8a|lib/x86_64|Verification'
53+
echo "========================="
54+
else
55+
echo "NOTICE: Zip alignment check requires build-tools version 35.0.0-rc3 or higher."
56+
echo " You can install the latest build-tools by running the below command"
57+
echo " and updating your \$PATH:"
58+
echo
59+
echo " sdkmanager \"build-tools;35.0.0-rc3\""
60+
fi
61+
62+
dir_filename=$(basename "${dir}")
63+
tmp=$(mktemp -d -t "${dir_filename%.apk}_out_XXXXX")
64+
unzip "${dir}" lib/* -d "${tmp}" >/dev/null 2>&1
65+
dir="${tmp}"
66+
fi
67+
68+
if [[ "${dir}" == *.apex ]]; then
69+
trap 'cleanup_trap' EXIT
70+
71+
echo
72+
echo "Recursively analyzing $dir"
73+
echo
74+
75+
dir_filename=$(basename "${dir}")
76+
tmp=$(mktemp -d -t "${dir_filename%.apex}_out_XXXXX")
77+
deapexer extract "${dir}" "${tmp}" || { echo "Failed to deapex." && exit 1; }
78+
dir="${tmp}"
79+
fi
80+
81+
RED="\e[31m"
82+
GREEN="\e[32m"
83+
ENDCOLOR="\e[0m"
84+
85+
unaligned_libs=()
86+
87+
echo
88+
echo "=== ELF alignment ==="
89+
90+
matches="$(find "${dir}" -type f)"
91+
IFS=$'\n'
92+
for match in $matches; do
93+
# We could recursively call this script or rewrite it to though.
94+
[[ "${match}" == *".apk" ]] && echo "WARNING: doesn't recursively inspect .apk file: ${match}"
95+
[[ "${match}" == *".apex" ]] && echo "WARNING: doesn't recursively inspect .apex file: ${match}"
96+
97+
[[ $(file "${match}") == *"ELF"* ]] || continue
98+
99+
res="$(objdump -p "${match}" | grep LOAD | awk '{ print $NF }' | head -1)"
100+
if [[ $res =~ 2\*\*(1[4-9]|[2-9][0-9]|[1-9][0-9]{2,}) ]]; then
101+
echo -e "${match}: ${GREEN}ALIGNED${ENDCOLOR} ($res)"
102+
else
103+
echo -e "${match}: ${RED}UNALIGNED${ENDCOLOR} ($res)"
104+
unaligned_libs+=("${match}")
105+
fi
106+
done
107+
108+
if [ ${#unaligned_libs[@]} -gt 0 ]; then
109+
echo -e "${RED}Found ${#unaligned_libs[@]} unaligned libs (only arm64-v8a/x86_64 libs need to be aligned).${ENDCOLOR}"
110+
elif [ -n "${dir_filename}" ]; then
111+
echo -e "ELF Verification Successful"
112+
fi
113+
echo "====================="

sdk/video-link-android/build.gradle

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,11 @@ dependencies {
5050
// api('com.tencent.iot.thirdparty.android:xp2p-sdk:latest.integration') {
5151
// changing = true
5252
// }
53-
api 'com.tencent.iot.thirdparty.android:xp2p-sdk:2.4.56'
54-
api 'com.tencent.iot.thirdparty.android:iot-gvoice-android:1.0.1'
55-
api 'com.tencent.iot.thirdparty.android:media-server:1.0.7'
56-
api 'io.github.sundoggynew:iot-soundtouch:1.0.0'
57-
api 'io.github.sundoggynew:iot-voice-changer:1.0.0'
53+
api 'com.tencent.iot.thirdparty.android:xp2p-sdk:2.4.56.1'
54+
api 'com.tencent.iot.thirdparty.android:iot-gvoice-android:1.0.3'
55+
api 'com.tencent.iot.thirdparty.android:media-server:1.0.8'
56+
api 'com.tencent.iot.thirdparty.android:iot-soundtouch:1.0.2'
57+
api 'com.tencent.iot.thirdparty.android:iot-voice-changer:1.0.1'
5858
}
5959

6060
configurations.all {

sdkdemo/build.gradle

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@ android {
8585
includeAndroidResources = true
8686
}
8787
}
88+
packagingOptions {
89+
jniLibs {
90+
useLegacyPackaging true
91+
}
92+
}
8893
}
8994

9095
dependencies {

0 commit comments

Comments
 (0)