У меня есть библиотека, которая представляет собой набор файлов * .so и один файл * .jar. Чтобы использовать библиотеку, я взаимодействую с классами из этого JAR. Когда я создаю новый проект Android Java и добавляю всю библиотеку, он работает. Когда я создаю новый проект Android Kotlin любым методом, который я вызываю, я получаю ClassNotFoundException
.
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.common.sdk.printer.UsbPrinterManager" on path: DexPathList[[zip file "/data/app/com.payeye.poc-1/base.apk"],nativeLibraryDirectories=[/data/app/com.payeye.poc-1/lib/arm, /vendor/lib, /system/lib]]
Я пытался создать класс Java внутри моего проекта Kotlin для взаимодействия с библиотекой через этот класс, но это тоже не сработало. Я создал отдельный модуль и указал целевой язык как Java, добавил библиотеку в модуль и затем вызвал библиотеку, но все равно то же исключение.
Когда я заглядываю внутрь JAR и проверяю метод, который выдает это исключение, я вижу, что он находит классы по строковому имени:
public synchronized void start(int mode) throws TelpoException {
Class<?> thermalPrinter = null;
Method method = null;
Object obj = null;
if (SystemUtil.getDeviceType() != DeviceModelEnum.TPS900.ordinal() && SystemUtil.getDeviceType() != DeviceModelEnum.TPS390P.ordinal() && SystemUtil.getDeviceType() != DeviceModelEnum.TPS900MB.ordinal()) {
try {
thermalPrinter = Class.forName("com.common.sdk.printer.UsbPrinterManager");
} catch (ClassNotFoundException var10) {
var10.printStackTrace();
throw new InternalErrorException();
}
obj = this.mContext.getSystemService("UsbPrinter");
try {
method = thermalPrinter.getMethod("start", Integer.TYPE);
} catch (NoSuchMethodException var9) {
var9.printStackTrace();
throw new InternalErrorException();
}
Поскольку Java и Kotlin должны прекрасно работать вместе, я не надеваюне понимаю, откуда возникла ошибка. Могу ли я что-нибудь настроить, чтобы эта библиотека работала в моем проекте Kotlin?