Update LibraryVersion.java, LibraryVersion.java, and 3 more files...

This commit is contained in:
Andrea Cavalli 2020-10-29 14:59:34 +01:00
parent 27e77c40e0
commit 9bbb59695a
5 changed files with 37 additions and 16 deletions

View File

@ -2,8 +2,8 @@ package it.tdlight.common.utils;
public final class LibraryVersion { public final class LibraryVersion {
public static final String VERSION = "${project.version}"; public static final String VERSION = "${project.version}";
public static final String IMPLEMENTATION_NAME = "tdlib"; public static final String IMPLEMENTATION_NAME = "tdlib";
public static final Class<?> LINUX_AMD64_CLASS = it.tdlight.jni.tdlib.linux.amd64.LoadLibrary.class; public static final String LINUX_AMD64_CLASS = "it.tdlight.jni.tdlib.linux.amd64.LoadLibrary";
public static final Class<?> LINUX_AARCH64_CLASS = it.tdlight.jni.tdlib.linux.aarch64.LoadLibrary.class; public static final String LINUX_AARCH64_CLASS = "it.tdlight.jni.tdlib.linux.aarch64.LoadLibrary";
public static final Class<?> WINDOWS_AMD64_CLASS = it.tdlight.jni.tdlib.win.amd64.LoadLibrary.class; public static final String WINDOWS_AMD64_CLASS = "it.tdlight.jni.tdlib.win.amd64.LoadLibrary";
public static final Class<?> OSX_AMD64_CLASS = it.tdlight.jni.tdlib.osx.amd64.LoadLibrary.class; public static final String OSX_AMD64_CLASS = "it.tdlight.jni.tdlib.osx.amd64.LoadLibrary";
} }

View File

@ -2,8 +2,8 @@ package it.tdlight.common.utils;
public final class LibraryVersion { public final class LibraryVersion {
public static final String VERSION = "${project.version}"; public static final String VERSION = "${project.version}";
public static final String IMPLEMENTATION_NAME = "tdlight"; public static final String IMPLEMENTATION_NAME = "tdlight";
public static final Class<?> LINUX_AMD64_CLASS = it.tdlight.jni.tdlight.linux.amd64.LoadLibrary.class; public static final String LINUX_AMD64_CLASS = "it.tdlight.jni.tdlight.linux.amd64.LoadLibrary";
public static final Class<?> LINUX_AARCH64_CLASS = it.tdlight.jni.tdlight.linux.aarch64.LoadLibrary.class; public static final String LINUX_AARCH64_CLASS = "it.tdlight.jni.tdlight.linux.aarch64.LoadLibrary";
public static final Class<?> WINDOWS_AMD64_CLASS = it.tdlight.jni.tdlight.win.amd64.LoadLibrary.class; public static final String WINDOWS_AMD64_CLASS = "it.tdlight.jni.tdlight.win.amd64.LoadLibrary";
public static final Class<?> OSX_AMD64_CLASS = it.tdlight.jni.tdlight.osx.amd64.LoadLibrary.class; public static final String OSX_AMD64_CLASS = "it.tdlight.jni.tdlight.osx.amd64.LoadLibrary";
} }

View File

@ -24,6 +24,7 @@ import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.lang.reflect.InvocationTargetException;
/** /**
* The class to load the libraries needed to run Tdlib * The class to load the libraries needed to run Tdlib
@ -104,29 +105,49 @@ public class LoadLibrary {
case linux: case linux:
switch (arch) { switch (arch) {
case amd64: case amd64:
classForResource = LibraryVersion.LINUX_AMD64_CLASS; try {
classForResource = Class.forName(LibraryVersion.LINUX_AMD64_CLASS);
} catch (ClassNotFoundException e) {
// not found
}
break; break;
case aarch64: case aarch64:
classForResource = LibraryVersion.LINUX_AARCH64_CLASS; try {
classForResource = Class.forName(LibraryVersion.LINUX_AARCH64_CLASS);
} catch (ClassNotFoundException e) {
// not found
}
break; break;
} }
break; break;
case osx: case osx:
if (arch == Arch.amd64) { if (arch == Arch.amd64) {
classForResource = LibraryVersion.OSX_AMD64_CLASS; try {
classForResource = Class.forName(LibraryVersion.OSX_AMD64_CLASS);
} catch (ClassNotFoundException e) {
// not found
}
} }
break; break;
case win: case win:
if (arch == Arch.amd64) { if (arch == Arch.amd64) {
classForResource = LibraryVersion.WINDOWS_AMD64_CLASS; try {
classForResource = Class.forName(LibraryVersion.WINDOWS_AMD64_CLASS);
} catch (ClassNotFoundException e) {
// not found
}
} }
break; break;
} }
if (classForResource == null) { if (classForResource == null) {
throw new IOException("Native libraries for platform " + os + "-" + arch + " not found!"); throw new IOException("Native libraries for platform " + os + "-" + arch + " not found!");
} }
String libPath = createPath("libs", os.name(), arch.name(), libname) + getExt(os); InputStream libInputStream;
InputStream libInputStream = classForResource.getResourceAsStream(libPath); try {
libInputStream = (InputStream) this.getClass().getDeclaredMethod("getLibraryAsStream").invoke(InputStream.class);
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
throw new IOException("Native libraries for platform " + os + "-" + arch + " not found!", e);
}
if (Files.notExists(tempFile)) { if (Files.notExists(tempFile)) {
Files.copy(libInputStream, tempFile); Files.copy(libInputStream, tempFile);
} }

View File

@ -8,7 +8,7 @@
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<revision>0-SNAPSHOT</revision> <revision>0-SNAPSHOT</revision>
<natives-version>3.0.123</natives-version> <natives-version>3.0.125</natives-version>
</properties> </properties>
<repositories> <repositories>
<repository> <repository>

View File

@ -8,7 +8,7 @@
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<revision>0-SNAPSHOT</revision> <revision>0-SNAPSHOT</revision>
<natives-version>3.0.123</natives-version> <natives-version>3.0.125</natives-version>
</properties> </properties>
<repositories> <repositories>
<repository> <repository>