5
5
# This source code is licensed under the BSD-style license found in the
6
6
# LICENSE file in the root directory of this source tree.
7
7
8
- set -eu
8
+ set -eux
9
9
10
10
cd ${TORCHCHAT_ROOT}
11
11
echo " Inside: $TORCHCHAT_ROOT "
25
25
exit -1
26
26
fi
27
27
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
+
28
32
mkdir -p ${TORCHCHAT_ROOT} /build/android
29
33
30
34
setup_java () {
@@ -64,30 +68,50 @@ setup_android_sdk_manager() {
64
68
setup_android_sdk () {
65
69
sdkmanager " platforms;android-34"
66
70
sdkmanager " platform-tools"
67
- sdkmanager " emulator"
68
- sdkmanager " system-images;android-34;google_apis;${ANDROID_ABI} "
69
71
}
70
72
71
73
setup_android_ndk () {
72
74
sdkmanager " ndk;25.0.8775105"
73
75
export ANDROID_NDK=" $ANDROID_HOME /ndk/25.0.8775105"
74
76
}
75
77
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
+
76
94
build_app () {
77
95
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
79
100
./gradlew :app:build
80
101
popd
81
102
}
82
103
83
104
setup_avd () {
105
+ sdkmanager " emulator"
106
+ sdkmanager " system-images;android-34;google_apis;${ANDROID_ABI} "
107
+
84
108
avdmanager create avd --name " torchchat" --package " system-images;android-34;google_apis;${ANDROID_ABI} "
85
109
sdk/emulator/emulator @torchchat &
86
110
}
87
111
88
112
push_files_to_android () {
89
113
adb wait-for-device
90
- adb shell mkdir /data/local/tmp/llama
114
+ adb shell mkdir -p /data/local/tmp/llama
91
115
adb push stories15M.pte /data/local/tmp/llama
92
116
adb push checkpoints/stories15M/tokenizer.bin /data/local/tmp/llama
93
117
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
98
122
setup_android_sdk_manager
99
123
setup_android_sdk
100
124
setup_android_ndk
101
- build_app
102
125
setup_avd
126
+ download_jni_library
127
+ build_app
103
128
push_files_to_android
104
129
fi
0 commit comments