Android动态加载模块

时间:2014-11-03 10:51:32

标签: android module aar

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

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

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

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

编辑:

我找到了一些相关主题:

由于第一个链接的回答,它似乎无法正常工作。我希望我的想法不对。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

我发现了一个非常好的章节,叫做#34; Plugin Patterns" on" The Busy Coder's Guide to Android Development"书。我仍在阅读它,所以如果它能够完全涵盖您的需求,它会包含大量可能对您的案例有用的信息。

以下是本章的sample,可在书籍网页上找到,因此您可以概览其涵盖的内容

  

就本章而言,“插件模型”是指由其他应用程序扩展的应用程序(插件“主机”)(   “插件”)主要致力于这项工作。

     

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

     

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

     

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

     

您希望允许第三方扩展您应用的功能,   就像早上四点四十四分钟想要Locale一样,或者你想减少   通过委派一些权限来核心应用程序中的权限数量   插件的权限,因此用户可以“选择”这些权限

我希望有所帮助。