目錄結構java
src/ |-- main | |--java | |--jni | | |--lib | | | |--arm64 | | | | |--libmodpdfium.so | | | | | | | |--armeabi-v7a | | | | |--libmodpdfium.so | | | | | | | |--armeabi-v7a | | | | |--libmodpdfium.so | | | | | | | |--x86 | | | |--libmodpdfium.so | | | | | |--mainJNILib.cpp | | |--util.hpp | | | |--jniLibs | |--res |
Project的build.gradle文件android
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.2' classpath 'com.android.tools.build:gradle-experimental:0.8.2' // 增長 classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.6' classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1' } } allprojects { repositories { jcenter() } }
Module的build.gradle文件git
apply plugin: 'com.android.model.library' model{ android { compileSdkVersion = 24 buildToolsVersion = "24.0.2" defaultConfig { minSdkVersion.apiLevel 9 targetSdkVersion.apiLevel 22 versionCode 1 versionName "1.4.0" } } android.ndk{ moduleName "jniPdfium" //生成的so名字 abiFilters.addAll([ "arm64", "armeabi","armeabi-v7a", "mips", "x86", "x86_64"]) //會生成指定體系結構下的so庫 ldLibs.addAll(["log", "android", "jnigraphics"]) stl "stlport_static" cppFlags.add("-fexceptions") cppFlags.add("-DHAVE_PTHREADS") } android.buildTypes { release { minifyEnabled false // proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFiles.add(file("proguard-rules.txt")) } } // c文件依賴的so庫 repositories { prebuilt(PrebuiltLibraries) { libmodpdfium{ // so庫文件名 headers.srcDir "src/main/jni" // so庫的頭文件 binaries.withType(SharedLibraryBinary) { sharedLibraryFile = file("src/main/jni/lib/${targetPlatform.getName()}/libmodpdfium.so") // so庫的位置 } } } } android.sources { main{ jni { dependencies { // c文件須要調用so庫的函數 library "libmodpdfium" } source { // c文件的位置 srcDirs "src/main/jni" } } jniLibs { source { // jniLibs位置 srcDir "src/main/jniLibs" } } } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:support-v4:24.2.1' }
參考:github
Experimental Plugin User Guide http://tools.android.com/tech-docs/new-build-system/gradle-experimental 在Android Studio中使用NDK/JNI - 實驗版插件用戶指南 https://my.oschina.net/wolfcs/blog/550677