如何在android应用程序中使用现有的.so文件[关闭]

2024-01-10

我正在寻找应该在 android 平台中将 .doc/.docx 转换为 .pdf 的库。

我得到了 PdFTron android sdk,因为他们给出了 libPDFNetC.so 文件。

对于转换,有一个名为 Convert 的类,其中有一个方法 toPDF(), 在该方法中,他们在内部调用了本机方法 FileToPdf()。我尝试了该代码,但无法调用该本机方法并收到错误

我想知道,如果您存在现有的 .so 文件,并且您想调用 .so 文件中存在的本机方法,那么是否需要使用 JNI?我对JNI了解不多。任何帮助。


您必须使用以下链接链接由 Android NDK 生成的最终共享库ndk-build到你说的PDF共享库您已经针对 ARM 架构进行了编译. (确保情况如此,否则该库将无法在 Android 上运行!)

例如,如果您有以下目录结构:

jni
└── libs
└────── my_shared_lib.so
└── Android.mk
└── Application.mk

您需要在其中包含以下内容Android.mk file:

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)

和内容应用程序.mk文件(用于使用 C++ 标准库,并为两个不同版本的 ARM 架构构建最终的共享库):

APP_OPTIM := debug
APP_PLATFORM := android-14
APP_STL := gnustl_static
APP_ABI := armeabi armeabi-v7a

然后在 Eclipse 中或使用命令行编译代码后ndk构建脚本它会编译您最终的共享库并将其链接到您预构建的共享库(即您所说的要尝试使用的 PDF 共享库)。

对于共享库,生成并部署到设备/模拟器的 apk 包含最终共享库以及您链接的所有预构建共享库,与链接未捆绑在 apk 内的静态库相反。

对于您的用例,在设备上解压 apk 后,您的 Android 应用程序的 lib 目录中应该有两个共享库。 您可以通过从终端运行以下命令来检查这一点:

adb shell ls -l /data/data/com.company.myapp/lib

将 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...
}

