我正在尝试使用jackpal的source code来改进我的应用,但我无法意识到如何让它发挥作用。
这些是TermExec.java中的一些行
public class TermExec {
static {
System.loadLibrary("jackpal-termexec2");
}
那么,为什么它是“jackpal-termexec2”当我猜他的意思的图书馆被称为“termExec.cpp”?
无论如何,它们都没有用,我试过它们(System.loadLibrary(“termExec”),但我得到了一个UnsatisfiedLinkError
这是我的app / src / main / cpp文件夹:
common.cpp
COMMON.H
fileCompat.cpp
fileCompat.h
process.cpp
process.h
termExec.cpp
termExec.h
和我的CMakeLists.txt(但是,我没有在jackpal的项目中找到CMakeLists.txt文件)
cmake_minimum_required(VERSION 3.4.1)
add_library( # Specifies the name of the library.
common
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/common.cpp )
add_library( # Specifies the name of the library.
fileCompat
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/fileCompat.cpp )
add_library( # Specifies the name of the library.
process
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/process.cpp )
add_library( # Specifies the name of the library.
termExec
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/termExec.cpp )
include_directories(src/main/cpp/)
答案 0 :(得分:0)
我的建议是只关注术语模块,我刚刚将我的fork更新为O
https://github.com/Surge1223/Android-Terminal-Emulator.git
我建议使用" android.deprecatedNdkCompileLease = 1501314830007"而不是CMAKE。除非aosp gerrit将开始摆脱目前建立ndk库的计划,否则我真的没有看到在工作室中使用ndk构建的绝对形式。特别是考虑到工作室中关于ndk支持的可怕文档。
大多数人都有问题让hello-jni继续构建。无论如何,你想要发布不满意的链接器错误,并且lib的名称不依赖于源文件的名称。
我知道我做了一个非常可怕的更新源代码的工作,但它适用于最新的gradle版本的最新canary。
答案 1 :(得分:0)
jackpal的项目包含两个.so文件。
jackpal-androidterm5包含:
common.cpp
fileCompat.cpp
termExec.cpp
jackpal-termexec2包含:
process.cpp
因此,不是所有的add_library函数都使用:
add_library( # Sets the name of the library. jackpal-androidterm5 # Sets the library as a shared library. SHARED # Provides a relative path to your source file(s). common.cpp fileCompat.cpp termExec.cpp) add_library( # Sets the name of the library. jackpal-termexec2 # Sets the library as a shared library. SHARED # Provides a relative path to your source file(s). process.cpp)
然后,您应该添加到CMakeLists target_link_libraries
和find_library
中,以在应用程序中查找库,或者从apk文件中提取.so,然后使用它。