[英]android studio experimental ndk c library
我按照以下示例使用gradle构建了一些测试c和c ++程序
我还能够使用实验功能设置android studio,以借助此答案构建一个调用本机函数的android项目
我知道我可以使用android.useDeprecatedNdk=true
来构建此项目
并提供我的android.mk文件供android studio编译和构建应用。
实验功能是否可以构建相同的程序? 该项目是使用CMAKE构建的,并且有一些编译步骤可以输出需要链接的文件。 ndk-build创建了这些文件,但是我找不到使用android实验功能进行处理的方法。
我正在尝试出于测试目的,并试图构建一个构建更复杂项目的简单例子。 我决定尝试构建zlib库 。
这是我的build.gradle
apply plugin: 'com.android.model.application'
model {
android {
compileSdkVersion = 23
buildToolsVersion = "23.0.1"
defaultConfig.with {
applicationId = "me.test.testnative_exp"
minSdkVersion.apiLevel = 10
targetSdkVersion.apiLevel = 23
versionCode = 1
versionName = "1.0"
buildConfigFields.with {
create() {
type = "int"
name = "VALUE"
value = "1"
}
}
}
}
compileOptions.with {
sourceCompatibility=JavaVersion.VERSION_1_7
targetCompatibility=JavaVersion.VERSION_1_7
}
android.ndk {
moduleName = "hello-jni"
cppFlags += "-I${file("src/main/jni/zlib")}".toString()
stl = "stlport_static"
}
android.buildTypes {
release {
minifyEnabled = false
proguardFiles += file('proguard-rules.pro')
}
}
android.sources {
main {
java {
source {
srcDir 'src'
}
}
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:design:23.0.1'
}
我的项目结构是
app/
build/
libs/
src/
src/main/testActivity.java
jni/zlib <- the zlib folder is the one that I downloaded from the zlib website.
jni/hello-jni.c
同步build.gradle后,我在文件的头上收到链接错误: infbak9.c找不到#include“ zutil.h”
但两个文件都位于jni下的zlib目录中。
是否可以使用android studio实验性ndk构建来编译此项目?
github中有一个很好的项目,我在我的项目中使用了它的结构,这是“如何在复杂项目中使用experimental(v_0.4.0)插件”的好例子。 :
https://github.com/frogermcs/FlatBuffs
* Android NDK中有zlib,只需在gradle中添加适当的cflag和ldLibs.add("z")
。 并在您的本机代码中include <zlib.h>
以及来自Google的良好实验性gradle配置: https : //github.com/googlesamples/android-ndk/blob/229cbe86238d401bb06166b8dfadec8198532589/native-codec/app/build.gradle
您可以在此仓库中查看一组样本:
https://github.com/googlesamples/android-ndk
您可以通过添加以下内容来解决您的问题:[从那里的茶壶示例]:
cppFlags.addAll(['-I'+“ $ {ndkDir} / sources / android / cpufeatures”,'-I'+ file('src / main / jni / ndk_helper')])
只需将目录替换为您自己的路径“ zutil.h”等即可。您还可以使用最新的gradle-experimental版本简化脚本-例如为defaultConfig.with删除“ .with”,删除Java 7版本部分(最新android studio可以处理java 8),那些“ .toString()”内容也很罗so,因此示例将样式更改为使用“ +” [尽管这些不是您的构建错误的问题]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.