@@ -12,12 +12,9 @@ if [[ -z "${PYTHON_EXECUTABLE:-}" ]]; then
1212fi
1313which " ${PYTHON_EXECUTABLE} "
1414
15- build_jar () {
16- pushd extension/android
17- ./gradlew build
18- popd
19- mkdir -p " ${BUILD_AAR_DIR} /libs"
20- cp extension/android/build/libs/executorch.jar " ${BUILD_AAR_DIR} /libs/"
15+ copy_src () {
16+ cp -r extension/android/build.gradle extension/android/settings.gradle extension/android/gradlew extension/android/gradle extension/android/gradlew.bat extension/android/gradle.properties " ${BUILD_AAR_DIR} "
17+ cp -r extension/android/executorch_android " ${BUILD_AAR_DIR} /executorch_android"
2118}
2219
2320build_android_native_library () {
@@ -96,44 +93,40 @@ build_android_native_library() {
9693 cmake --build " ${CMAKE_OUT} " /extension/android -j " ${CMAKE_JOBS} " --config " ${EXECUTORCH_CMAKE_BUILD_TYPE} "
9794
9895 # Copy artifacts to ABI specific directory
99- mkdir -p " ${BUILD_AAR_DIR} /jni /${ANDROID_ABI} "
100- cp " ${CMAKE_OUT} " /extension/android/* .so " ${BUILD_AAR_DIR} /jni /${ANDROID_ABI} /"
96+ mkdir -p " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs /${ANDROID_ABI} "
97+ cp " ${CMAKE_OUT} " /extension/android/* .so " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs /${ANDROID_ABI} /"
10198
10299 # Copy QNN related so library
103100 if [ -n " $QNN_SDK_ROOT " ] && [ " $ANDROID_ABI " == " arm64-v8a" ]; then
104- cp " ${CMAKE_OUT} " /lib/libqnn_executorch_backend.so " ${BUILD_AAR_DIR} /jni /${ANDROID_ABI} /"
105- cp " ${QNN_SDK_ROOT} " /lib/aarch64-android/libQnnHtp.so " ${BUILD_AAR_DIR} /jni /${ANDROID_ABI} /"
106- cp " ${QNN_SDK_ROOT} " /lib/aarch64-android/libQnnSystem.so " ${BUILD_AAR_DIR} /jni /${ANDROID_ABI} /"
107- cp " ${QNN_SDK_ROOT} " /lib/aarch64-android/libQnnHtpV69Stub.so " ${BUILD_AAR_DIR} /jni /${ANDROID_ABI} /"
108- cp " ${QNN_SDK_ROOT} " /lib/aarch64-android/libQnnHtpV73Stub.so " ${BUILD_AAR_DIR} /jni /${ANDROID_ABI} /"
109- cp " ${QNN_SDK_ROOT} " /lib/aarch64-android/libQnnHtpV75Stub.so " ${BUILD_AAR_DIR} /jni /${ANDROID_ABI} /"
110- cp " ${QNN_SDK_ROOT} " /lib/hexagon-v69/unsigned/libQnnHtpV69Skel.so " ${BUILD_AAR_DIR} /jni /${ANDROID_ABI} /"
111- cp " ${QNN_SDK_ROOT} " /lib/hexagon-v73/unsigned/libQnnHtpV73Skel.so " ${BUILD_AAR_DIR} /jni /${ANDROID_ABI} /"
112- cp " ${QNN_SDK_ROOT} " /lib/hexagon-v75/unsigned/libQnnHtpV75Skel.so " ${BUILD_AAR_DIR} /jni /${ANDROID_ABI} /"
101+ cp " ${CMAKE_OUT} " /lib/libqnn_executorch_backend.so " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs /${ANDROID_ABI} /"
102+ cp " ${QNN_SDK_ROOT} " /lib/aarch64-android/libQnnHtp.so " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs /${ANDROID_ABI} /"
103+ cp " ${QNN_SDK_ROOT} " /lib/aarch64-android/libQnnSystem.so " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs /${ANDROID_ABI} /"
104+ cp " ${QNN_SDK_ROOT} " /lib/aarch64-android/libQnnHtpV69Stub.so " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs /${ANDROID_ABI} /"
105+ cp " ${QNN_SDK_ROOT} " /lib/aarch64-android/libQnnHtpV73Stub.so " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs /${ANDROID_ABI} /"
106+ cp " ${QNN_SDK_ROOT} " /lib/aarch64-android/libQnnHtpV75Stub.so " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs /${ANDROID_ABI} /"
107+ cp " ${QNN_SDK_ROOT} " /lib/hexagon-v69/unsigned/libQnnHtpV69Skel.so " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs /${ANDROID_ABI} /"
108+ cp " ${QNN_SDK_ROOT} " /lib/hexagon-v73/unsigned/libQnnHtpV73Skel.so " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs /${ANDROID_ABI} /"
109+ cp " ${QNN_SDK_ROOT} " /lib/hexagon-v75/unsigned/libQnnHtpV75Skel.so " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs /${ANDROID_ABI} /"
113110 fi
114111
115112 # Copy MTK related so library
116113 if [ -n " $NEURON_BUFFER_ALLOCATOR_LIB " ] && [ -n " $NEURON_USDK_ADAPTER_LIB " ] && [ " $ANDROID_ABI " == " arm64-v8a" ]; then
117- cp " ${CMAKE_OUT} " /backends/mediatek/libneuron_backend.so ${BUILD_AAR_DIR} /jni /${ANDROID_ABI} /
118- cp " ${NEURON_BUFFER_ALLOCATOR_LIB} " ${BUILD_AAR_DIR} /jni /${ANDROID_ABI} /
119- cp " ${NEURON_USDK_ADAPTER_LIB} " ${BUILD_AAR_DIR} /jni /${ANDROID_ABI} /
114+ cp " ${CMAKE_OUT} " /backends/mediatek/libneuron_backend.so ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs /${ANDROID_ABI} /
115+ cp " ${NEURON_BUFFER_ALLOCATOR_LIB} " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs /${ANDROID_ABI} /
116+ cp " ${NEURON_USDK_ADAPTER_LIB} " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs /${ANDROID_ABI} /
120117 fi
121118}
122119
123120build_aar () {
124- echo \< manifest xmlns:android=\" http://schemas.android.com/apk/res/android\" \
125- package=\" org.pytorch.executorch\"\> \
126- \< uses-sdk android:minSdkVersion=\" 19\" /\> \
127- \< /manifest\> > " ${BUILD_AAR_DIR} /AndroidManifest.xml"
128121 pushd " ${BUILD_AAR_DIR} "
129122 # Rename libexecutorch_jni.so to libexecutorch.so for soname consistency
130123 # between Java and JNI
131- find jni -type f -name " libexecutorch_jni.so" -exec bash -c ' mv "$1" "${1/_jni/}"' bash {} \;
124+ find . -type f -name " libexecutorch_jni.so" -exec bash -c ' mv "$1" "${1/_jni/}"' bash {} \;
132125 if [ " $EXECUTORCH_CMAKE_BUILD_TYPE " == " Release" ]; then
133- find jni -type f -name " *.so" -exec " $ANDROID_NDK " /toolchains/llvm/prebuilt/* /bin/llvm-strip {} \;
126+ find . -type f -name " *.so" -exec " $ANDROID_NDK " /toolchains/llvm/prebuilt/* /bin/llvm-strip {} \;
134127 fi
135- # Zip all necessary files into the AAR file
136- zip -r executorch.aar libs jni/ * /libexecutorch.so jni/ * /libqnn * .so jni/ * /libQnn * .so jni/ * /libneuron_backend.so jni/ * /libneuron_buffer_allocator.so jni/ * /libneuronusdk_adapter.mtk.so AndroidManifest.xml
128+ ANDROID_HOME= " ${ANDROID_SDK :-/ opt / android / sdk} " ./gradlew build
129+ cp executorch_android/build/outputs/aar/executorch_android-debug.aar executorch.aar
137130 popd
138131}
139132
@@ -149,7 +142,7 @@ main() {
149142
150143 ARTIFACTS_DIR_NAME=" $1 "
151144
152- build_jar
145+ copy_src
153146 for ANDROID_ABI in " ${ANDROID_ABIS[@]} " ; do
154147 build_android_native_library ${ANDROID_ABI}
155148 done
0 commit comments