Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Erro de Sintaxe Xamarin.Android #16

Open
brdacon1 opened this issue May 25, 2023 · 20 comments
Open

Erro de Sintaxe Xamarin.Android #16

brdacon1 opened this issue May 25, 2023 · 20 comments

Comments

@brdacon1
Copy link

Olá estou iniciando a integração de um projeto usando o SDK de vocês usando o .aar para Xamarin.Android e estou obtendo erro na compilação.

Quando tendo construir o projeto obtenho os erros abaixo:

Erro 1:
"PlugPagCustomPrinterLayout.Creator" não implementa membro de interface "IParcelableCreator.CreateFromParcel(Parcel?)". "PlugPagCustomPrinterLayout.Creator.CreateFromParcel(Parcel)" não pode implementar "IParcelableCreator.CreateFromParcel(Parcel?)" porqu não tem o tipo de retorno correspondente de "Object". LibraryPagBank C:\Users\david\Source\Repos\WaiterOrdering_Core\LibraryPagBank\obj\Debug\generated\src\BR.Com.Uol.Pagseguro.Plugpagservice.Wrapper.PlugPagCustomPrinterLayout.cs

A solução é
image

Erro 2:

Tipo "ErrorEventArgs" já define um membro chamado "ErrorEventArgs" com os mesmos tipos de parâmetro LibraryPagBank C:\Users\david\Source\Repos\WaiterOrdering_Core\LibraryPagBank\obj\Debug\generated\src\BR.Com.Uol.Pagseguro.Plugpagservice.Wrapper.Listeners.IPlugPagAPDUCmdExchangeListener.cs

Vários arquivos que contém essas chamadas estão apontando os erros acima.

@metazul
Copy link

metazul commented Aug 15, 2023

Oi David, estou iniciando integração com Xamarin Android e me deparei com o mesmo problema que você.
Conseguiu algum progresso?

@brdacon1
Copy link
Author

Olá Metazul, tudo bem? Cara eu acabei abrindo mão de integrar com SDK deles. Aparentemente o problema é que eles usam uma sintaxe não permitida pelo Visual Studio e tem relação com outros nomes e por isso no Visual Studio da erro. Eu acabei indo para a Stone e Getnet.

@metazul
Copy link

metazul commented Aug 15, 2023

Entendi.
Nós atualmente estamos integrados com Cielo e Rede.
Podemos trocar experiências depois sobre estas integrações.
Aliás, seria bom se tivesse uma comunidade para desenvolvedores para maquininhas que usam Xamarin Android.
Quem sabe não aparece alguém que já integrou com a PagSeguro, mas não com estas outras que integramos e também queira trocar figurinhas.

@NicFT
Copy link

NicFT commented Aug 15, 2023

Opa, eu uso a integração deles ja faz uns 3 anos com o Visual Studio Xamarin, funciona certinho,
esse erro ai que você ta tendo é só ajustar o arquivo dentro do projeto Wrapper "Metadata.xml"

<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagCustomPrinterLayout.Creator']/method[@name='createFromParcel' and count(parameter)=1 and parameter[1][@type='android.os.Parcel']]" name="managedReturn">Java.Lang.Object</attr>

coloca a linha acima veja se para o erro
só replicar pros demais que aparecer

@brdacon1
Copy link
Author

brdacon1 commented Aug 15, 2023

Nicolas, esse metadata.xml é incluído no projeto? Poderia mandar um print de onde o arquivo está na pasta?

@NicFT
Copy link

NicFT commented Aug 15, 2023

Tu tem que criar um projeto WRAPPER esse Wrapper fica associado ao jar da pagseguro, e o teu projeto xamarin vai ficar associado ao projeto Wrapper,
No Wrapper tu vai corrigir esses erros ai q mencionou usando o arquivo metadata.xml, na mensagem de erro ele ja diz ali como resolver na verdade

@brdacon1
Copy link
Author

Achei Aqui!

@brdacon1
Copy link
Author

Vc usou apenas o .aar na integração? nas integrações eu apenas inserir o arquivo .aar para o pagseguro é apenas necessário o .aar?

@NicFT
Copy link

NicFT commented Aug 15, 2023

Sim só o AAR falei errado o JAR ali, segue o metada.xml que funciona para min, deve funcionar para ti

