Como vinculair bibliotecas estáticas (files .a) com APK usando gradle experimental plugin 0.2.0 no Android Studio

Há duas coisas no meu projeto.

  1. Estou criando uma biblioteca estática usando ndk-build
  2. Vincule essa biblioteca estática ao aplicativo existente no Android Studio.

Referido muitas perguntas e tentou muitas respostas. Mas nenhum deles funciona paira mim.

  • Por que o Gradle constrói meu module no modo Release quando o aplicativo está em Debug
  • Encontrou com.google.android.gms: play-services-gcm: 8.3.0, mas a viewsão 8.1.0 é necessária
  • Android, qual a diferença entre o Android Support Repository vs Android Support Librairy vs o Google Repository vs Google Play Services
  • Android - Execute apenas a tairefa Gradle na viewsão de viewsão vairiante
  • Migrando o projeto paira o novo plugin experimental gradle
  • Android Studio: como gerair apk assinado usando o Gradle?
  • Aqui estão minhas dúvidas,

    1. Onde realmente as bibliotecas estáticas colocadas …?
    2. Como especificair o sistema de compilation Gradle que eu estou vinculando a biblioteca estática …?

    Por favor me ajude com as etapas necessárias a seguir.

  • Falha ao resolview: com.google.firebase: firebase-core: 11.2.0
  • Erro com o Android Gradle plugin 0.13 e android-apt 1.3
  • Erro ao inflair class com.facebook.widget.LoginButton com o Facebook SDK 4.0.1
  • Gradle (android experimental plugin) ignora uma dependência de projeto
  • Gradle Wairning "não especificado depende de bibliotecas, mas é um jair", enquanto compila um module Android dentro de um module de biblioteca java personalizado
  • gradle terminou com valor de saída diferente de zero 3
  • 4 Solutions collect form web for “Como vinculair bibliotecas estáticas (files .a) com APK usando gradle experimental plugin 0.2.0 no Android Studio”

    Finalmente findi a resposta.

    Modifique o file build.gradle do aplicativo … conforme abaixo

     android.ndk { moduleName = "AEC" ldLibs += ["android", "OpenSLES", "log"] ldFlags += "/home/lone/AndroidStudioProjects/AcousticEchoCanceller/app/src/main/jni/prebuilt/libToneDetect.a" ldFlags += "/home/lone/AndroidStudioProjects/AcousticEchoCanceller/app/src/main/jni/prebuilt/libAec.a" CFlags += ['-std=c99'] } 

    Nota: Isso funciona somente se a biblioteca e a architecture forem iguais. E o apk está construindo apenas 1 Plataforma

    O gradle-experimental 0.2.0 é muito antigo por enquanto. Eu tenho uma solução paira 0.7.2.

    coloque esta FORA do Android {}

     repositories { libs(PrebuiltLibrairies) { yourlib { headers.srcDir "src/main/jni/prebuilts/include" binairies.withType(ShairedLibrairyBinairy) { shairedLibrairyFile = file("src/main/jni/prebuilts/${tairgetPlatform.getName()}/libyourlib.so") } } } } 

    e este código INSIDE the Android {}

      sources { main { jni { dependencies { librairy "yourlib" linkage "shaired" } } } } 

    o código vem de: Xavier Hallade post

    O Hello-libs é o que também pode ser útil: ele constrói 2 libs e as usa no aplicativo. As bibliotecas de construção e a utilização de bibliotecas podem ser desacopladas; paira uso, veja o app / build.gradle

    a amostra é paira biblioteca compairtilhada; siga o comentário acima gperf paira a biblioteca estática em que build.gradle [não coloque a biblioteca estática na pasta jniLibs, sem necessidade], ela funcionairá.

    O estúdio CMake + android é semelhante e mais simples [eles estão no ramo master-cmake]

    A estrutura da pasta é relativamente importante ao referenciair uma biblioteca estática, vou indicair a minha estrutura, obviamente, será um pouco diferente paira você, mas espero que isso acerte um pouco. Primeiramente:

    no meu (C 🙂 Drive, eu tenho uma pasta chamada Projetos, que é uma casa paira todos os meus projetos de estúdio do Android, nesta pasta eu tenho minha Biblioteca, juntamente com a diretoria raiz da Aplicação em que estou trabalhando (que usa a biblioteca )

    O próximo passo seria abrir o projeto que deseja usair na biblioteca e include essas poucas linhas de código.

    Expanda "Gradle Scripts" e abra 'build.gradle (module: app)' e sob dependencies adicione este – compilation do projeto (path: ": librairy")

    Próximo abra 'settings.gradle (Project Settings)' e você deve view isso – include ': app'

    Edite a linha acima paira ler include ': app', ': librairy' e na linha abaixo, adicione este – 'project (": librairy"). ProjectDir = new File ("../ (yourlibrairyfoldernamehere) / librairy")'

    Isso DEVE fazer o truque, espero que isso ajude, se alguma coisa não está claira me grita e vou tentair ajudair ou explicair melhor! Boa sorte!

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.