应用程序模块也可以用作库模块吗?
Posted
技术标签:
【中文标题】应用程序模块也可以用作库模块吗?【英文标题】:Can an application module also be used as a library module? 【发布时间】:2021-01-01 17:02:54 【问题描述】:我有一个简单的计算器应用程序。它本身就是一个完整的应用程序。
我还有一个更高级的计算器应用程序,它基于第一个应用程序,但具有更多功能。它的主 Activity 扩展了第一个应用程序的主 Activity。高级应用从简单应用中引用了相当多的资源和方法。
在 android Studio 下构建高级应用是一场噩梦。我一直在谷歌搜索并在 build.gradle 文件中盲目尝试,但没有取得太大进展。起初,问题是dependent features configured but no package id was set
(无论如何,Google 没有找到任何文档。)
我通过调整 build.gradle 文件解决了这个问题,现在我得到了Manifest merger failed with multiple errors, see logs
,但我找不到相关的日志。看起来构建失败了,因为 Android Studio 试图合并来自简单应用和高级应用的 AndroidManifest.xml 文件,但我只想使用来自高级应用的清单。
这一切都非常令人沮丧,因为我在 Eclipse 下完成了这一切,但现在我必须转移到 Android Studio。
我想我的第一个问题是:我怎样才能告诉 Android Studio 只使用当前项目中的 Android Manifest 而不是尝试从其他项目中合并。
一般来说:一个应用程序项目可以作为另一个项目的库,如果可以,如何做?有例子吗?
第三个问题:在哪里可以找到关于 build.gradle 的好文档?
如果人们需要查看我当前的 build.gradle 文件和 AndroidManifest.xml 文件,我可以附上它们,但我真的希望能学到足够的知识来帮助自己。
【问题讨论】:
看起来模块不能既是应用程序又是库。我确实喜欢yuanweiwork 的解决方案,即创建一个可以编辑的 gradle 文件以在库和应用程序之间来回切换模块;这是我能看到的最接近解决方案的方法。至于我,我通过创建一个库模块并将大部分常用代码移入其中来修复它,现在简单和高级计算器都使用该库。如果有人想出答案,我会保留这个问题,但我怀疑它无法完成。 【参考方案1】:先确认问题: 在库/应用程序中切换相同的模型 Application ID androidmanifest 冲突问题
如果是这个问题,官方文档可以看频道包装
https://developer.android.google.cn/studio/build
我给你写了一个小演示 https://github.com/yuanweiwork/lytools
希望对你有帮助
【讨论】:
哇,你为我写了一个完整的应用程序?谈论加倍努力。看起来您在一个模块中有两个应用程序。我不知道这是可能的。让我玩。 Work in progress config.gradle 改变isapplication的值允许app2在Library和application之间切换以上是关于应用程序模块也可以用作库模块吗?的主要内容,如果未能解决你的问题,请参考以下文章