【问题标题】:Calling 3rd party native library in your own android app在您自己的 android 应用程序中调用 3rd 方本机库
【发布时间】:2019-08-02 23:21:08
【问题描述】:

是否可以为您自己的 android 应用中没有源代码的原生库编写代码?

例如 - RarLab 的 android 应用带有一个原生库 librarlab_rar.so,至少适用于 4 个不同的平台。

假设我这样做是为了实验,版权不是问题,并且我不打算在外部分发应用程序,是否可以编译仅包含本机二进制文件的基于 Java/Kotlin android 的应用程序在Android Studio或Eclipse等android开发工具中?

【问题讨论】:

    标签: java android android-studio kotlin java-native-interface


    【解决方案1】:

    您需要反汇编二进制.so 文件并自己制定API。此过程称为逆向工程

    请参阅:How do I reverse engineer .so files found in android APKs?,了解如何完成任务的想法。

    一旦您弄清楚如何调用 .so 文件,您就可以编写自己的 API 版本,然后您可以从 Java/Kotlin 调用它。

    【讨论】:

    • 但通常 Android Studio 被配置为编译原生源代码,即 C 部分。如果只是扔原生库,路径上怎么指定呢?
    • 可以包含第三方库:developer.android.com/ndk/guides/prebuilts
    • 您可以将路径添加到您的 cmakes 文件中,它会抓取并使用它。
    【解决方案2】:

    您在应用程序中放在jniLibs/$(ABI) 文件夹下的任何lib….so 文件都会自动打包到APK 并解压缩到设备(前提是ABI 匹配)。您可能需要为这些库编写自己的 Java 包装器,或者从同一个应用程序中重用您需要的 Java 类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-14
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      • 2015-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多