簡體   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