【问题标题】:Apache Felix - Storing bundles in the assests directory of android applicationApache Felix - 在 android 应用程序的 assests 目录中存储包
【发布时间】:2013-08-26 16:43:00
【问题描述】:

我正在将 Apache Felix 嵌入到一个 Android 应用程序中。现在,我使用下面的代码来安装一个包:

imageBundle = bundleContext1.installBundle("file:sdcard/Download/AndroidImageViewer_1.0.0.201308221559.jar");

这可以正常工作,但它需要将捆绑包存储在 android 设备的 sdcard 中。然而,我不喜欢那样。我希望将捆绑包存储在 android 项目内的目录中。例如,在 assests 文件夹内。有没有办法做到这一点?

我试过这个:

imageBundle = bundleContext1.installBundle("file:assets/bundles/AndroidImageViewer_1.0.0.201308221559.jar");

正如预期的那样,它没有用。

【问题讨论】:

    标签: android bundle assets apache-felix osgi-bundle


    【解决方案1】:

    网址错误。正确的 URL 类似于

    file:///android_asset/AndroidImageViewer_1.0.0.201308221559.jar
    

    正如here所指出的那样。

    【讨论】:

    • 我按照你说的做了,但是没用。我得到了这个:08-23 19:14:02.159: W/System.err(6963): Caused by: java.io.FileNotFoundException: /android_asset/bundles/AndroidVideoPlayer_1.0.0.201308231205.jar(没有这样的文件或目录)
    • 您的文件位于资产子文件夹 bundles 中。在这种情况下正确的路径是 file:///android_asset/bundles/AndroidVideoPlayer_1.0.0.201308231205.jar
    • 我认为这并不总是有效。在您提供的链接中,一个答案是:“适用于 WebView,但似乎在 URL.openStream() 上失败。因此您需要区分 file:// 协议并按照建议通过 AssetManager 处理它们。”
    • 那么,我能建议的最好办法就是以特定于 Android 的方式调整 Felix 源代码。它是开源的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    • 2018-01-05
    • 1970-01-01
    • 2011-03-11
    • 2019-01-28
    • 2014-01-08
    • 1970-01-01
    相关资源
    最近更新 更多