1) não é dll, é so... ;)
2) sim, ele linka dinamicamente com a chamada System.loadLibrary()
3) veja se as libs estão dentro do APK gerado
4) este erro é que estas libs estão com dependência na libhoudini.so, você precisa incluir ela também
5) não é exception, é error, por isso não pega no try/catch
2016-01-26 11:53 GMT-02:00 Tiago Grillo <tijgrillo@gmail.com>:
Thiago tentei simplesmente criar a pasta jniLibs e colocar lá os .so (em suas respectivas pastas) tenho o seguinte errojava.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib/libhoudini.so" not foundachei na net uns caras falando de colocar no gradle estas linhastask copyJniLibs(type: Copy) {
from 'libs/armeabi'
into 'src/main/jniLibs/armeabi'
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn(copyJniLibs)
}
clean.dependsOn 'cleanCopyJniLibs'mas o erro persiste, o interessante, ou não, é que meu android studio não reconhece os metodos da dll, mas o projeto compila normal. mas quando chamo uns deles vem o erro acima e o aplicativo para, mesmo com try catch.--2016-01-26 10:51 GMT-02:00 Thiago Lopes Rosa <thiago.rosa@gmail.com>:Primeiramente, se eles já forneceram as libs pré-compiladas acho que você não precisa compilá-las novamente (apenas se você fizer alguma alteração no wrapper.c).O ndk-build no Android Studio ainda é muito limitado (pelo menos até a última vez que mexi nele). Ele gera o próprio Android.mk durante a compilação, ou seja, ele não está utilizando o Android.mk fornecido.No seu caso, acho que basta colocar as libs dentro do diretório jniLibs separadas pelos ABIs corretos (no padrão é src/main/jniLibs/seus_targets_abi/sua_lib.so), do mesmo jeito que você disse que elas já estão separadas.Thiago--2016-01-26 10:33 GMT-02:00 Tiago Grillo <tijgrillo@gmail.com>:--Ola,Preciso por umas classes nativas de um fornecedor no meu projeto para fazer a integração, mas tá dificil... :'(Vamos a minha saga... (o projeto exemplo que ele me mandou esta em eclipse)Eu tenho os arquivos Android.mk, Application.mk comm.h wrapper.c que estão na pasta JNITenho em libs as pastas armeabi, armeabi-v7a, mips e x86 que tem praticamente os mesmos arquivos (em questão de nome, entendo que cada um foi compilado para uma arquitetura de so).Nelas tem os arquivos gdb.setup, gdbserver, libsat-jni.so, libsatprotocol.soNo Android StudioEu pedi uma pasta JNI e coloquei os 4 primeiros arquivos que citeiDepois mudei a visão da IDE de Android para Project achei a pasta libs e copiei as 4 pastas e seus arquivos para lá.Na sequencia fui no build.gradle da app e coloquei a linhandk {
moduleName "sat-jni"
}Depois disso ao fazer make do meu produto da o erroError:(22, 0) Error: NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin. For details, see http://tools.android.com/tech-docs/new-build-system/gradle-experimental. Set "android.useDeprecatedNdk=true" in gradle.properties to continue using the current NDK integration.
<a href="openFile:C:\Projetos\CloudBox1\Droidl\CloudBox1\app\build.gradle">Open File</a>Ai pesquisei e achei na net que tenho que mudar no gradle-wrapper.propertiese no build.gradle da aplicaçãode com.android.tools.build:gradle:1.3.0para com.android.tools.build:gradle-experimental:0.6.0-alpha7mas ai tive o erroError:(1, 0) Plugin with id 'com.android.application' not found.
<a href="openFile:C:\Projetos\CloudBox1\Droidl\CloudBox1\app\build.gradle">Open File</a>Bom dai vi que poderia por uma tag no gradle.properties que diz para deixar eu usar o modo depreciado mesmoandroid.useDeprecatedNdk=trueDai aparentemente até achou minhas libs e tal mas dai estou com o erroError:Execution failed for task ':app:compileArmDebugNdk'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Users\tijgrillo\AppData\Local\Android\sdk\ndk-bundle\ndk-build.cmd'' finished with non-zero exit value 2Eu entendo que é por que esta faltando alguma configuração para conseguir compilar os arquivos da pasta jni.Minhas perguntas são:1) Tenho mesmo que por tudo isso no meu projeto?2) Não consigo por apenas um .jar (ou .qualquer_coisa) e usar?3) Qual a melhor forma de fazer? com sem o depreciado?4) Por favor se alguém tiver uma receita de bolo pra eu fazer esta porcar.. funcionar!?!?!Obrigado a todos,Tiago Grillo
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
0 comentários:
Postar um comentário