55# This source code is licensed under the BSD-style license found in the
66# LICENSE file in the root directory of this source tree.
77
8- set -eu
8+ set -eux
99
1010cd ${TORCHCHAT_ROOT}
1111echo " Inside: $TORCHCHAT_ROOT "
2525 exit -1
2626fi
2727
28+ LLAMA_JNI_ARM64_URL=" https://ossci-android.s3.us-west-1.amazonaws.com/executorch/release/0.2/arm64-v8a/libexecutorch_llama_jni.so"
29+ LLAMA_JNI_X86_64_URL=" https://ossci-android.s3.us-west-1.amazonaws.com/executorch/release/0.2/x86_64/libexecutorch_llama_jni.so"
30+ LLAMA_JAR_URL=" https://ossci-android.s3.us-west-1.amazonaws.com/executorch/release/0.2/executorch.jar"
31+
2832mkdir -p ${TORCHCHAT_ROOT} /build/android
2933
3034setup_java () {
@@ -64,30 +68,50 @@ setup_android_sdk_manager() {
6468setup_android_sdk () {
6569 sdkmanager " platforms;android-34"
6670 sdkmanager " platform-tools"
67- sdkmanager " emulator"
68- sdkmanager " system-images;android-34;google_apis;${ANDROID_ABI} "
6971}
7072
7173setup_android_ndk () {
7274 sdkmanager " ndk;25.0.8775105"
7375 export ANDROID_NDK=" $ANDROID_HOME /ndk/25.0.8775105"
7476}
7577
78+ download_jar_library () {
79+ mkdir -p ${TORCHCHAT_ROOT} /build/android
80+ curl " ${LLAMA_JAR_URL} " -o ${TORCHCHAT_ROOT} /build/android/executorch.jar
81+ }
82+
83+ download_jni_library () {
84+ mkdir -p ${TORCHCHAT_ROOT} /build/android/arm64-v8a
85+ mkdir -p ${TORCHCHAT_ROOT} /build/android/x86_64
86+ if [ ! -f ${TORCHCHAT_ROOT} /build/android/arm64-v8a/libexecutorch_llama_jni.so ]; then
87+ curl " ${LLAMA_JNI_ARM64_URL} " -o ${TORCHCHAT_ROOT} /build/android/arm64-v8a/libexecutorch_llama_jni.so
88+ fi
89+ if [ ! -f ${TORCHCHAT_ROOT} /build/android/x86_64/libexecutorch_llama_jni.so ]; then
90+ curl " ${LLAMA_JNI_X86_64_URL} " -o ${TORCHCHAT_ROOT} /build/android/x86_64/libexecutorch_llama_jni.so
91+ fi
92+ }
93+
7694build_app () {
7795 pushd build/src/executorch/examples/demo-apps/android/LlamaDemo
78- ./gradlew :app:setup
96+ mkdir -p app/src/main/jniLibs/arm64-v8a
97+ mkdir -p app/src/main/jniLibs/x86_64
98+ cp ${TORCHCHAT_ROOT} /build/android/arm64-v8a/libexecutorch_llama_jni.so app/src/main/jniLibs/arm64-v8a
99+ cp ${TORCHCHAT_ROOT} /build/android/x86_64/libexecutorch_llama_jni.so app/src/main/jniLibs/x86_64
79100 ./gradlew :app:build
80101 popd
81102}
82103
83104setup_avd () {
105+ sdkmanager " emulator"
106+ sdkmanager " system-images;android-34;google_apis;${ANDROID_ABI} "
107+
84108 avdmanager create avd --name " torchchat" --package " system-images;android-34;google_apis;${ANDROID_ABI} "
85109 sdk/emulator/emulator @torchchat &
86110}
87111
88112push_files_to_android () {
89113 adb wait-for-device
90- adb shell mkdir /data/local/tmp/llama
114+ adb shell mkdir -p /data/local/tmp/llama
91115 adb push stories15M.pte /data/local/tmp/llama
92116 adb push checkpoints/stories15M/tokenizer.bin /data/local/tmp/llama
93117 adb install -t build/src/executorch/examples/demo-apps/android/LlamaDemo/app/build/outputs/apk/debug/app-debug.apk
@@ -98,7 +122,8 @@ if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
98122 setup_android_sdk_manager
99123 setup_android_sdk
100124 setup_android_ndk
101- build_app
102125 setup_avd
126+ download_jni_library
127+ build_app
103128 push_files_to_android
104129fi
0 commit comments