【问题标题】:How to get libssl.so and libcrypto.so from apk如何从 apk 获取 libssl.so 和 libcrypto.so
【发布时间】:2019-04-29 14:18:01
【问题描述】:

所以我尝试将 openSSL 构建到我的 qt android 应用程序中。以及我从使用预编译二进制文件到安装 ubuntu 18 的所有努力,但仍然失败,我感到绝望。

我已经阅读了这个帖子:

QT + OpenSSL + Android

我可以从任何现有的 apk 中获取它们,那么如何从 apk 中提取它们?因为我在 android ndk 和 sdk 中找不到它。如果它只选择 apk,我用什么程序 indor 让我看到它。

我在 Windows 上使用 Qt 5.11,但如果需要,我也有 linux OS :) 谢谢!

【问题讨论】:

  • apk 文件只是一个扩展名不同的 zip 文件。从这里和那里获取库是一个坏主意。只需自己构建库。您不能在 android 上使用为 x86 编译的库。不同的架构,不同的机器代码。
  • 我真的很难构建库,如果您亲自尝试过并愿意帮助我,我非常渴望倾听先生:)

标签: android qt openssl


【解决方案1】:

您只需将扩展名更改为“.zip”即可打开它们:) 如果我能找到包含这些文件的应用程序,它将更新。

PS:不是所有的 apk 都有 libcrypto.so 和 libssl.so。

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
  • 我是作者,它应该是问题的答案,但似乎堆栈溢出需要 2 天才能回答我自己的问题。所以它自动做到了这一点。 :)
【解决方案2】:

几个月前,我已经为 android 构建了 OpenSSL,问题为零。只需遵循此 Linux 指南:

export ANDROID_NDK_ROOT="/home/dev/android-ndk-r12b"
SR="$ANDROID_NDK_ROOT/platforms/android-16/arch-arm"
BR="$ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-"


RANLIB="$BR"ranlib CC="$BR"gcc ./Configure android-armeabi --prefix=$SR/usr --sysroot=$SR
ANDROID_DEV=$SR/usr make
make install

显然,您必须根据您安装的 NDK 版本和位置,将路径替换为您自己的路径,并且您已经下载并提取了 OpenSSL 源代码。另外,请记住,Qt 似乎不适用于最新和“最强大”的 android 工具链。事实上,android 已经切换到 llvm,但是对于 Qt,您将需要使用较旧的 gcc 工具链。

您可以使用this script 来构建 libcrypto。

您可以在线获取许多预构建的二进制文件,而无需在 apk 文件中翻找,例如 this repo 具有适用于包括 android 在内的一系列平台的 openssl libcrypto。

不知道您从哪里得到可以从 any apk 文件中获取库的想法,显然,它必须是来自应用程序的包,该应用程序包含这些库以进行动态链接。

最后但同样重要的是,如果您仍打算获得预编译的二进制文件,请记住它们必须使用与您的编译器兼容的版本构建。这就是为什么最好自己构建库,使用与应用程序相同的工具链。还有从未知来源获得“坏”库的危险,它们可能已过时或被篡改。

【讨论】:

  • repo 中用于构建 libcrypto 的文件似乎适用于 openSSL 1.0.2j。我需要这个确切的版本,对吗?因为ubuntu已经内置了v1.1.1,我要降级了。
  • 除非有一些损坏或以前不可用的功能,否则使用不同的版本不是问题。只要你需要的东西在两个版本中都可用,你就很好。请注意,repo 不仅包含构建脚本,还包含实际的库。它们是静态库。
  • 会尝试先生,我将首先在 vm 上重新安装 ubuntu 以重新开始。看来我弄乱了一些文件
  • 对不起,先生,我花了这么长时间才回复您,./Configure 是原因和错误说bash ./Configure: no such file or directory. I have check if the path exist it would seems sir that missed a few letters, may ask again what file is BR`?
  • 你只要选择你要使用的工具链,BR是一个变量,它指的是工具链的路径。 Configure 位于您提取源代码的文件夹中。
猜你喜欢
  • 1970-01-01
  • 2020-05-03
  • 2013-08-10
  • 2018-11-11
  • 2016-12-01
  • 2011-05-01
  • 2013-12-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多