android - 在 android 应用程序中打包文件(但不在 res 或 assets 中)

标签 android ssl https io bouncycastle

好吧,我被扔进了战壕,想以尽可能干净、体面的方式脱身。

目前我有 2 个 Android 项目,我需要在一个项目中打包一个文件并让另一个项目成功读取它。这可能令人困惑,所以让我解释一下。

我有 2 个 Android 项目。一个名为 Engine 的 android Library 项目和应用程序本身。

引擎处理网络通信和许多其他后台任务,这些任务 headless 地运行并且不与 UI 交互。引擎可以访问主应用程序的上下文,但不能访问其他内容。在我开发这个引擎的过程中,我遇到了一些有趣的事情。 https(别跑了)及其在android应用中出现的问题。有很多博客文章介绍 Android 应用程序如何极其不安全并且极易受到 MITM 攻击。在这个引擎中,这是一个我不能忽视的问题,因为它是一个非常真实的威胁。

有关这方面的更多阅读,我强烈推荐 Nikolay Elenkov 的 blog正如他解释了在 Android 上实现安全性的好方法一样!

我离题了,因为这个问题已经解决了。我的解决方案是使用存储在 .bks 文件中的自定义 keystore 。同样,您无需担心它是如何创建的或将如何创建。真正的问题是,当这个文件打包在 JAR 中时,我该如何读取它。

对于最终版本,引擎将打包为 jar 并包含在应用程序中。 将引擎打包到 jar 中的注意事项是 res 文件夹中的任何内容都不会被编译并且无法读取。根据定义,无论项目是 jar 还是库项目,库项目中的任何 Assets 都将不可访问。

所以回顾一下,我们有 2 个项目。一个打包的 Jar Android 库,其中包含我们的 BKS 文件和一个需要读取它的应用程序。

如果 BKS 文件位于 assets/或 res/文件夹中,则无法恢复。

有人知道如何访问此文件吗?

可能的解决方案:

  • 将文件存放在lib目录下并读取?

  • 将 BKS 存储在远程服务器上并在启动时加载它?

  • 寻找另一种方式来处理 ssl 证书(不,我不会只接受任何和所有证书!)

  • 有一个 super secret 的方法来读取另一个文件夹中的 android 库项目中的文件,这是你如何做的......

最佳答案

So to recap we have 2 applications

不,你不知道。

One Packaged Jar Android library which contains our BKS file and one application which needs to read it.

这是一个应用程序,而不是两个。根据您的描述,您有两个项目,但是一个应用程序

Has anyone any ideas how to access this file?

将文件放在应用程序的项目中,是assets/ 还是res/raw/ 由您决定。如果从源代码控制的角度来看,您希望文件驻留在库项目的存储库中,请在应用程序项目中使用符号链接(symbolic link)或硬链接(hard link),或使用提交 Hook 或其他方式在应用程序项目的位置制作副本。

或者,自己将文件打包到库JAR中,use getResourceAtStream() to read it in .我没有尝试过这个,但大概是可行的。

关于android - 在 android 应用程序中打包文件(但不在 res 或 assets 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13035056/

相关文章:

android - 如何让用户在应用程序启动时选择启动哪个Activity?

java - 如何将文件添加到 android 中的 java 应用程序以便获取它的路径?

Azure App Service 随机给出 SSL 连接错误

firefox - YUI uploader + SSL + Firefox

java - 解决 javax.net.ssl.SSLHandshakeException : sun. security.validator.ValidatorException : PKIX path building failed Error?

ssl - 如何为 HTTPS 配置 Spark Standalone 的 Web UI?

android - 动画仅在第一次单击按钮时有效

javascript - 在 Phonegap 中打开 PDF (Android)

php - 对 Cloudflare 网站的请求

java - 如何向 Client Hello HTTPS (okHTTP) 添加扩展