Skip to content

Commit a6943b8

Browse files
committed
E2E script to run on Android emulator
1 parent a936511 commit a6943b8

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

scripts/android_example.sh

+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
#!/usr/bin/env bash
2+
# Copyright (c) Meta Platforms, Inc. and affiliates.
3+
# All rights reserved.
4+
#
5+
# This source code is licensed under the BSD-style license found in the
6+
# LICENSE file in the root directory of this source tree.
7+
8+
set -eu
9+
10+
cd ${LLAMA_FAST_ROOT}
11+
echo "Inside: $LLAMA_FAST_ROOT"
12+
13+
which curl
14+
15+
if [ "$(uname)" == "Darwin" -a "$(uname -p)" == "arm" ]; then
16+
JAVA_URL="https://download.oracle.com/java/17/archive/jdk-17.0.10_macos-aarch64_bin.tar.gz"
17+
SDK_MANAGER_URL="https://dl.google.com/android/repository/commandlinetools-mac-11076708_latest.zip"
18+
elif [ "$(uname)" == "Linux" -a "$(uname -p)" == "x86_64" ]; then
19+
JAVA_URL="https://download.oracle.com/java/17/archive/jdk-17.0.10_linux-x64_bin.tar.gz"
20+
SDK_MANAGER_URL="https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip"
21+
else
22+
echo "Unsupported platform $(uname) $(uname -p)"
23+
exit -1
24+
fi
25+
26+
mkdir -p ${LLAMA_FAST_ROOT}/build/android
27+
pushd ${LLAMA_FAST_ROOT}/build/android
28+
29+
echo "Download Java 17"
30+
curl "${JAVA_URL}" -o jdk-17.0.10.tar.gz
31+
32+
echo "Unzip Java 17"
33+
tar xf jdk-17.0.10.tar.gz
34+
35+
if [ "$(uname)" == "Darwin" -a "$(uname -p)" == "arm" ]; then
36+
export JAVA_HOME="$(pwd)"/jdk-17.0.10.jdk/Contents/Home
37+
export PATH="$JAVA_HOME/bin:$PATH"
38+
elif [ "$(uname)" == "Linux" -a "$(uname -p)" == "x86_64" ]; then
39+
export JAVA_HOME="$(pwd)"/jdk-17.0.10
40+
export PATH="$JAVA_HOME/bin:$PATH"
41+
fi
42+
43+
echo "Download Android SDK Manager"
44+
curl "${SDK_MANAGER_URL}" -o commandlinetools.zip
45+
46+
echo "Unzip Android SDK Manager"
47+
unzip commandlinetools.zip
48+
export PATH="$(realpath cmdline-tools/bin):$PATH"
49+
50+
mkdir sdk
51+
export ANDROID_HOME="$(realpath ./sdk)"
52+
export ANDROID_SDK_ROOT="$ANDROID_HOME"
53+
yes | sdkmanager --sdk_root="${ANDROID_HOME}" --licenses
54+
sdkmanager --sdk_root="${ANDROID_HOME}" --install "platforms;android-34"
55+
sdkmanager --sdk_root="${ANDROID_HOME}" --install "ndk;25.0.8775105"
56+
sdkmanager --sdk_root="${ANDROID_HOME}" --install "platform-tools"
57+
export ANDROID_NDK="$ANDROID_HOME/ndk/25.0.8775105"
58+
sdkmanager --sdk_root="${ANDROID_HOME}" --install "emulator"
59+
sdkmanager --sdk_root="${ANDROID_HOME}" --install "system-images;android-34;google_apis;arm64-v8a"
60+
export ANDROID_ABI=arm64-v8a
61+
62+
popd
63+
64+
pushd build/src/executorch/examples/demo-apps/android/LlamaDemo
65+
./gradlew :app:setup
66+
./gradlew :app:build
67+
popd
68+
69+
avdmanager create avd --name "llama-fast" --package "system-images;android-34;aosp_atd;arm64-v8a"
70+
sdk/emulator/emulator -sysdir $ANDROID_SDK_ROOT/system-images/android-34/google_apis/arm64-v8a/ @llama-fast &
71+
72+
adb adb wait-for-device
73+
adb shell mkdir /data/local/tmp/llama
74+
adb push model.pte /data/local/tmp/llama
75+
adb push tokenizer.bin /data/local/tmp/llama
76+
adb install -t app/build/outputs/apk/debug/app-debug.apk

0 commit comments

Comments
 (0)