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