Android studio NDK 开发

目录结构

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文件

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文件

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'
}

参考:

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值