Skip to content

Commit d0f620e

Browse files
kirklandsignmalfet
andcommitted
Fix Android automation script (pytorch#850)
Fix some binary PATH Use new prebuilt library for runner Run instrumentation Run emulator in terminal Add CI for Android script Co-authored-by: Nikita Shulga <2453524+malfet@users.noreply.github.com> --------- Co-authored-by: Nikita Shulga <2453524+malfet@users.noreply.github.com>
1 parent 3644977 commit d0f620e

File tree

2 files changed

+40
-15
lines changed

2 files changed

+40
-15
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -276,11 +276,11 @@ If you have Android Studio set up, and you have Java 17 and Android SDK 34 confi
276276

277277
First, you need to download the following AAR file which contains the required Java library and its corresponding JNI library, for the app to build and run. You need to put the file to `android/Torchchat/app/libs/executorch.aar`
278278

279-
[executorch-llama.aar](https://ossci-android.s3.us-west-1.amazonaws.com/executorch/release/0.2/executorch-llama.aar) (SHASUM: 09d17f7bc59589b581e45bb49511d19196d0297d)
279+
[executorch-llama-torchchat.aar](https://ossci-android.s3.us-west-1.amazonaws.com/executorch/release/0.2/executorch-llama-torchchat.aar) (SHASUM: e19ffb15aa3f1b1281de66dd6f71c9a332a82b92)
280280

281281
```
282-
curl https://ossci-android.s3.us-west-1.amazonaws.com/executorch/release/0.2/executorch-llama.aar -o android/Torchchat/app/libs/executorch.aar --create-dirs
283-
echo "09d17f7bc59589b581e45bb49511d19196d0297d android/Torchchat/app/libs/executorch.aar" | shasum --check
282+
curl https://ossci-android.s3.us-west-1.amazonaws.com/executorch/release/0.2/executorch-llama-torchchat.aar -o android/Torchchat/app/libs/executorch.aar --create-dirs
283+
echo "e19ffb15aa3f1b1281de66dd6f71c9a332a82b92 android/Torchchat/app/libs/executorch.aar" | shasum --check
284284
```
285285

286286
You also need to push the model and tokenizer file to your device. Please refer to the docs above on generating the pte and bin file, or use E2E script (see section below) to generate and push the file.

scripts/android_example.sh

Lines changed: 37 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@
77

88
set -eux
99

10+
# In CI environment, we accept SDK license and return automatically
11+
if [ "${1:-}" == "--ci" ]; then
12+
export CI_ENV=1
13+
fi
14+
1015
cd ${TORCHCHAT_ROOT}
1116
echo "Inside: $TORCHCHAT_ROOT"
1217

@@ -25,9 +30,9 @@ else
2530
exit -1
2631
fi
2732

28-
LLAMA_AAR_URL="https://ossci-android.s3.us-west-1.amazonaws.com/executorch/release/0.2/executorch-llama.aar"
33+
LLAMA_AAR_URL="https://ossci-android.s3.us-west-1.amazonaws.com/executorch/release/0.2/executorch-llama-torchchat.aar"
2934

30-
LLAMA_AAR_SHASUM="09d17f7bc59589b581e45bb49511d19196d0297d"
35+
LLAMA_AAR_SHASUM="e19ffb15aa3f1b1281de66dd6f71c9a332a82b92"
3136

3237
mkdir -p ${TORCHCHAT_ROOT}/build/android
3338

@@ -68,12 +73,17 @@ setup_android_sdk_manager() {
6873
unzip commandlinetools.zip
6974
mv cmdline-tools/* sdk/cmdline-tools/latest
7075
export PATH="$(realpath sdk/cmdline-tools/latest/bin):$PATH"
76+
export PATH="$(realpath sdk/platform-tools):$PATH"
7177
popd
7278
}
7379

7480
setup_android_sdk() {
75-
sdkmanager "platforms;android-34"
76-
sdkmanager "platform-tools"
81+
if [ -z "${CI_ENV:-}" ]; then
82+
sdkmanager "platforms;android-34" "platform-tools"
83+
else
84+
yes | sdkmanager "platforms;android-34" "platform-tools"
85+
fi
86+
export ANDROID_HOME="$(realpath build/android/sdk)"
7787
}
7888

7989
download_aar_library() {
@@ -93,27 +103,36 @@ setup_avd() {
93103
echo "adb device detected, skipping avd setup"
94104
return
95105
fi
96-
sdkmanager "emulator"
97-
sdkmanager "system-images;android-34;google_apis;${ANDROID_ABI}"
106+
if [ -z "${CI_ENV:-}" ]; then
107+
sdkmanager "emulator" \
108+
"system-images;android-34;google_apis;${ANDROID_ABI}"
109+
else
110+
yes | sdkmanager "emulator" \
111+
"system-images;android-34;google_apis;${ANDROID_ABI}"
112+
fi
98113
if ! avdmanager list avd | grep -q "torchchat"; then
99-
avdmanager create avd --name "torchchat" --package "system-images;android-34;google_apis;${ANDROID_ABI}"
114+
echo no | avdmanager create avd --name "torchchat" --package "system-images;android-34;google_apis;${ANDROID_ABI}"
115+
fi
116+
export ANDROID_SDK_ROOT=$(realpath ./build/android/)
117+
trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT
118+
if [ -z "${CI_ENV:-}" ]; then
119+
./build/android/sdk/emulator/emulator @torchchat &
120+
else
121+
./build/android/sdk/emulator/emulator -no-audio -no-window -gpu swiftshader_indirect @torchchat &
100122
fi
101123
}
102124

103125
export_model() {
104126
python torchchat.py export stories15M --output-pte-path ./build/android/model.pte
105127
curl -fsSL https://github.com/karpathy/llama2.c/raw/master/tokenizer.model -o ./build/android/tokenizer.model
106-
python ./unsupported/llama2.c/runner-utils/tokenizer.py --tokenizer-model=./build/android/tokenizer.model
128+
python ./et-build/src/executorch/examples/models/llama2/tokenizer/tokenizer.py -t ./build/android/tokenizer.model -o build/android/tokenizer.bin
107129
}
108130

109131
push_files_to_android() {
110-
echo "If you need to use emulator, please use a separate window and run"
111-
echo "sdk/emulator/emulator @torchchat > /dev/null 2>&1 &"
112-
adb wait-for-device
132+
adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done; input keyevent 82'
113133
adb shell mkdir -p /data/local/tmp/llama
114134
adb push build/android/model.pte /data/local/tmp/llama
115135
adb push build/android/tokenizer.bin /data/local/tmp/llama
116-
adb install -t android/Torchchat/app/build/outputs/apk/debug/app-debug.apk
117136
}
118137

119138
run_android_instrumented_test() {
@@ -133,3 +152,9 @@ if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
133152
push_files_to_android
134153
run_android_instrumented_test
135154
fi
155+
156+
adb install -t android/Torchchat/app/build/outputs/apk/debug/app-debug.apk
157+
158+
if [ -z "${CI_ENV:-}" ]; then
159+
read -p "Press enter to exit emulator and finish"
160+
else

0 commit comments

Comments
 (0)