好的,所以我被扔进了战壕,想以最干净最体面的方式离开。
目前,我有 2 个 Android 项目,并且需要将文件打包到一个项目中并让它被另一个项目成功读取。这可能会令人困惑,所以让我解释一下。
我有 2 个 Android 项目。一个名为 Engine 的 android 库项目和应用程序本身。
引擎处理网络通信和许多其他后台任务,这些任务无头操作且不与 UI 交互。引擎可以访问主应用程序的上下文,但没有其他权限。在我开发这个引擎的过程中,我遇到了一些有趣的事情。Https(不要逃跑)以及它在android应用程序中出现的问题。有很多关于 android 应用程序如何非常不安全并且极易受到 MITM 攻击的博客文章。这是我在这个引擎中不能忽视的一个问题,因为它是一个非常现实的威胁。
有关此内容的更多信息,我强烈推荐 Nikolay Elenkov 的博客,因为他解释了在 Android 上进行安全保护的好方法!
我离题了,因为这个问题已经解决了。我的解决方案是使用存储在 .bks 文件中的自定义密钥库。同样,您无需担心它是如何创建的或将如何创建的。真正的麻烦是,当它被打包在一个 JAR 中时,我如何读取这个文件。
对于最终版本,引擎将被打包为 jar 并包含在应用程序中。将引擎打包到 jar 中的警告是 res 文件夹中的任何内容都不会被编译并且无法读取。根据定义,无论项目是 jar 还是库项目,库项目中的任何资产都将无法访问。
回顾一下,我们有 2 个项目。一个 Packaged Jar Android 库,其中包含我们的 BKS 文件和一个需要读取它的应用程序。
如果 BKS 文件位于 assets/ 或 res/ 文件夹中,则无法恢复该文件。
有没有人知道如何访问这个文件?
潜在的解决方案:
将文件存储在lib目录中并读取它?
将 BKS 存储在远程服务器上并在启动期间加载它?
找到另一种处理 ssl 证书的方法(不,我不会只接受任何和所有证书!)
有一种超级秘密的方法可以读取另一个文件夹中的android库项目中的文件,这就是你的做法......