注意使用sameSystem.loadLibrary 方法调用中的 name 作为最终的共享库名称。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在android应用程序中使用现有的.so文件[关闭] 的相关文章

  • GLSurfaceView onDrawFrame 清除行为

    我在使用 GLSurfaceView 时遇到了不同的行为 据我所知 程序有责任清除每帧的缓冲区 颜色和深度 这意味着 如果我不清除缓冲区 我将获得最后一帧的内容 或双缓冲的前一帧 似乎无论在某些设备上如何 缓冲区都会被清除 我在一些测试设备
  • ViewPager 中的按钮滚动到特定页面

    我的 ViewPager 内的布局之一有一个按钮 R layout add site 我想要点击按钮的选项 它会滚动到我的特定页面 我已经可以选择滑动到特定页面 但我想同时拥有这两个选项 现在我确信有办法做到这一点 但由于某种原因 我无法弄
  • ANDROID:Webview 和 httpclient 之间共享会话

    我的 WebView 中实际上有一个记录的会话 但我也使用 httpclient 从网络发送和获取数据 我在互联网上看到不可能获取WebView的内容 所以我需要使用我的httpclient从Web服务获取数据 问题是这个Web服务使用会话
  • 创建全球唯一的 Android 标识符

    说到Android唯一ID 相信大家都见过this https stackoverflow com questions 2785485 is there a unique android device id 但是我也试图提出一个解决方案来唯
  • 具有多个 orderBy 的 Android firebase 查询

    我想检索我的 firebase 数据库中所有类型为 福音 的数据 这是我的数据库 DatabaseReference infoRef FirebaseDatabase getInstance geReference child info i
  • Android 多个 SurfaceView

    我正在尝试在一个屏幕上使用 3 个 SurfaceView 一个在上半部分 BoardView 一个在下半部分 StatusView 最后一个作为上半部分 TileView 上方的额外层 请参阅 main xml 我创建了一个类MySurf
  • 如何在没有 Google Play 服务的情况下设置 Android 模拟器

    一位客户要求我制作一个应用程序版本 以便在没有 Google Play 服务的设备上运行 有什么方法可以告诉 Android 模拟器在不使用 GPS 的情况下运行应用程序吗 然后我可以测试代码以确保它可以在客户端设备上运行 使用不包含 go
  • 如何减少 Android 布局中文本之间的行距?

    我想减少所附布局中文本之间的行距 User12 5 部电影 改进 2 5 下面是 xml 我尝试删除 singleLine true 语句并尝试将其设置为 false
  • 自定义溢出图标太大(使用 android.support.v7 和 AppCompat)

    我的目标是让操作栏为红色 但由于默认 Android 库中我的唯一选项是白色和黑色 因此我尝试对其进行自定义 我通过在 gimp 上使用油漆桶来填充白色图标并以不同的名称重新保存它 从而制作了一些自定义红色图标 我对溢出图标做了同样的事情
  • 如何禁用列表视图中的项目?

    我有一个列表视图 它是通过数据库中的记录填充的 现在我必须使一些记录可见但不可选择 我怎样才能做到这一点 这是我的代码 public class SomeClass extends ListActivity private static L
  • SwipeListView 47 度:以编程方式滑动第一项

    我想滑动第一个项目滑动列表视图 https github com 47deg android swipelistview on Activity启动以向用户显示SwipeListView是可滑动的 如何使用此 UI 元素以编程方式执行此操作
  • 如何从 Android 应用程序调试共享库 [单独的项目]

    我正在开发一个 Android 应用程序并在项目中使用密集的 C 代码 首先 我将c 源代码放入项目中 并使用以下指南在Android应用程序中具有本机调试的NDK功能 http tools android com recent using
  • 如果没有当前类的引用,svgLoader 无法工作

    这是我的主类 通过这个类 我通过 url 从 api 获取数据 并创建一个适配器类来维护它 但发生了意外错误 这是MainActivity java public class MainActivity extends AppCompatAc
  • 如何从代码中检测 Android 设备上的双核 cpu?

    我遇到了一个似乎仅影响双核的问题Android设备运行Android 2 3 姜饼 或更大 我想就这个问题进行一次对话 但仅限于符合该标准的用户 我知道如何检查OS级别 但还没有找到任何可以明确告诉我该设备正在使用多核的信息 有任何想法吗
  • Android Studio 找不到 R.layout.simple_list_item_1 或任何其他默认布局 ID

    ID 之类的东西R layout simple list item 1不显示在 Android Studio 中的自动完成功能中 手动输入名称时也无法解析它们 我正在尝试使用 ArrayAdapter 并且我必须手动创建一个simple l
  • 如何获取 Android 版 Chromium 的源代码

    我正在尝试为 Android 构建 Chromium 开源浏览器 我已经提到过 Visit http code google com p chromium wiki AndroidBuildInstructions http code go
  • Android 检测片段何时分离

    我可以轻松检测到Fragments附于Activity via Activity onAttachFragment 但我怎样才能检测到Activity那一些Fragment脱离活动了吗 没有Activity onDetachFragment
  • 在 Repository 类中观察 Forever 是一个好习惯吗?数据库+网络分页列表

    我正在按照架构指南构建应用程序 实现了房间数据库缓存 网络 需要从单独的实体获取最新页码 我的型号 Entity tableName top rated movie page public class Top Rated Movies Pa
  • 如何添加不确定的进度条

    我的应用程序 UI 是使用 Android 支持库构建的 但目前没有我的应用程序真正需要的 不确定的 进度条的 AppCompat 版本 我宁愿不使用任何第三方库来实现材料设计进度条 所以我想知道是否有人坐在有关为什么它不包含在支持库中的信
  • 如何在android中创建nanohttpd服务器?

    其实我也查过一些问题 然后去github上找了一下 但我是新来的 我无法理解这个例子 我想在android中创建http服务器 这样我就可以在PC浏览器中访问它 我有一个类扩展 nanohttpd 的实例 但服务器无法工作 不知道为什么 我

随机推荐