Skip to content

Commit 4a8d1e2

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

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed

scripts/android_example.sh

+80
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
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 -m)" == "arm64" ]; 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+
ANDROID_ABI=arm64-v8a
19+
elif [ "$(uname)" == "Linux" -a "$(uname -m)" == "x86_64" ]; then
20+
JAVA_URL="https://download.oracle.com/java/17/archive/jdk-17.0.10_linux-x64_bin.tar.gz"
21+
SDK_MANAGER_URL="https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip"
22+
ANDROID_ABI=x86_64
23+
else
24+
echo "Unsupported platform $(uname) $(uname -m)"
25+
exit -1
26+
fi
27+
28+
mkdir -p ${LLAMA_FAST_ROOT}/build/android
29+
pushd ${LLAMA_FAST_ROOT}/build/android
30+
31+
echo "Download Java 17"
32+
curl "${JAVA_URL}" -o jdk-17.0.10.tar.gz
33+
34+
echo "Unzip Java 17"
35+
tar xf jdk-17.0.10.tar.gz
36+
37+
if [ "$(uname)" == "Darwin" -a "$(uname -m)" == "arm64" ]; then
38+
export JAVA_HOME="$(pwd)"/jdk-17.0.10.jdk/Contents/Home
39+
export PATH="$JAVA_HOME/bin:$PATH"
40+
elif [ "$(uname)" == "Linux" -a "$(uname -m)" == "x86_64" ]; then
41+
export JAVA_HOME="$(pwd)"/jdk-17.0.10
42+
export PATH="$JAVA_HOME/bin:$PATH"
43+
fi
44+
45+
mkdir -p sdk/cmdline-tools/latest
46+
47+
echo "Download Android SDK Manager"
48+
curl "${SDK_MANAGER_URL}" -o commandlinetools.zip
49+
50+
echo "Unzip Android SDK Manager"
51+
unzip commandlinetools.zip
52+
mv cmdline-tools/* sdk/cmdline-tools/latest
53+
export PATH="$(realpath sdk/cmdline-tools/latest/bin):$PATH"
54+
55+
56+
export ANDROID_HOME="$(realpath ./sdk)"
57+
export ANDROID_SDK_ROOT="$ANDROID_HOME"
58+
yes | sdkmanager --sdk_root="${ANDROID_HOME}" --licenses
59+
sdkmanager --sdk_root="${ANDROID_HOME}" --install "platforms;android-34"
60+
sdkmanager --sdk_root="${ANDROID_HOME}" --install "ndk;25.0.8775105"
61+
sdkmanager --sdk_root="${ANDROID_HOME}" --install "platform-tools"
62+
export ANDROID_NDK="$ANDROID_HOME/ndk/25.0.8775105"
63+
sdkmanager --sdk_root="${ANDROID_HOME}" --install "emulator"
64+
sdkmanager --sdk_root="${ANDROID_HOME}" --install "system-images;android-34;google_apis;${ANDROID_ABI}"
65+
66+
popd
67+
68+
pushd build/src/executorch/examples/demo-apps/android/LlamaDemo
69+
./gradlew :app:setup
70+
./gradlew :app:build
71+
popd
72+
73+
avdmanager create avd --name "llama-fast" --package "system-images;android-34;google_apis;${ANDROID_ABI}"
74+
sdk/emulator/emulator @llama-fast &
75+
76+
adb wait-for-device
77+
adb shell mkdir /data/local/tmp/llama
78+
adb push stories15M.pte /data/local/tmp/llama
79+
adb push tokenizer.bin /data/local/tmp/llama
80+
adb install -t build/src/executorch/examples/demo-apps/android/LlamaDemo/app/build/outputs/apk/debug/app-debug.apk

0 commit comments

Comments
 (0)