Demo applications with code walk-through can be find in this github repo.
Release artifacts are published to jcenter:
repositories {
jcenter()
}
dependencies {
implementation 'org.pytorch:pytorch_android:1.3.0'
implementation 'org.pytorch:pytorch_android_torchvision:1.3.0'
}
Nightly(snapshots) builds are published every night from master branch to nexus sonatype snapshots repository
To use them repository must be specified explicitly:
repositories {
maven {
url "https://oss.sonatype.org/content/repositories/snapshots"
}
}
dependencies {
...
implementation 'org.pytorch:pytorch_android:1.4.0-SNAPSHOT'
implementation 'org.pytorch:pytorch_android_torchvision:1.4.0-SNAPSHOT'
...
}
The current nightly(snapshots) version is the value of VERSION_NAME in gradle.properties in current folder, at this moment it is 1.4.0-SNAPSHOT.
In some cases you might want to use a local build of pytorch android, for example you may build custom libtorch binary with another set of operators or to make local changes.
For this you can use ./scripts/build_pytorch_android.sh script.
git clone https://github.com/pytorch/pytorch.git cd pytorch sh ./scripts/build_pytorch_android.sh
The workflow contains several steps:
1. Build libtorch for android for all 4 android abis (armeabi-v7a, arm64-v8a, x86, x86_64)
2. Create symbolic links to the results of those builds: android/pytorch_android/src/main/jniLibs/${abi} to the directory with output libraries android/pytorch_android/src/main/cpp/libtorch_include/${abi} to the directory with headers. These directories are used to build libpytorch.so library that will be loaded on android device.
3. And finally run gradle in android/pytorch_android directory with task assembleRelease
Script requires that Android SDK, Android NDK and gradle are installed. They are specified as environment variables:
ANDROID_HOME - path to Android SDK
ANDROID_NDK - path to Android NDK
GRADLE_HOME - path to gradle
After successful build you should see the result as aar file:
$ find pytorch_android/build/ -type f -name *aar pytorch_android/build/outputs/aar/pytorch_android.aar pytorch_android_torchvision/build/outputs/aar/pytorch_android.aar libs/fbjni_local/build/outputs/aar/pytorch_android_fbjni.aar
It can be used directly in android projects, as a gradle dependency:
allprojects {
repositories {
flatDir {
dirs 'libs'
}
}
}
android {
...
packagingOptions {
pickFirst "**/libfbjni.so"
}
...
}
dependencies {
implementation(name:'pytorch_android', ext:'aar')
implementation(name:'pytorch_android_torchvision', ext:'aar')
implementation(name:'pytorch_android_fbjni', ext:'aar')
}
At the moment for the case of using aar files directly we need additional configuration due to packaging specific (libfbjni.so is packaged in both pytorch_android_fbjni.aar and pytorch_android.aar).
packagingOptions {
pickFirst "**/libfbjni.so"
}
You can find more details about the PyTorch Android API in the Javadoc.