Android e bibliotecas nativas pré-compiladas

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?

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

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

Se possível, poste o código…

De qualquer forma, veja se isso ajuda,

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.

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

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.

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.

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.

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.

Tá certo, eu agradeço.

O RMSDK é gratis ?

Consigo baixar aonde ?

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

[quote=chun]O RMSDK é gratis ?

Consigo baixar aonde ?

ps: se nao for gratis , quanto custa ? :P[/quote]

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

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

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

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

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?

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

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>

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.