gpt4 book ai didi

android - 如何将 C++ 文件正确链接到 Android Studio 中的现有 Android 项目?

转载 作者:太空宇宙 更新时间:2023-11-03 13:41:01 25 4
gpt4 key购买 nike

正在关注 this我正在尝试正确链接 some cpp and hpp files .我从 existing project 开始我会把所有的联系在一起。我读到我有两种可能性:编写一个 CMake 文件或使用 ndk-build 将它们全部连接起来。通过尝试后者,我无法编写 Application.mk 和 Android.mk 文件,因为我不知道我需要做什么。

构建 Grandle 代码:

apply plugin: 'com.android.application'

android {
compileSdkVersion 24
buildToolsVersion "24.0.2"

defaultConfig {
applicationId "com.google.android.gms.samples.vision.face.facetracker"
minSdkVersion 9
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:24.2.0'
compile 'com.android.support:design:24.2.0'
compile 'com.google.android.gms:play-services-vision:9.4.0+'

编辑:我正在尝试使用 ndk-build。

app.grandle:

apply plugin: 'com.android.application'

android {
compileSdkVersion 24
buildToolsVersion "24.0.2"

defaultConfig {
applicationId "com.google.android.gms.samples.vision.face.facetracker"
minSdkVersion 9
targetSdkVersion 24
versionCode 1
versionName "1.0"


}
sourceSets.main {
jni.srcDirs = [] //disable automatic ndk-build call
}
task ndkBuild(type: Exec, description: 'Compile JNI source via NDK') {
commandLine "C:/Users/cvlab/AppData/Local/Android/sdk/ndk-bundle/ndk-build.cmd",
'NDK_PROJECT_PATH=build/intermediates/ndk',
'NDK_LIBS_OUT=src/main/jniLibs',
'APP_BUILD_SCRIPT=src/main/jni/Android.mk',
'NDK_APPLICATION_MK=src/main/jni/Application.mk'
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ndkBuild
}


buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:24.2.0'
compile 'com.android.support:design:24.2.0'
compile 'com.google.android.gms:play-services-vision:9.4.0+'
}

应用程序.mk:

APP_PLATFORM := android-24
APP_ABI := armeabi-v7a arm64-v8a x86 x86_64
APP_STL := gnustl_static
APP_CPPFLAGS := -std=gnu++11 -frtti -fexceptions

ifeq ($(NDK_DEBUG),0)
APP_CPPFLAGS += -DNDEBUG
endif

Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=SHARED
OPENCVROOT:= C:\Users\cvlab\Downloads\opencv-3.3.0-android-sdk

OPENCV_INSTALL_MODULES := on
include ${OPENCVROOT}/sdk/native/jni/OpenCV.mk

LOCAL_MODULE := face-lib
LOCAL_SRC_FILES += $(LOCAL_PATH)/Baseline.cpp $(LOCAL_PATH)/Heartbeat.cpp $(LOCAL_PATH)/opencv.cpp $(LOCAL_PATH)/RPPG.cpp
LOCAL_LDLIBS += -llog -ldl
LOCAL_CPPFLAGS += -std=gnu++11 -frtti -fexceptions

LOCAL_MODULE := MyLibs

include $(BUILD_SHARED_LIBRARY)

同步、生成项目和清理项目的结果没有任何错误,但我遇到了这个错误:

Process 'command 'C:/Users/cvlab/AppData/Local/Android/Sdk/ndk-bundle/ndk-build.cmd'' finished with non-zero exit value 2

怎么了?

最佳答案

我建议您使用 Android Studio 创建一个支持 C++ 的项目。可以看到this article例如。如果你必须在你的 Android/Kotlin 代码和你的 C++ 类之间构建一个包装器,你可以阅读 this thread

关于android - 如何将 C++ 文件正确链接到 Android Studio 中的现有 Android 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51988969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com