johnbh3 Postado 13 Setembro Postado 13 Setembro unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, {$IFDEF ANDROID} Androidapi.JNIBridge, // Ponte JNI entre Delphi e Java Androidapi.Helpers, // Funções de auxílio Androidapi.JNI.JavaTypes, // Tipos Java como JObject, JString Androidapi.JNI; // Funções e tipos JNI {$ENDIF} type TForm1 = class(TForm) private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} {$IFDEF ANDROID} function CallJavaPluginAdd(a, b: Integer): Integer; var JNIEnv: PJNIEnv; // Ponteiro para o ambiente JNI JavaClass: JClass; // Usamos JClass do Androidapi.JNI.JavaTypes JavaMethod: JMethodID; // ID do método Java a ser chamado ResultValue: JValue; // Valor de retorno do método begin // Obter o ambiente JNI JNIEnv := TJNIResolver.GetJNIEnv; // Encontrar a classe Java 'com/example/myplugin/Plugin' JavaClass := JNIEnv^.FindClass(JNIEnv, 'com/example/myplugin/Plugin'); // Verificar se a classe foi encontrada if JavaClass = nil then raise Exception.Create('Classe Java não encontrada!'); // Encontrar o método estático 'add' que recebe dois inteiros e retorna um inteiro JavaMethod := JNIEnv^.GetStaticMethodID(JNIEnv, JavaClass, 'add', '(II)I'); // Verificar se o método foi encontrado if JavaMethod = nil then raise Exception.Create('Método add não encontrado!'); // Chamar o método estático 'add' com os parâmetros 'a' e 'b' ResultValue.I := JNIEnv^.CallStaticIntMethodA(JNIEnv, JavaClass, JavaMethod, [JValue(a), JValue(b)]); // Retornar o resultado Result := ResultValue.I; end; {$ENDIF} end. Pedi o chatgpp o codigo em java para chamar .jar no delphi package com.example.myplugin; public class Plugin { public static int add(int a, int b) { return a + b; } } Porém no delphi esta dando o erro [DCC Error] Unit1.pas(34): E2003 Undeclared identifier: 'JClass' [DCC Error] Unit1.pas(35): E2003 Undeclared identifier: 'JMethodID' [DCC Error] Unit1.pas(36): E2003 Undeclared identifier: 'JValue' Alguém ja chamou um .jar com android fmx?
Moderadores Juliomar Marchetti Postado 14 Setembro Moderadores Postado 14 Setembro J2OP procura por isso Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
johnbh3 Postado 14 Setembro Autor Postado 14 Setembro @Juliomar Marchetti J2OP no google? nao entendi
johnbh3 Postado 14 Setembro Autor Postado 14 Setembro Eu vi aqui na pasta do delphi Até rodei o comando para exportar Java2OP.exe -jar c:\java\myjavalibrary.jar no cmd fez isto, porém nao sei aconteceria! Se iria gerar alguma unit mas gerou nada C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\converters\java2op>Java2OP.exe -jar c:\java\myjavalibrary.jar Embarcadero Java2OP Version 12.16582 ($Rev: 95842 $) Copyright(c) 2016-2020 Embarcadero Technologies, Inc. Parsing xml: C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\converters\java2op\bootclasses.xml Parsing jar: c:\java\myjavalibrary.jar Olhei em https://docwiki.embarcadero.com/RADStudio/Athens/en/Java2OP.exe,_the_Native_Bridge_File_Generator_for_Android
johnbh3 Postado 14 Setembro Autor Postado 14 Setembro A documentação da embarcadero e fraca demais, e existe praticamente nenhum material no google
johnbh3 Postado 14 Setembro Autor Postado 14 Setembro Consegui Nussa esta deu trampo, rapaiz isto n existe no google tive que mudar meu metodo no java para static 1
Moderadores Juliomar Marchetti Postado 16 Setembro Moderadores Postado 16 Setembro Obrigado por reportar. Fechando. Para novas dúvidas, criar um novo tópico. Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Recommended Posts