gpt4 book ai didi

android - 转换库中的 Android 项目以复制几乎没有更改的应用程序

转载 作者:行者123 更新时间:2023-11-30 03:03:52 24 4
gpt4 key购买 nike

我有很多疑问,经过两天的搜索,我仍然没有找到适合我的问题的答案。

我有一个应用程序的项目已经在商店中,这个项目有很多 Activity 、 fragment 、服务、IntentServices、布局和资源(图像、字符串、整数、颜色、样式、原始文件、可绘制对象等。 .).

现在,我需要实现一个新的应用程序,它几乎是第一个应用程序的副本,我只需要更改背景、一些资源(但几乎 99% 保持不变),并且可能在一两个 fragment 中我'将需要更改一些代码(实现不同的逻辑语句)。

我决定并且我认为将所有项目转换为库项目是很自然的。

我做到了:

1º 创建一个名为 framework 的新项目并配置为库。将原始项目中的所有代码和资源(assets 文件夹除外)复制到此处。2º 在原始项目中,我只留下了 list 、proguard 文件。我更改 list 和混淆文件以引用新库的类。

我测试了该应用程序,看它是否仍在运行,一切正常。到目前为止,我只进行了分离。

现在,问题来了。我需要为库创建一个可重用的解决方案和标量,以允许我在不同的应用程序中使用它。

在我的原始项目中,我创建了一个 Application 类的子类,用于全局变量。

没有任何其他想法,我决定如下:1º 将我的 MyApplication 类转换为抽象类。此外,我创建了一个接口(interface) ApplicationInterface,其中包含一些方法,例如 isBackgroundOverlayed() 或 getBackgroundResource(),我在 fragment 中使用这些方法来更改背景或最初定义的任何其他逻辑。2º 在 App 的项目中,我创建了一个新的 Application 类,它扩展了抽象类 MyApplication 并实现了接口(interface) ApplicationInterface,它在 list 文件的 Application 标记中声明。

结论:这一切都有效,我能够拥有两个具有不同背景和其他图像(如 Logo )的应用程序项目,甚至可以更改一些代码逻辑。一个例子是当用户按下某个按钮时,在原始应用程序中,应用程序会显示一个对话框选择。在新应用中,当用户按下按钮时,它会执行一个 fragment (无需选择)。

我的顾虑:我认为这不是问题的最佳解决方案或最佳实践或好的“模式”。

你有什么想法吗?

提前致谢!

ps:抱歉,如果我没有正确使用这个论坛。我在寻找答案,但没有找到。

最佳答案

我认为你已经实现了你想要的,但这是一个漫长而耗时的过程。我想提的另一件事是您不应该为不同的应用程序更改库项目

如 Android 开发者指南所述:

库项目包含可共享的 Android 源代码和资源,您可以在 Android 项目中引用它们。当您有想要重用的公共(public)代码时,这很有用。

您可以从 here 阅读更多内容

另外你还必须弄清楚,哪个库在做什么,以防你忘记你做了什么更改

我建议您保留原始项目的单独副本,然后将其导入 Eclipse 中的新工作空间(通过将复制项目选中到当前工作空间,以便您拥有项目的新副本)并考虑更改其包获取新项目的名称

你可以在这个 link 上引用答案查看如何更改包名称`

关于android - 转换库中的 Android 项目以复制几乎没有更改的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22128553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com