Поиск сообщества
Показаны результаты для тегов 'jar'.
Найдено: 4 результата
-
Линковка Kotlin (Котлин) библиотек в Delphi, как делаю: Хедеры линкуемых библиотек обычно громадны описанием всех типов... Я обычно делаю свой jar на java в нем линкую зависимости и наружу для дельфи оставляю один объект с простыми функциями. Хедер дельфи получается компактным и понятным: package com.MyCompany.evotor; public interface J2DCallback { void Log(String str); String Trans(String str); String GetValue(String name); void SetValue(String name, String value); Activity GetActivity(); Context GetContext(); } public class FiscalCoreConnection { final private Global Instance; public FiscalCoreConnection(J2DCallback aj2d) throws NullPointerException { Instance = new Global(aj2d); } public String SendJSON(String JSON){ try{ return Instance.SendJson(JSON); } catch (Exception e) { return FiscalCoreException.MakeJson(e); } } } type J2DCallbackClass = interface(IJavaClass) ['{856654D5-7939-44DF-ACD5-E2EF8C6D3AA4}'] end; [JavaSignature('com/MyCompany/evotor/J2DCallback')] J2DCallbackIntf = interface(IJavaInstance) ['{025B14E9-C041-4105-9E85-83CC127CC340}'] procedure Log(str:JString); cdecl; function Trans(str:JString):JString; cdecl; function GetValue(name:JString):JString; cdecl; procedure SetValue(name:JString; value:JString); cdecl; function GetActivity():JActivity; cdecl; function GetContext():JContext; cdecl; end; TJ2DCallbackImp = class(TJavaGenericImport<J2DCallbackClass, J2DCallbackIntf>) end; [JavaSignature('com/MyCompany/evotor/FiscalCoreConnection')] JFiscalCoreConnection = interface(JObject) ['{5797747D-D61D-4EF6-94F7-5E8994545CC2}'] function SendJSON(JSON:JString):JString; cdecl; end; JFiscalCoreConnectionClass = interface(JObjectClass) ['{81782882-DFCF-4FA9-BD37-02CCCF2409EA}'] function init(j2d : J2DCallbackIntf) : JFiscalCoreConnection; cdecl; end; TJFiscalCoreConnection = class(TJavaGenericImport<JFiscalCoreConnectionClass, JFiscalCoreConnection>) end; TJ2DCallback = class(TJavaLocal, J2DCallbackIntf) public procedure Log(str:JString); cdecl; function Trans(str:JString):JString; cdecl; function GetValue(name:JString):JString; cdecl; procedure SetValue(name:JString; value:JString); cdecl; function GetActivity():JActivity; cdecl; function GetContext():JContext; cdecl; end; Все зависимости в build.gradle: dependencies { implementation 'com.github.evotor:integration-library:v0.4.50' implementation 'com.google.zxing:core:3.4.0' } В Дереве External Libraries забираем jarы зависимостей ПКМ Show in Explorer. Копируем в папку своего проекта и даем осознанное имя. Там же забираем kotlin-stdlib ПКМ Show in Explorer. Копируем в папку своего проекта и даем осознанное имя. Но в kotlin-stdlib.jar есть "лишний" файл kotlin-stdlib-1.5.10.jar\META-INF\versions\9\module-info.class Открываем архиватором и удаляем файл или всю папку versions Почти все готово... Но котлин еще и посыпан сахаром и не хочет Дельфей dexится, хочет -min-sdk-version=26 Поможем Delphi: Ищем CodeGear.Common.Targets, у меня он в "C:\Program Files (x86)\Embarcadero\Studio\21.0\bin"\ Ищем в нем --output, и перед ним вставим все про sdk. У меня получилось так: <DxCmd>PATH $(JDKPath)\bin;$(PATH); %26 set JAVA_HOME=$(JDKPath)%26 "$(JavaDxPath)" --dex --min-sdk-version=26 --output=</DxCmd> Далее цепляем все jar в проект Либа производителя, Либа своя обертка, и котлин Иии собираем! Если есть еще зависимости делаем аналогично: находим jar, выпиливаем META-INF\versions\9\module-info.class, линкуем в проект и собираем... Не все зависимости используются и нужны, поэтому добавляем поштучно до тех пор пока не заведется.
-
Теперь после сборки ваш класс java будет добавлен в файл classes.dex (да! файл classes.dex ниоткуда не копируется, он собирается из файлов которые указаны в этом списке (см.картинку) поэтому его можно легко дополнить собственными классами java или убрать ненужные системные). Остается вопрос компиляции файла исходников java в jar-файл, но тут уж каждый сам за себя...
-
День добрый. Необходимо при получении push-сообщения определенного содержания, проводить определенные действия( например поднять активити из бэкграудна\стартануть активити ). В unit Androidapi.JNI.PlayServices.GCM есть интерфейсы JGCMIntentService = interface;//com.embarcadero.gcm.notifications.GCMIntentService JGCMNativeListener = interface;//com.embarcadero.gcm.notifications.GCMNativeListener JGCMNotification = interface;//com.embarcadero.gcm.notifications.GCMNotification проблема в том что это JNI на java-классы, которые лежат в скомпилированном jar-файле {XE7}\lib\android\debug\cloud-messaging.jar мне, как я понимаю, нужно править пакет com.embarcadero.gcm.notifications.GCMNotification. там как я понимаю реализован классический BroadcastReciever( extend GCMBroadcastReceiver ), а конкретно нужно поправить метод onReceive, который обрабатывает broadcast'ы от сервиса( GCMIntentService ) вопрос( думаю к Embarcadero ): можно ли как-нибудь получить исходники ваших java-классов GCM-сервисов, дабы не заниматься написанием велосипедов ?
-
[Android] Подключение сторонней библиотеки jar.
Teodor опубликовал вопрос в Использование статических библиотек SO
Доброго времени суток! Прошу помощи! Необходимо подключить стороннюю библиотеку jar к моему приложению, все было сделано по инструкции: http://docwiki.embarcadero.com/RADStudio/XE6/en/Using_a_Custom_Set_of_Java_Libraries_In_Your_RAD_Studio_Android_Apps#RAD_Studio_Requirements_for_Java_Libraries Файл DEX скомпилировался с параметрами соответственно javac -cp lib\DVX_1.jar ...... Новый файл DEX задеплоин в приложение. Java класс с которым непосредственно нужно работать, работает как бридж .... import com.dvx.DVXExtendedControl; public class MyComponent extends View { private Context mContext; private DVXExtendedControl exctrl; <--- Этот контрол находится в библиотеке JAR. public MyComponent(Context context, String keyid) { super(context); mContext = context; exctrl= new DVXExtendedControl(context); } } Класс MyComponent соответсвенно экспортирован в Delphi.. При запуске приложения в logcat сыпят ошибки: E/dalvikvm(22350): Could not find class 'com.dvx.DVXExtendedControl', referenced from method com.example.MyComponent.<init> Где я ошибся?? Помогите пожалуйста! Нужно ли конвертировать в Delphi интерфейс jar библиотеки которые напрямую я не использую?! Заранее благодарю!