Android e bibliotecas nativas pré-compiladas

20 respostas
M

Bem, estou desenvolvendo para Android, mas me surgiu um grande problema.

Como colocar bibliotecas nativas no pacote da aplicação, para falar a verdade, é mais exatamente onde colocar.

A parte nativa já está compilada, e coloquei o resultado (arquivo .so) dentro da pasta libs do projeto Android.

Mas quando vou fazer o deploy o seguinte erro é lançado (visto no logcat do DDMS)

12-23 14:36:59.032: ERROR/AndroidRuntime(2509): FATAL EXCEPTION: main
12-23 14:36:59.032: ERROR/AndroidRuntime(2509): java.lang.ExceptionInInitializerError
12-23 14:36:59.032: ERROR/AndroidRuntime(2509):     at java.lang.Class.newInstanceImpl(Native Method)
...
12-23 14:36:59.032: ERROR/AndroidRuntime(2509): Caused by: java.lang.UnsatisfiedLinkError: Library book2png not found
12-23 14:36:59.032: ERROR/AndroidRuntime(2509):     at java.lang.Runtime.loadLibrary(Runtime.java:461)
12-23 14:36:59.032: ERROR/AndroidRuntime(2509):     at java.lang.System.loadLibrary(System.java:557)
...

UnsatisfiedLinkError.

Como teste, exportei o apk e abri como zip, reparei que a biblioteca nativa não está lá dentro.

Alguém sabe como fazer isso?

20 Respostas

M

Consegui avançar um pouco nesta questão.

Agora o arquivo .so está indo junto com a apk mas ainda acontece o java.lang.UnsatisfiedLinkError

M

Outro progresso, ele até acha a library. Mas quando é chamado o método nativo o programa simplesmente se fecha.
E esse é o log.

12-23 18:26:08.774: INFO/ActivityManager(59): Process com.adobe.rmsdk.book2png (pid 468) has died.
12-23 18:26:08.794: INFO/WindowManager(59): WIN DEATH: Window{44003770 com.adobe.rmsdk.book2png/com.adobe.rmsdk.book2png.Book2pngActivity paused=false}
12-23 18:26:08.895: INFO/UsageStats(59): Unexpected resume of com.android.launcher while already resumed in com.adobe.rmsdk.book2png
12-23 18:26:09.085: WARN/InputManagerService(59): Got RemoteException sending setActive(false) notification to pid 468 uid 10033
J

Se possível, poste o código…

De qualquer forma, veja se isso ajuda,

P

Marky.Vasconcelos, vi que está usando o Book2png, por acaso esse é um sample do RMSDK da adobe? Vc está tentando fazer algo com esse sdk? Eu estou com o mesmo problema e gostaria de saber se vc já tem alguma solução e se você já avançou bastante do com esse sdk e se poderias esclarecer algumas dúvidas, comecei a estuda-lo agora e ainda estou com muitas dificuldades.

Obrigado.

M

Esse é exatamente o RMSDK da Adobe. E eu já avançei bastante sim.

P

Bacana, tem como vc me dar umas dicas? Eu comecei a pesquisar sobre esse SDK tem 2 dias e preciso criar um leitor de PDF, ainda não sei muito bem como que ele funciona, na verdade, ainda não consegui nem usar o boo2png e também fazer algo usando o NDK e JNI. Já li o manual do usuário algumas vezes mas n ficou mt claro.

Vc pode passar algum material que vc usou para avançar, dicas ou algo do tipo?

Atualmente estou parado tentando fazer algo usando o JNI, e n estou conseguindo fazer isso no windows usando o cygwin, da um erro de que ele nao consegue encontrar o Make.

Agradeço.

M

Sinceramente, não tenho a minima idéia de como fazer isso no Windows, eu indico voce usar o linux para isso, dai é só seguir o documento que vem junto com o RMSDK, “DL_RMSDK__Android_Linux_Setup_Guide.pdf”.

