Fangjun Kuang
Committed by GitHub

Disable loading libs from jar on Android. (#2557)

This PR disables loading native libraries from JAR resources specifically on Android platforms. The change prevents potential issues with JAR-based library loading on Android while maintaining compatibility with other platforms.
... ... @@ -64,6 +64,7 @@ public class LibraryUtils {
}
// 2. Load from resources contains in some jar file
if (!isAndroid()) {
try {
if (loadFromResourceInJar()) {
return;
... ... @@ -71,6 +72,7 @@ public class LibraryUtils {
} catch (IOException e) {
// pass
}
}
// 3. fallback to -Djava.library.path
// java -Djava.library.path=C:\mylibs;D:\otherlibs -cp sherpa-onnx.jar xxx.java
... ... @@ -106,13 +108,11 @@ public class LibraryUtils {
}
private static boolean loadFromResourceInJar() throws IOException {
String libFileName = System.mapLibraryName(LIB_NAME);
String sherpaOnnxJniPath = "sherpa-onnx/native/" + getOsArch() + '/' + libFileName;
Path tempDirectory = null;
try {
if (!resourceExists(sherpaOnnxJniPath)) {
if (debug) {
System.out.printf("%s does not exist\n", sherpaOnnxJniPath);
... ... @@ -236,4 +236,10 @@ public class LibraryUtils {
}
dir.deleteOnExit(); // schedule the directory itself
}
String vmName = System.getProperty("java.vm.name", "").toLowerCase(Locale.ROOT);
String specVendor = System.getProperty("java.specification.vendor", "");
return vmName.contains("dalvik") || vmName.contains("art") ||
specVendor.equals("The Android Project");
}
}
... ...