Saltar para conteúdo


Foto
- - - - -

{Dúvida} App ARM em processador ARM64


  • Por favor inicie sessão para responder
2 respostas a este tópico

#1 cs.oyen

cs.oyen

    Membro

  • Membros
  • PipPip
  • 63 mensagens
  • LocalizaçãoBraga/Ponte de Lima
  • Motorola Moto X (2014) + Samsung Galaxy S4 (i9505)

Mensagem publicada 02 July 2018 - 21:48

Viva pessoal,

 

Tenho uma dúvida quanto à execução de um apk.

 

Como não sei programar não tenho muito background nestas questões.

 

Então é o seguinte:

 

- Tenho duas apk's ("criadas" há uns bons anos) que estou a tentar instalar num telefone mais recente, mas não consigo que elas abram.

 

Estou com android 7.1 num Xiaomi com cpu ARM64, quando as aplicações foram escritas se não estou em erro foi em ARM e x86 com a api 19 (4.4).

 

Pelo que sei pode correr apps 32bits em sistemas/cpu 64bits o inverso é que não.

 

Alguém que entenda mais disto pode, por favor dar uma opinião em relação a esta dúvida?

 

Obrigado.

 

Cumprimentos.


  • AustAdmilk, Mattode e Randjem gosta disto

#2 pedronveloso

pedronveloso

    Veloso

  • Administradores
  • 1578 mensagens
  • S8

Mensagem publicada 08 July 2018 - 21:06

Equipamentos com ARM64 conseguem correr aplicações feitas exclusivamente para 32 bits. No entanto existe uma limitação, se existir 1 qualquer binário (ficheiro .so) que seja feito para 64bits, então toda a aplicação deve fornecer o resto dos binários em 64 bits. Ou seja, uma aplicação não pode suportar parcialmente 64 bits, ou suporta por completo ou então crasha na execução.

Este cenário é mais frequente do que se pensa, acontece com facilidade quando quem desenvolve o software incluí bibliotecas feitas por terceiros, e estas contêm suporte para 64 bits e outras bibliotecas poderão não conter, resultando este estado "hibrido". É de facil resolucao, basta remover todos os binários 64bits.

 

Outros pontos relevantes:

 

A partir do Verão de 2019 todas as aplicaçōes serão obrigadas a suportar 64bits: https://android-deve...erformance.html

 

Para ver quais os binários dentro de uma aplicação basta obter o ficheiro APK e descomprimir (afinal trata-se de um arquivo ZIP), e ver o conteudo da directoria "lib". 


  • cs.oyen gosta disto

#3 cs.oyen

cs.oyen

    Membro

  • Membros
  • PipPip
  • 63 mensagens
  • LocalizaçãoBraga/Ponte de Lima
  • Motorola Moto X (2014) + Samsung Galaxy S4 (i9505)

Mensagem publicada 10 July 2018 - 19:25

Equipamentos com ARM64 conseguem correr aplicações feitas exclusivamente para 32 bits. No entanto existe uma limitação, se existir 1 qualquer binário (ficheiro .so) que seja feito para 64bits, então toda a aplicação deve fornecer o resto dos binários em 64 bits. Ou seja, uma aplicação não pode suportar parcialmente 64 bits, ou suporta por completo ou então crasha na execução.

Este cenário é mais frequente do que se pensa, acontece com facilidade quando quem desenvolve o software incluí bibliotecas feitas por terceiros, e estas contêm suporte para 64 bits e outras bibliotecas poderão não conter, resultando este estado "hibrido". É de facil resolucao, basta remover todos os binários 64bits.

 

Outros pontos relevantes:

 

A partir do Verão de 2019 todas as aplicaçōes serão obrigadas a suportar 64bits: https://android-deve...erformance.html

 

Para ver quais os binários dentro de uma aplicação basta obter o ficheiro APK e descomprimir (afinal trata-se de um arquivo ZIP), e ver o conteudo da directoria "lib". 

Muito obrigado pela explicação. Não fazia ideia como se processavam as instruções de processamento no caso que expuseste.

 

No caso do "apk_1" tenho na diretoria "lib" estes:

 

- arm64-v8a

- armeabi

- armeabi-v7a

- x86

- x86_64

 

No "apk_2" não tenho a diretoia "lib".

 

Devo então compilar removendo os binários de 64bits e testando se a aplicação funciona? Se estou a dizer algum disparate peço desculpa mas não tenho conhecimentos no que a desenvolvimento diz respeito.

 

Obrigado :)