Realmente eu gastei um bom tempo só para fazer isso funcionar, se eu fosse voce, parava primeiro para estudar um pouco do NDK depois voltar para o RMSDK, ele é extremamente dificil de mecher.

PS: Tenha um device na mão para testar, só veja se funciona pelo emulador e depois teste no device.

P

Tá certo, obrigado pela dica, vo passar a estudar o Linux, e continuar estudando o NDK e depois passar pro RMSDK, gostaria de saber se posso conta com um suporte básico por aqui caso necessário.

Obrigado.

M

Talvez alguma coisa eu possa te ajudar mas só no basico, esse é um framework proprietario e sua empresa devia ter um suporte pago com a Adobe.

Informação sobre o RMSDK é extremamente escassa pela internet.

P

Tá certo, eu agradeço.

C

O RMSDK é gratis ?

Consigo baixar aonde ?

ps: se nao for gratis , quanto custa ? :stuck_out_tongue:

M

chun:
O RMSDK é gratis ?

Consigo baixar aonde ?

ps: se nao for gratis , quanto custa ? :P

É pago, não sei direito quanto é, mas deve ser uns 60k U$

R

Ola…

Como vc fez para o .so ir junto com a aplicação e abrir la dentro, estou fazendo um programa que vai ler um stream aac+ e não to conseguindo mandar o arquivo “libaacdecoder.so” junto com a aplicação…

Valeu

K

0.0 alguém conseguiu resolver esse problema ta dando isso no meu tb

M

Cara, depois que começei a compilar a parte nativa pelo NDK, ele gera o .so na pasta /obj/local/armeabi/objs com o nome lib.so

T

ola pessoal…

estou desenvolvendo um projeto usando o RMSDK, só que é iOS, objective-C, não java.

Consegui compilar a library e inseri-la em um projeto do XCode, mas, qdo faço o DW_fullfill | DW_Download, após o download do livro, recebo um erro 403, proibido acesso.

O arquivo esta sendo salvo no disco, isso ocorre qdo ele vai criar a library, após o download. Eu tenho permissão para acessar o arquivo no disco…

alguem ja chegou nesse estagio com o rmsdk e teve o mesmo problema?

M

Esse erro 403 é no iOS ou no workflow do RMSDK?

T

isso é no workflow, tipo isto:

termina o download e ai vem:

Created stream 0x7e487d0, POST http://drm.xeriph.com.br:8080/fulfillment/FulfillmentNotification
Stream 0x7e487d0 out offset=0
<?xml version="1.0"?><adept:notification xmlns:adept="http://ns.adobe.com/adept"><adept:user>urn:uuid:801951d6-ec3b-48d7-81fb-0ab034ae64a2</adept:user><adept:device>urn:uuid:9d5e0358-64f6-48b0-95c1-76a5887615ca</adept:device><adept:expiration>2011-11-03T18:50:22Z</adept:expiration><adept:nonce>Qiit2b05AAADAAAA</adept:nonce><body xmlns="http://ns.adobe.com/adept">
        <fulfillment>00f689c9-20db-40ea-852f-0725a3129b56-000021d2</fulfillment>
        <transaction>2e5ea7487aaa5b24599be57a74609f6c7c8cb19e</transaction>
        <user>urn:uuid:801951d6-ec3b-48d7-81fb-0ab034ae64a2</user>
        <fulfilled>true</fulfilled>
        <returned>false</returned>
      </body><adept:signature>ZxVrw57YzKwkoFBxBfDsLKhVlMrhlh2zw7avtL/XXFW21Ke/sd63P54bvlNlWZUY8aPTVHhqKkWI32Du4SCLc58t87LDvxy7fKMFwY0Aa+H6nxb2DJUxgcgbNyUNtRF+3vx83rMvELrEn9RFGZsPoGar9kvvTtyO5Gg/Qq8qgnI=</adept:signature></adept:notification>
