1

我正在尝试使用AndroidJniBitmapOperations库。但我是一名初级开发人员,对 NDK、JNI 世界一无所知。

我成功解决了一些错误,例如“UnsatisfiedLinkError”,但现在我在尝试构建时遇到了一个新错误:

错误:未定义对“AndroidBitmap_unlockPixels”的引用

我在 CPP 文件中也遇到了一些错误:

1.“参数'prarmeterName'的类型不正确,它应该具有'jint'类型。

2.“添加外部'C'”

但我不确定最后两个是否重要。

帮我更新这个库,因为它很重要,并且多次讨论过,比如:here

它自己的库的链接: https ://github.com/AndroidDeveloperLB/AndroidJniBitmapOperations

到目前为止我所做的一切是: https ://github.com/LiorA1/MyRevApp

4

1 回答 1

2

您需要链接提供该 API 的库。在https://github.com/LiorA1/MyRevApp/blob/master/app/src/main/cpp/CMakeLists.txt中,复制日志库的代码,如下所示:

find_library(log-lib log)
find_library(jnigraphics-lib jnigraphics)
target_link_libraries(JniBitmapOperationsLibrary ${log-lib} ${jnigraphics-lib})

虽然我认为这里的模板代码实际上过于复杂,您可以简化为:

target_link_libraries(JniBitmapOperationsLibrary -llog -ljnigraphics)

虽然未经测试。

至于如何确定每个 Android API 需要使用哪个库,我发现最简单的方法是在cs.android.com上搜索它。对于这个,我搜索了AndroidBitmap_unlockPixels file:.*\.map\.txt(每个 NDK API 都在一个*.map.txt文件中枚举)。您也可以使用此页面,但代码搜索具有权威性,并且在这种情况下,可以更轻松地查找单个函数而不仅仅是“位图”。

于 2020-05-14T21:40:36.433 回答