我想写一个可以用模块扩展的android应用程序(android库)。模块应在运行时加载。因此,它们将从URL下载并存储在目录中。 这些模块是aar文件。
有没有办法在运行时动态加载aar文件?
我知道可以使用URLClassLoader加载包含的classes.jar。但是,我无法加载布局,字符串,......资源。 HM
有谁知道如何解决这个问题?
编辑:
我找到了一些相关主题:
由于第一个链接的回答,它似乎无法正常工作。我希望我的想法不对。
答案 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一样,或者你想减少 通过委派一些权限来核心应用程序中的权限数量 插件的权限,因此用户可以“选择”这些权限
我希望有所帮助。