【发布时间】:2017-01-31 19:50:10
【问题描述】:
我是一名资深程序员,但对 Android Studio 很陌生。我继承了一些现有的 JNI 库代码,这些代码旨在与已经具有其 Android.mk 文件的 ndk-build 一起运行。重用它会很好。当我使用 Android Studio 打开一个新项目并设置 C++ 支持标志时,它会将自己设置为使用 CMake 而不是 ndk-build。 Android Studio 的文档说两者都可用,所以我决定尝试一个简单的测试,看看我是否找到了所有需要更改的地方。这是一个完全失败的错误消息,似乎无处可去。
要重新创建,请使用 Android Studio 创建一个新项目 ProjTest2 并选中包含 C++ 支持框。接受具有 API 16 最低 SDK 的默认手机和平板电脑外形尺寸:Android 4.1。选择空活动。接受默认的活动和布局名称。接受默认工具链,不要选中 Exceptions Support 或 Runtime 框。运行程序,选择设备 Android Emulator Nexus_5_API_24:5554。一切都很好;在模拟器屏幕上从 C++ 获取消息 Hello。
尝试更改为 ndk-build。打开 Module:app 的 build.grade 文件。替换行:
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
与:
externalNativeBuild {
ndkBuild {
path "jni/Android.mk"
}
}
在目录 ProjTest2/app 中创建一个新文件夹 jni。在该文件夹中创建包含以下内容的文件 Android.mk:
# A simple test for the minimal standard C++ library
#
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := native-lib
LOCAL_SRC_FILES := $(LOCAL_PATH)/../src/main/cpp/native-lib.cpp
LOCAL_LDLIBS := -llog -landroid
include $(BUILD_SHARED_LIBRARY)
构建现在失败,声称它找不到#include
我是否错过了一些简单的事情,或者这并不像看起来那么容易?
编辑:
还需要文件:
# Application.mk
APP_ABI := armeabi-v7a armeabi
APP_PLATFORM := android-21
APP_OPTIM := release
APP_STL := gnustl_static
【问题讨论】:
标签: android-studio android-ndk