Stream 0x7e487d0 header: Server: Apache-Coyote/1.1
Stream 0x7e487d0 header: Content-Type: application/vnd.adobe.adept+xml
Stream 0x7e487d0 header: Date: Thu, 03 Nov 2011 18:20:25 GMT
Stream 0x7e487d0 in offset=0
<success xmlns="http://ns.adobe.com/adept"/>.

Created stream 0x7e3df10, POST http://xeriph.com.br
Stream 0x7e3df10 out offset=0
<?xml version="1.0"?><adept:notification xmlns:adept="http://ns.adobe.com/adept"><adept:user>urn:uuid:801951d6-ec3b-48d7-81fb-0ab034ae64a2</adept:user><adept:device>urn:uuid:9d5e0358-64f6-48b0-95c1-76a5887615ca</adept:device><adept:expiration>2011-11-03T18:50:23Z</adept:expiration><adept:nonce>Qiit2b05AAAEAAAA</adept:nonce><body xmlns="http://ns.adobe.com/adept">
        <fulfillment>00f689c9-20db-40ea-852f-0725a3129b56-000021d2</fulfillment>
        <transaction>2e5ea7487aaa5b24599be57a74609f6c7c8cb19e</transaction>
        <user>urn:uuid:801951d6-ec3b-48d7-81fb-0ab034ae64a2</user>
        <fulfilled>true</fulfilled>
        <returned>false</returned>
        <hmac>O+pHGeTULBzabA+Rd6xibV+ZIGk=</hmac>
      </body><adept:signature>rskOy4mF8NivxJ/4aYLNrMLOIKsadha7n1ktULL9orbt2gaOfUyIXQ/14qRKzPKLlXsHD4DLOoXqoOlAKXAvLU1+i8tHovguBD6H2w8UluBiQz94DfS6Yj97yuVlRPDBLGN8+LMZafi7SFZnWrYr3TsSS0668UWjLRLk8Ooz4yk=</adept:signature></adept:notification>
Stream 0x7e3df10 header: Date: Thu, 03 Nov 2011 18:20:22 GMT
Stream 0x7e3df10 header: Server: Apache/2.2.14
Stream 0x7e3df10 header: Vary: Cookie,Accept-Encoding
Stream 0x7e3df10 header: Set-Cookie: csrftoken=7debde02840d1d39a25de3c88b879e2e; Max-Age=31449600; Path=/
Stream 0x7e3df10 header: Transfer-Encoding: chunked
Stream 0x7e3df10 header: Content-Type: text/html
Stream 0x7e3df10 in offset=0

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta name="robots" content="NONE,NOARCHIVE">
  <title>403 Forbidden</title>
  <style type="text/css">
    html * { padding:0; margin:0; }
    body * { padding:10px 20px; }
    body * * { padding:0; }
    body { font:small sans-serif; background:#eee; }
    body>div { border-bottom:1px solid #ddd; }
    h1 { font-weight:normal; margin-bottom:.4em; }
    h1 span { font-size:60%; color:#666; font-weight:normal; }
    #info { background:#f6f6f6; }
    #info ul { margin: 0.5em 4em; }
    #info p, #summary p { padding-top:10px; }
    #summary { background: #ffc; }
    #explanation { background:#eee; border-bottom: 0px none; }
  </style>
</head>
<body>
<div id="summary">
  <h1>Forbidden <span>(403)</span></h1>
  <p>CSRF verification failed. Request aborted.</p>

</div>

<div id="explanation">
  <p><small>More information is available with DEBUG=True.</small></p>
</div>

</body>
</html>
M

Hmm… ta ai um erro que eu nao passei.

Mas só pra avisar, falta outro parametro pro WORKFLOW é o DW_NOTIFY, que avisa o ACS depois de ter feito o FULFILL.

C

Marky, estou exatamente com o mesmo erro que você estava em 2012, como você resolveu?

Criado 23 de dezembro de 2010
Ultima resposta 19 de abr. de 2015
Respostas 20
Participantes 8