Перейти к содержанию
Fire Monkey от А до Я

void

Пользователи
  • Постов

    12
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные void

  1. Походу все-таки нужен jar
    вышеприведенный класс используется в:
    C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android\debug\google-play-billing.jar

    Который в свою очередь подключается в delphi

    В AndroidStudio сгенерировались Java файлы с интерфейсами в Java
     

    Цитата

    Инструменты Android SDK генерируют интерфейс на языке программирования Java на основе вашего файла .aidl . Этот интерфейс имеет внутренний абстрактный класс с именем Stub который расширяет Binder и реализует методы из вашего интерфейса AIDL. Вы должны расширить класс Stub и реализовать методы.

    Теперь вопрос:
    Как из этих файлов сделать jar библиотеку?
    используя все зависимости от андроида
     

  2. В delphi есть класс который реализует похожую (с VisualStudio - например) технологию подключения интерфейсов
    unit Androidapi.JNI.InAppBilling;

    {*******************************************************}
    {                                                       }
    {           CodeGear Delphi Runtime Library             }
    { Copyright(c) 2013-2018 Embarcadero Technologies, Inc. }
    {              All rights reserved                      }
    {                                                       }
    {*******************************************************}
    
    unit Androidapi.JNI.InAppBilling;
    uses
      Androidapi.JNIBridge,
      Androidapi.JNI.JavaTypes,
      Androidapi.JNI.Os;
    
    type
    // ===== Forward declarations =====
    
      JIInAppBillingService = interface;//com.android.vending.billing.IInAppBillingService
      JIInAppBillingService_Stub = interface;//com.android.vending.billing.IInAppBillingService$Stub
    
    // ===== Interface declarations =====
    
      JIInAppBillingServiceClass = interface(JIInterfaceClass)
        ['{914929AF-917C-4D7E-842C-656701CACCE7}']
      end;
    
      [JavaSignature('com/android/vending/billing/IInAppBillingService')]
      JIInAppBillingService = interface(JIInterface)
        ['{03D4C897-6265-4854-97C6-415F5C846C0E}']
        function consumePurchase(apiVersion: Integer; packageName: JString; purchaseToken: JString): Integer; cdecl;
        function getBuyIntent(apiVersion: Integer; packageName: JString; sku: JString; type_: JString; developerPayload: JString): JBundle; cdecl;
        function getPurchases(apiVersion: Integer; packageName: JString; type_: JString; continuationToken: JString): JBundle; cdecl;
        function getSkuDetails(apiVersion: Integer; packageName: JString; type_: JString; skusBundle: JBundle): JBundle; cdecl;
        function isBillingSupported(apiVersion: Integer; packageName: JString; type_: JString): Integer; cdecl;
      end;
      TJIInAppBillingService = class(TJavaGenericImport<JIInAppBillingServiceClass, JIInAppBillingService>) end;
    
      JIInAppBillingService_StubClass = interface(JBinderClass)
        ['{77F4F8A3-E103-4CC1-AB9A-D373F71C6D4C}']
        {class} function init: JIInAppBillingService_Stub; cdecl;
        {class} function asInterface(obj: JIBinder): JIInAppBillingService; cdecl;
      end;
    
      [JavaSignature('com/android/vending/billing/IInAppBillingService$Stub')]
      JIInAppBillingService_Stub = interface(JBinder)
        ['{A5D13E53-F09B-4972-A639-BF7D7B81C242}']
        function asBinder: JIBinder; cdecl;
        function onTransact(code: Integer; data: JParcel; reply: JParcel; flags: Integer): Boolean; cdecl;
      end;
      TJIInAppBillingService_Stub = class(TJavaGenericImport<JIInAppBillingService_StubClass, JIInAppBillingService_Stub>) end;
    
    implementation
    
    procedure RegisterTypes;
    begin
      TRegTypes.RegisterType('Androidapi.JNI.InAppBilling.JIInAppBillingService', TypeInfo(Androidapi.JNI.InAppBilling.JIInAppBillingService));
      TRegTypes.RegisterType('Androidapi.JNI.InAppBilling.JIInAppBillingService_Stub', TypeInfo(Androidapi.JNI.InAppBilling.JIInAppBillingService_Stub));
    end;
    
    initialization
      RegisterTypes;
    end.



    пробовал подключить подобным образом

    Обращение (для подключения к интерфейсу):

    ....
    FService := TJIInAppBillingService_Stub.JavaClass.asInterface(service);

    ....

    Но в моем случае выдает ошибку при таком обрашщении:
    Java class JIInAppBillingService_Stub could not be found
    УСЛОВНО (т.е. мой класс а не в примере):
    Java class MyClass_Stub could not be found

    JavaSignature - перепроверено названия классов

    ЧТО НУЖНО для этого обращения еще, кроме выше приведенного класса, чтобы взлетело подобное обращение?

  3. Спасибо

    Все РЕШИЛОСЬ установкой - Delphi 10.3.1

    как и во всех (подобных) ошибках в XCode, описаных для mac, все решалось установкой либо более старой либо более новой версией :)

  4. Вопрос звучит так в более развернутом виде:
    Заново стягивал с помощью UpdateLocalCache ? или другим средством ?

    но ответ уже получен в твоем
    ---------------------------------------------------------
    Что не понятно из?:

    Цитата

    Раз 10-ть :) делали
    Все ломается строго при переходе с 11.2 -> 12.1

    На нескольких машинах

    Другого способа стягивать не знаю кроме UpdateLocalCache?
    Вот и спросил:
     

    Цитата

    (заново стягивал UpdateLocalCache ?)


    Надеюсь так понятней будет.
    И не кинешься снова объяснять:
     

    Цитата

    Нет, стянуть заново это
    - удалить SDK из списка
    - удалить данные файлы из папки что написал выше
    - добавить SDK в список, автоматически загрузит новые файлы
     UpdateLocalCache просто стянет файлы из указанных мест.
    удаление и добавление SDK с нуля подтягивает новые пути для загрузки.

     

  5. 1.

    Цитата

    Попробуй удалить файлы загруженные SDK (C:\Users\YOUR_USER\Documents\Embarcadero\Studio\SDKs) и стянуть заново, потому что UpdateLocalCache лично у меня работал криво. 

    (заново стягивал UpdateLocalCache ?)

    Раз 10-ть :) делали
    Все ломается строго при переходе с 11.2 -> 12.1



    2.

    Цитата

    В моем случае я переходил с PAServer 19 на 20 и тоже думал UpdateLocalCache .. 

    не зависело от этого

    3.

    Цитата

    Ну и на всякий Clean/Build

    Как отче наш :)

  6. 1)   Delphi -> Project Options -> Building -> Delphi Compiler -> Linking -> Option passed to the LD linker
    Добавил нужные для компиляции зависимости стороннего framework с соответствующими параметрами и бибилиотеками

    у меня например:
       -ObjC -L C:\Users\Andrey\Documents\Embarcadero\Studio\SDKs\iPhoneOS12.1.sdk\usr\lib ..\_CommonModules\YandexMetrica\Frameworks\Foundation.framework\Foundation ......
    ..... -lsqlite3 -lz -lc++

    (после такой линковки второй пункт не понадобился)

    Но на всякий дополню
    2)

    Цитата

    procedure FakeLoader; cdecl; external 'MyLib.a' name 'OBJC_CLASS_$_MyClass'
      dependency 'libstdc++.dylib', 'libz.dylib';

      dependency 'stdc++', 'z';

  7. Добрый день.
    (Delphi 10.3)
    (XCode 10.1)

    Подключил статический framework на версии SDK 11.2 (macMini)
    как описано в:

    ВСЕ ЗАРАБОТАЛО!
     

     


    После обновления:
    1) macMini к
            XCode 10.1
            SDK 12.1
            PAServer 20.0
    2) windows
            PAServer 20.0
    3) PAServer - конектится

    4) прописал дополнительные SDK  (Delphi -> SDK Manager -> Properties)
    5) Получил SDK 12 на windows (Delphi -> Update Local File Cache)
    6) Пути в Linking изменил для SDK12

    При сборке выдает ОШИБКУ:
    [DCC Error] E2597 Undefined symbols for architecture arm64 (для 32 - armv7):...

    [DCC Fatal Error] F2588 Linker error code: 1 ($00000001)

    Кто нибудь сталкивался с такой ошибкой после обновления?
     

  8. Добрый день .
    Тема про клонирвание
    (http://fire-monkey.ru/topic/60-клонирование-компонента-в-runtime/)
    закрыта - поэтому задаю вопрос здесь!

    Меняю в RunTime Этементы стиля (по умолчанию в стиле = 0)
    Object.StylesData['Element.Width'] := 100

    Затем клонинрую объект
    ObjectClone := Object.Clone(Object));

    Получаем
    ObjectClone.StylesData['Element.Width'] == 0

    Собственно вопрос
    Как клонировать измененные значения? Не задавая их отдельно - потом

     

×
×
  • Создать...