2015-04-02 86 views
2

我需要做一件簡單的事情:在項目中包含.so。這是我現在有:如何在Android Gradle應用程序中包含* .so文件?

# app/build.gradle 
apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     applicationId "my.app.123" 
     minSdkVersion 14 
     targetSdkVersion 22 

     versionCode 7113 
     versionName "7113" 
    } 


    productFlavors { 
     x86 { 
      ndk { 
       abiFilter "x86", "x86_64" 
      } 
     } 
     arm { 
      ndk { 
       abiFilters "armeabi-v7a", "armeabi" 
      } 
     } 

    } 
} 



dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'io.pristine:libjingle:8871' 
} 

# build.gradle 
all sub-projects/modules. 
buildscript { 
    repositories { 
     jcenter() 
     mavenCentral() 

    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.1.0' 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
     mavenCentral() 
    } 
} 

而且我有這些 「所以」 文件的src/src目錄/主/ jniLibs

/arm64-v8a/file1_so.so 
    /armeabi-v7a/file1_so.so 
    /x86/file1_so.so 
    /x86_64/file1_so.so 

然而,當我啓動我的應用程序,我得到一個錯誤這意味着應用程序正在使用之前已經嵌入到其中的「舊」,文件。所以我不確定這些文件中的任何一個都被編譯成結果apk

我該怎麼做才能將它們包含到輸出apk中去呢?

+0

你看到我的答案? – 2015-04-13 21:15:49

+0

@JaredBurrows,是的,但在我看到它之前我已經修復了它,我不記得究竟如何,但更簡單。 – 2015-04-13 21:21:34

+0

你能選擇一個答案嗎? – 2015-04-29 17:26:28

回答

5

這是我如何把我的預建*.so到我的應用程序,只要確保你的*.so都在src/main/libs文件夾:

android { 
    ... 
    sourceSets { 
     //noinspection GroovyAssignabilityCheck 
     main { 
      jni { 
       srcDirs = [] 
      } 

      jniLibs { 
       srcDir 'src/main/libs' 
      } 
     } 
    } 
} 
+0

@AlexanderSupertramp爲什麼downvote? – 2015-05-12 19:16:43

相關問題