【问题标题】:Android load modules dynamicallyAndroid 动态加载模块
【发布时间】:2014-11-03 10:51:32
【问题描述】:

我想编写一个可以用模块(android 库)扩展的 android 应用程序。模块应在运行时加载。因此,它们将从 url 下载并存储在目录中。 模块是 aar 文件。

有没有办法在运行时动态加载 aar 文件?

我知道可以使用 URLClassLoader 加载包含的 classes.jar。但是我无法加载布局、字符串、...资源。嗯

有人知道如何解决这个问题吗?

编辑:

我找到了一些相关的话题:

由于第一个链接的答案,它似乎不起作用。我希望我的这种想法是错误的。

【问题讨论】:

  • 看mozilla firefox for android,可以动态加载原生插件。
  • 您是否曾经成功地动态加载 aar 文件?似乎只能动态加载 jar 文件(因为它们没有资源)。
  • 不,不幸的是我没有找到动态加载 aar 文件的方法。我没有成功。如果你找到方法,我很想知道:)
  • 查看DashClock 了解如何使应用易于扩展的示例。
  • 嗨!您是否成功动态加载 aar 文件? :)

标签: android module aar


【解决方案1】:

我遇到了类似的问题。 我想在运行时添加插件而不强制用户重新安装应用程序。

我在“The Busy Coder's Guide to Android Development”一书中找到了一个很好的章节,叫做“插件模式”。我仍在阅读它,所以不能说它是否完全满足您的需求,但它包含大量可能对您的情况有用的信息。

这是该章的sample,可在图书网页上找到,因此您可以大致了解它所涵盖的内容

在本章中,“插件模型”是指一个应用程序(插件“主机”)正在被其他应用程序(插件 “插件”)主要用于该工作。

当然,应用可以通过多种方式协同工作 没有一个是另一个插件。用户的 Web 浏览器不是 当您调用 startActivity() 来查看网页时,您的应用程序的插件, 例如。

相比之下,Locale 应用程序可以通过插件进行扩展,编写 或者凌晨两点四十四分(Locale 的作者)或者第三 派对。这些插件对用户没有真正的价值,除了 他们如何改进 Locale 本身可以做的事情。这种结构, 因此,有资格作为插件模型。

特别是,本章将重点介绍两种一般情况 想要一个插件模型,尽管其他模型肯定存在:

您希望允许第三方扩展您应用的功能, 凌晨两点四十四分想要使用语言环境,或者你想减少 通过委派一些权限来获得核心应用程序中的权限数量 插件的权限,因此用户可以“选择”这些权限

希望对你有所帮助。

【讨论】:

    【解决方案2】:

    有一个 gradle 插件可以帮助将 aar 解耦为资源和 dexes。 Check this out 当您使用注入依赖项构建项目时,此插件提取 aar 并将资源与您的项目资源合并,然后合并清单,然后收集所有 jars(在每个 aar 和仅 jar 依赖项内)并创建一个 dex 文件,您可以上传到任何服务器并在运行时下载该 dex 并加载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-05
      • 2010-10-20
      • 2010-10-31
      • 1970-01-01
      • 2021-04-03
      相关资源
      最近更新 更多