`

<!--
This sample removes the class: android.support.v4.content.AsyncTaskLoader.LoadTask:

This sample removes the method: android.support.v4.content.CursorLoader.loadInBackground:

-->

<remove-node path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagPreAutoQueryData']" />
<remove-node path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagPreAutoKeyingData.Creator']" />



<!-- Metadata.xml XPath method reference: path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper.data.request']/class[@name='PlugPagSimpleNFCData']/method[@name='setValue' and count(parameter)=1 and parameter[1][@type='byte[]']]" -->
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper.data.request']/class[@name='PlugPagSimpleNFCData']/method[@name='setValue' and count(parameter)=1 and parameter[1]]/parameter[1]" name="managedName">Tes</attr>

<!-- Metadata.xml XPath method reference: path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper.exception']/class[@name='PlugPagException']/method[@name='setMessage' and count(parameter)=1 and parameter[1][@type='java.lang.String']]" -->
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper.exception']/class[@name='PlugPagException']/method[@name='setMessage' and count(parameter)=1 and count(parameter)=1 and parameter[1]]/parameter[1]" name="managedName">Tess</attr>

<!-- Metadata.xml XPath method reference: path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper.exception']/class[@name='PlugPagException']/method[@name='setCause' and count(parameter)=1 and parameter[1][@type='java.lang.Throwable']]" -->
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper.exception']/class[@name='PlugPagException']/method[@name='setCause' and count(parameter)=1 and count(parameter)=1 and parameter[1]]/parameter[1]" name="managedName">Tesss</attr>

<!-- Metadata.xml XPath method reference: path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagNearFieldCardData']/method[@name='setSlots' and count(parameter)=1 and parameter[1][@type='java.util.HashMap&lt;java.lang.String, byte[]&gt;[]']]" -->
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagNearFieldCardData']/method[@name='setSlots' and count(parameter)=1 and parameter[1]]/parameter[1]" name="managedName">Tessss</attr>

<!-- Metadata.xml XPath method reference: path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper.listeners']/interface[@name='PlugPagLastTransactionListener']/method[@name='onError' and count(parameter)=1 and parameter[1][@type='java.lang.String']]" -->
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper.listeners']/interface[@name='PlugPagLastTransactionListener']/method[@name='onError']" name="argsType">PlugPagLastTransactiListeneronErrorEventArgs</attr>

<!-- Metadata.xml XPath interface reference: path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper.listeners']/interface[@name='PlugPagInstallmentsListener']" -->
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper.listeners']/interface[@name='PlugPagInstallmentsListener']/method[@name='onError']" name="argsType">PlugPagInstallmentsListeneronErrorEventArgs</attr>

<!-- Metadata.xml XPath interface reference: path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper.listeners']/interface[@name='PlugPagActivationListener']" -->
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper.listeners']/interface[@name='PlugPagActivationListener']/method[@name='onError']" name="argsType">PlugPagActivationListeneronErrorEventArgs</attr>
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper.listeners']/interface[@name='PlugPagActivationListener']/method[@name='onSuccess']" name="argsType">PlugPagActivationListeneronSuccessEventArgs</attr>

<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper.listeners']/interface[@name='PlugPagAbortListener']/method[@name='onError']" name="argsType">PlugPagAbortListeneronErrorEventArgs</attr>
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper.listeners']/interface[@name='PlugPagIsActivatedListener']/method[@name='onError']" name="argsType">PlugPagIsActivatedListeneronErrorEventArgs</attr>

<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper.listeners']/interface[@name='PlugPagNFCListener']/method[@name='onError']" name="argsType">PlugPagNFCListeneronErrorEventArgs</attr>
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper.listeners']/interface[@name='PlugPagNFCListener']/method[@name='onSuccess']" name="argsType">PlugPagNFCListeneronSuccessEventArgs</attr>

<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper.listeners']/interface[@name='PlugPagPaymentListener']/method[@name='onError']" name="argsType">PlugPagPaymentListeneronErrorEventArgs</attr>
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper.listeners']/interface[@name='PlugPagPaymentListener']/method[@name='onSuccess']" name="argsType">PlugPagPaymentListeneronSuccessEventArgs</attr>

<!-- <attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagNearFieldCardData']/field[@name='slots']" name="visibility">public</attr> -->
<!--<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagNearFieldCardData']/method[@name='getSlots' and count(parameter)=0]" name="managedReturn">Object</attr>-->
<!--<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagNearFieldCardData']/method[@name='getSlots' and count(parameter)=0]" name="managedReturn">java.util.HashMap&lt;java.lang.String, byte[]&gt;[]</attr>-->
<!--<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagNearFieldCardData']/method[@name='getSlots' and count(parameter)=0]" name="managedReturn">System.Collections.Generic.IDictionary&lt;string, byte[]&gt; []</attr>-->

<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagNearFieldCardData']/method[@name='getSlots' and count(parameter)=0]" name="managedReturn">Object[]</attr>
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagNearFieldCardData']/method[@name='setSlots' and count(parameter)=1 and parameter[1]]/parameter[1]" name="managedType">Object[]</attr>

<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagNFCResult']/method[@name='getSlots' and count(parameter)=0]" name="managedReturn">Object[]</attr>
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagNFCResult']/constructor[@name='PlugPagNFCResult' and count(parameter)=4 and parameter[1] and parameter[2] and parameter[3] and parameter[4]]/parameter[3]" name="managedType">Object[]</attr>


<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagCustomPrinterLayout.Creator']/method[@name='createFromParcel' and count(parameter)=1 and parameter[1][@type='android.os.Parcel']]" name="managedReturn">Java.Lang.Object</attr>
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagEffectuatePreAutoData.Creator']/method[@name='createFromParcel' and count(parameter)=1 and parameter[1][@type='android.os.Parcel']]" name="managedReturn">Java.Lang.Object</attr>
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagPreAutoData.Creator']/method[@name='createFromParcel' and count(parameter)=1 and parameter[1][@type='android.os.Parcel']]" name="managedReturn">Java.Lang.Object</attr>
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagTechActivation.Creator']/method[@name='createFromParcel' and count(parameter)=1 and parameter[1][@type='android.os.Parcel']]" name="managedReturn">Java.Lang.Object</attr>
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagTransactionResult.Creator']/method[@name='createFromParcel' and count(parameter)=1 and parameter[1][@type='android.os.Parcel']]" name="managedReturn">Java.Lang.Object</attr>


<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagCustomPrinterLayout.Creator']/method[@name='newArray' and count(parameter)=1 and parameter[1][@type='int']]" name="managedReturn">Java.Lang.Object[]</attr>
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagTransactionResult.Creator']/method[@name='newArray' and count(parameter)=1 and parameter[1][@type='int']]" name="managedReturn">Java.Lang.Object[]</attr>
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagEffectuatePreAutoData.Creator']/method[@name='newArray' and count(parameter)=1 and parameter[1][@type='int']]" name="managedReturn">Java.Lang.Object[]</attr>
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagPreAutoData.Creator']/method[@name='newArray' and count(parameter)=1 and parameter[1][@type='int']]" name="managedReturn">Java.Lang.Object[]</attr>
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagTechActivation.Creator']/method[@name='newArray' and count(parameter)=1 and parameter[1][@type='int']]" name="managedReturn">Java.Lang.Object[]</attr>
`

