繁体   English   中英

Android Studio实验性NDK C库

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM