2023-01-19 342
我正在搜索应该将.doc/.docx转换为.pdf的库中.
我得到了pdftron android SDK,因为他们给了libpdfnetc.so file.
对于转换,有一个称为转换的类,内部有一个方法topdf(),
在这种方法中,他们内部称为本机方法filetopdf().我尝试了该代码,但无法调用该本机方法,并且正在获取错误
我想知道,如果有现有的.SO文件,并且您想调用.So文件中存在的本机方法,那么是否需要使用JNI?我对JNI了解不多.任何帮助.
您必须链接使用ndk-build生成的最终共享库,并使用ndk-build与PDF共享库链接您所说的 您已经为ARM Architecture编辑 .
(确保是这种情况,否则库将无法在Android上使用!)
为此,如果例如,您具有以下目录结构:
jni
└── libs
└────── my_shared_lib.so
└── Android.mk
└── Application.mk
您需要在 android.mk 文件中具有以下内容:
LOCAL_PATH := $(call my-dir)
# define our prebuilt shared library as a module to the build system
include $(CLEAR_VARS)
LOCAL_MODULE := mysharedlib
LOCAL_SRC_FILES := libs/my_shared_lib.so
include $(PREBUILT_SHARED_LIBRARY)
# The final shared library that will be bundled inside the .apk
include $(CLEAR_VARS)
LOCAL_MODULE := mynativelib
LOCAL_LDLIBS := -landroid -llog
LOCAL_CPPFLAGS := -O0 -g3 -std=c++11 -Wall -Wextra
LOCAL_SHARED_LIBRARIES := mysharedlib
LOCAL_C_INCLUDES := myheader1.h myheader2.h
LOCAL_SRC_FILES := src_file1.cpp src_file2.cpp
include $(BUILD_SHARED_LIBRARY)
和 application.mk 文件的内容(用于使用C ++标准库,并为两个不同版本的ARM架构构建最终共享库):
APP_OPTIM := debug
APP_PLATFORM := android-14
APP_STL := gnustl_static
APP_ABI := armeabi armeabi-v7a
然后,在使用 ndk-Build 脚本从Eclipse或从命令行编译代码后,它将对您进行编译您的最终共享库,并将其链接到您的预构建的共享库(即PDF)您说您正在尝试使用的共享库).
对于共享库,生成并部署到设备/模拟器的APK包含最终共享库以及您针对链接的所有预构建的共享库,而与链接的静态库相比没有捆绑在APK中.
对于您的用例,在设备上解开APK后,您的Android应用程序的LIB目录中应该有两个共享库.
您可以通过从终端运行以下命令来检查此问题:
adb shell ls -l /data/data/com.company.myapp/lib
用您的应用程序的软件包名称替换com.com.company.myapp.
另外,不要忘记将以下内容放在Java类的静态上下文中:
class MyClass
{
static
{
try
{
System.loadLibrary("mynativelib");
}
catch (UnsatisfiedLinkError ule)
{
Log.e(TAG, "WARNING: Could not load native library: "
+ ule.getMessage());
}
}
// other code here...
}
请注意,系统内的使用相同名称.loadlibrary方法调用为最终共享库名称.
您需要确保系统上可用映射到本机接口的.SO文件,并且可以通过Java找到.
.
应该在Java代码中某个地方进行诸如System.loadLibrary(“<libraryname>”)或System.load(“/path/to/libs/lib<libraryname>.so”)之类的调用.
这将指示JVM使用给定名称搜索库并加载它.
还确保您正在加载的库版本与Java JNI映射兼容!
要在NDK上工作,有一个.mk(make file)在JNI下遵守以获取.so文件.
.mk文件使用C/C ++片段写在本机代码中.
现在使用JNI编译,有两种常见的方法:
1. 在工作旧ADT + SDK版本时:
您将需要在Windows配置上配置Linux环境,以便在Shell上运行JNI命令.可以通过网络上的各种软件(例如Cygwin设置)来实现此环境.
2. 如果您使用的ADT + SDK版本已更新:
然后,ADT本身有一个NDK插件.因此,在NDK和本地库上工作更容易.
有关NDK的更多详细信息,请访问此处
以上所述是小编给大家介绍的如何在Android应用程序中使用现有的.so文件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/25903.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态