Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 6 additions & 26 deletions .ci/scripts/build_android_instrumentation.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,30 +12,10 @@ if [[ -z "${PYTHON_EXECUTABLE:-}" ]]; then
fi
which "${PYTHON_EXECUTABLE}"

build_android_test() {
mkdir -p extension/android/executorch_android/src/androidTest/resources
cp extension/module/test/resources/add.pte extension/android/executorch_android/src/androidTest/resources
pushd extension/android
ANDROID_HOME="${ANDROID_SDK:-/opt/android/sdk}" ./gradlew :executorch_android:testDebugUnitTest
ANDROID_HOME="${ANDROID_SDK:-/opt/android/sdk}" ./gradlew :executorch_android:assembleAndroidTest
popd
}
mkdir -p "${BUILD_AAR_DIR}"/executorch_android/src/androidTest/resources
cp extension/module/test/resources/add.pte "${BUILD_AAR_DIR}"/executorch_android/src/androidTest/resources

collect_artifacts_to_be_uploaded() {
ARTIFACTS_DIR_NAME="$1"
# Collect Java library test
JAVA_LIBRARY_TEST_DIR="${ARTIFACTS_DIR_NAME}/library_test_dir"
mkdir -p "${JAVA_LIBRARY_TEST_DIR}"
cp extension/android/executorch_android/build/outputs/apk/androidTest/debug/*.apk "${JAVA_LIBRARY_TEST_DIR}"
}

main() {
build_android_test
if [ -n "$ARTIFACTS_DIR_NAME" ]; then
collect_artifacts_to_be_uploaded ${ARTIFACTS_DIR_NAME}
fi
}

if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
main "$@"
fi
pushd "${BUILD_AAR_DIR}"
ANDROID_HOME="${ANDROID_SDK:-/opt/android/sdk}" ./gradlew :executorch_android:testDebugUnitTest
ANDROID_HOME="${ANDROID_SDK:-/opt/android/sdk}" ./gradlew :executorch_android:assembleAndroidTest
popd
19 changes: 12 additions & 7 deletions .github/workflows/_android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,21 @@ jobs:
conda activate "${CONDA_ENV}"
PYTHON_EXECUTABLE=python bash .ci/scripts/setup-linux.sh --build-tool buck2
export ARTIFACTS_DIR_NAME=artifacts-to-be-uploaded

mkdir -p ${ARTIFACTS_DIR_NAME}/fp32-xnnpack-custom
bash examples/models/llama/install_requirements.sh
bash ".ci/scripts/test_llama.sh" -model stories110M -build_tool cmake -dtype fp16 -mode portable -upload ${ARTIFACTS_DIR_NAME}/fp32-xnnpack-custom
mkdir -p ${ARTIFACTS_DIR_NAME}/

# Build LLM Demo for Android
export BUILD_AAR_DIR=aar-out
mkdir -p $BUILD_AAR_DIR
bash scripts/build_android_library.sh ${ARTIFACTS_DIR_NAME}
bash .ci/scripts/build_android_instrumentation.sh ${ARTIFACTS_DIR_NAME}
bash scripts/build_android_library.sh
cp ${BUILD_AAR_DIR}/executorch.aar $ARTIFACTS_DIR_NAME

mkdir -p ${ARTIFACTS_DIR_NAME}/library_test_dir
bash .ci/scripts/build_android_instrumentation.sh
cp ${BUILD_AAR_DIR}/executorch_android/build/outputs/apk/androidTest/debug/executorch_android-debug-androidTest.apk "${ARTIFACTS_DIR_NAME}/library_test_dir"

mkdir -p ${ARTIFACTS_DIR_NAME}/fp32-xnnpack-custom
bash examples/models/llama/install_requirements.sh
bash ".ci/scripts/test_llama.sh" -model stories110M -build_tool cmake -dtype fp16 -mode portable -upload ${ARTIFACTS_DIR_NAME}/fp32-xnnpack-custom

mkdir -p examples/demo-apps/android/LlamaDemo/app/libs
cp aar-out/executorch.aar examples/demo-apps/android/LlamaDemo/app/libs
Expand Down Expand Up @@ -96,7 +101,7 @@ jobs:
curl -O https://gha-artifacts.s3.amazonaws.com/${{ github.repository }}/${{ github.run_id }}/artifacts/llm_demo/app-debug.apk
curl -O https://gha-artifacts.s3.amazonaws.com/${{ github.repository }}/${{ github.run_id }}/artifacts/llm_demo/app-debug-androidTest.apk
curl -O https://gha-artifacts.s3.amazonaws.com/${{ github.repository }}/${{ github.run_id }}/artifacts/fp32-xnnpack-custom/model.zip
curl -o android-test-debug-androidTest.apk https://gha-artifacts.s3.amazonaws.com/${{ github.repository }}/${{ github.run_id }}/artifacts/library_test_dir/executorch-debug-androidTest.apk
curl -o android-test-debug-androidTest.apk https://gha-artifacts.s3.amazonaws.com/${{ github.repository }}/${{ github.run_id }}/artifacts/library_test_dir/executorch_android-debug-androidTest.apk
unzip model.zip
mv *.pte model.pte

Expand Down
2 changes: 1 addition & 1 deletion extension/android/executorch_android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ android {
}

dependencies {
implementation 'com.facebook.fbjni:fbjni-java-only:0.5.1'
implementation 'com.facebook.fbjni:fbjni:0.5.1'
implementation 'com.facebook.soloader:nativeloader:0.10.5'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application>
</application>
<instrumentation
android:name="androidx.test.runner.AndroidJUnitRunner"
android:targetPackage="org.pytorch.executorch"
android:label="Tests for ExecuTorch Modules" />
</manifest>
2 changes: 0 additions & 2 deletions scripts/build_android_library.sh
Original file line number Diff line number Diff line change
Expand Up @@ -140,8 +140,6 @@ main() {
fi
export ANDROID_ABIS

ARTIFACTS_DIR_NAME="$1"

copy_src
for ANDROID_ABI in "${ANDROID_ABIS[@]}"; do
build_android_native_library ${ANDROID_ABI}
Expand Down
6 changes: 3 additions & 3 deletions scripts/run_android_emulator.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ adb push model.pte /data/local/tmp/llama
adb push tokenizer.bin /data/local/tmp/llama
adb shell am instrument -w -r com.example.executorchllamademo.test/androidx.test.runner.AndroidJUnitRunner

# adb uninstall org.pytorch.executorch.test || true
# adb install -t android-test-debug-androidTest.apk
adb uninstall org.pytorch.executorch.test || true
adb install -t android-test-debug-androidTest.apk

# adb shell am instrument -w -r org.pytorch.executorch.test/androidx.test.runner.AndroidJUnitRunner
adb shell am instrument -w -r org.pytorch.executorch.test/androidx.test.runner.AndroidJUnitRunner
Loading