@brdacon1
Copy link
Author

Deu certo!

@metazul
Copy link

metazul commented Aug 15, 2023

Obrigado Nicolas.
Qual versão do wrapper-release.aar vocês estão usando? Usei a versão 1.25.0 e por outros erros tive que adicionar mais algumas linhas no metadata.xml.
Se precisarem de alguma ajuda futura para integrar com maquininhas da Cielo e Rede, me avisem. Podemos montar um grupo no WhatsApp para isto, afinal não são muitos desenvolvedores que integram com maquininhas usando o Xamarin Android.
Segue as linhas que adicionei no metadata.xml:
<attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper.listeners']/interface[@name='PlugPagSetStylesListener']/method[@name='onError']" name="argsType">PlugPagSetStylesListeneronErrorEventArgs</attr> <attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagPagBankActivationResult.Creator']/method[@name='createFromParcel' and count(parameter)=1 and parameter[1][@type='android.os.Parcel']]" name="managedReturn">Java.Lang.Object</attr> <attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagPagBankActivationResult.Creator']/method[@name='newArray' and count(parameter)=1 and parameter[1][@type='int']]" name="managedReturn">Java.Lang.Object[]</attr> <attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagPreAutoQueryResult.Creator']/method[@name='createFromParcel' and count(parameter)=1 and parameter[1][@type='android.os.Parcel']]" name="managedReturn">Java.Lang.Object</attr> <attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagPreAutoQueryResult.Creator']/method[@name='newArray' and count(parameter)=1 and parameter[1][@type='int']]" name="managedReturn">Java.Lang.Object[]</attr>

@brdacon1
Copy link
Author

Metazul eu estou usando a versão 1.9 a ultima que eles disponibilizaram com a versão de compilação do android 9

@NicFT
Copy link

NicFT commented Aug 15, 2023

Obrigado Nicolas. Qual versão do wrapper-release.aar vocês estão usando? Usei a versão 1.25.0 e por outros erros tive que adicionar mais algumas linhas no metadata.xml. Se precisarem de alguma ajuda futura para integrar com maquininhas da Cielo e Rede, me avisem. Podemos montar um grupo no WhatsApp para isto, afinal não são muitos desenvolvedores que integram com maquininhas usando o Xamarin Android. Segue as linhas que adicionei no metadata.xml: <attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper.listeners']/interface[@name='PlugPagSetStylesListener']/method[@name='onError']" name="argsType">PlugPagSetStylesListeneronErrorEventArgs</attr> <attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagPagBankActivationResult.Creator']/method[@name='createFromParcel' and count(parameter)=1 and parameter[1][@type='android.os.Parcel']]" name="managedReturn">Java.Lang.Object</attr> <attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagPagBankActivationResult.Creator']/method[@name='newArray' and count(parameter)=1 and parameter[1][@type='int']]" name="managedReturn">Java.Lang.Object[]</attr> <attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagPreAutoQueryResult.Creator']/method[@name='createFromParcel' and count(parameter)=1 and parameter[1][@type='android.os.Parcel']]" name="managedReturn">Java.Lang.Object</attr> <attr path="/api/package[@name='br.com.uol.pagseguro.plugpagservice.wrapper']/class[@name='PlugPagPreAutoQueryResult.Creator']/method[@name='newArray' and count(parameter)=1 and parameter[1][@type='int']]" name="managedReturn">Java.Lang.Object[]</attr>

Show
No caso da CIELO da pra embarcar na maquininha usando xamarin ? tinha lido na documentação deles q não dava

@metazul
Copy link

metazul commented Aug 15, 2023

Dá sim Nicolas. Na maquininha smart deles, a LIO. No nosso caso usamos a integração híbrida. Que é uma alternativa que eles oferecem e que facilita na integração. Dá para integrar a parte de pagamentos e impressão.
Ricardo.

@metazul
Copy link

metazul commented Aug 15, 2023

Metazul eu estou usando a versão 1.9 a ultima que eles disponibilizaram com a versão de compilação do android 9

Existe algum motivo para usar esta compilação do Android 9? Aliás, não sei se estou enganado, mas vi no AndroidManifest.xml das versões e o Android 9 (SDK 28) vai até a versão 1.17.0 deles.
Ainda nem li a documentação da PagSeguro, estava primeiro testando o .aar deles para ver se era complicado para converter. Agora que vi que é simples vou atrás da documentação.

@RicardoJohann
Copy link

Olá, @brdacon1, @metazul, @NicFT

Eu também utilizo o Xamarin.Android e já integrei com a Stone e Vero.
Agora estou começando com a PagSeguro... Me deparei com esses mesmos erros de vocês, e as linhas que vocês comentaram, resolveu.
Pretendo integrar também mais tarde com a Cielo, MercadoPago, Rede...

Se fizerem ou já fizeram algum grupo de whatsapp, slack, comunidade... gostaria de fazer parte também

@metazul
Copy link

metazul commented Mar 8, 2024

Oi pessoal, criei um discord para nós, desenvolvedores que usam Xamarin e MAUI especificamente para apps de maquininhas. Nele poderemos compartilhar nossas particularidades no uso dos SDKs Java em nossos projetos para as maquininhas.
Lá, compartilhei algumas configurações do Metadata.xml de algumas bibliotecas que uso.
Atualmente estou com alguma dificuldade na configuração para o novo SDK da Rede (4.0.6), se alguém quiser participar, ajudar ou compartilhar, agradeço:

https://discord.gg/HAt7mW39

@metazul
Copy link

metazul commented Mar 27, 2024

Oi, @RicardoJohann, @brdacon1, @NicFT

Como disse na mensagem anterior, criei um grupo de desenvolvedores Xamarin e MAUI em apps para maquininhas. Lá podemos trocar ideias e compartilhar configurações em desenvolvimento para maquininhas Smart como as da Rede, Cielo, PagSeguro, etc. O novo desafio é o da nova versão e exigências da maquininha da Rede.

Estou compartilhando novamente o link/convite para o grupo no Discord, pois o link anterior expirou. A todos interessados, espero por vocês lá:

https://discord.gg/REME4XnG

@tonychristiec
Copy link

Oi @metazul

tentei entrar no link do discord mas acho que expirou novamente, pode me mandar?

@metazul
Copy link

metazul commented Mar 28, 2024

Oi @tonychristiec

O último link/convite que enviei continua ativo, mas de qualquer forma criei um outro que nunca expira. A todos que se interessarem o convite é ilimitado. Segue:

https://discord.gg/WSXUtyaHyx

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants