gpt4 book ai didi

android - 基于一个代码库/项目创建演示版和完整版应用程序

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:50:34 26 4
gpt4 key购买 nike

我在一个项目中使用 Eclipse 开发了一个 Android 应用程序 - 它是结构化的(来自 iPhone)所以一个常量定义它是演示版还是完整版。

现在我遇到了一个问题,每次我想创建演示版本时,我都需要更改常量,但还需要使用不同的包名称制作项目的副本。

显然需要将原始完整版本中更改的代码复制到演示中,否则我每次提交应用时都必须重新创建演示应用。

我看到三种可能的方法:

1.虽然我研究了图书馆项目,但我仍然不清楚这在这种情况下如何真正提供一个好的解决方案。

例如,如果我有带有 Activity 结构的完整版本:

A1
A2
A3

使用实用类 U1、U2

当然,U1 和 U2 可以在一个库项目中并从两个项目中引用 - 但是需要复制 Activity 、strings.xml、图形、布局(或者有其他我看不到的方法吗?)这似乎不是一个好的前进方式,不幸的是,在提出这种方法时,还没有在关于这个主题的类似问题中得到解释。

2。另一种方法是根据不同的build设置创建不同的包名称(类似于 iPhone),但是,这在 Eclipse 中似乎是不可能的,而不是使用一些外部脚本(老实说,我宁愿避免,因为它看起来相当容易出错)同时还必须在 Eclipse 之外调用编译

3。可能最直接的方法(目前也是最简单的方法)是手动复制项目,更改一个常量,重命名包并在我每次提交时编译/导出。然而,这似乎相当“基本”并且看起来肯定不专业(与 iPhone/xCode build设置/目标解决方案相比)

什么是最好的方法(需要最少的更改并且仍然稳定且易于使用)?

非常感谢!

编辑

对于尝试过 tim 的解决方案的每个人 - 它工作正常,但是我遇到了自定义属性的问题。

检查这个:How to solve Android Libraries custom attributes and package name remapping during build?它将解决图书馆的问题

最佳答案

我目前在 eclipse 中做这个,并不难。

  1. 将现有源代码转换为库项目。

  2. 创建两个新项目,免费和付费。

  3. 在免费和付费项目中包含图书馆项目。

在免费/付费项目中不必有单个 Activity 或资源。您所需要的只是每个引用您图书馆 Activity 的 list 。我的免费和完整项目目前没有任何类型的单个 java、资源或布局文件,它只是一个引用库中 Activity 的 list 。

我对这两个项目使用完全相同的代码,并通过以下方式区分它们:

if(getApplicationContext().getPackageName().equals("full version package name")) {
//do full stuff
} else {
//do free stuff
}

我遇到的一些陷阱,特别是如果您已经在市场上发布了您的应用:

  • 如果您更改任何 Activity 的全名/路径,它将从您的主屏幕上消失。因此,如果您的库的包名称与现有版本不同,您将丢失所有主屏幕图标。它们可以由用户替换,但这并不理想。
  • 与 appwidgets 类似,如果您更改它们的接收者名称,它们将在升级时消失。
  • 您在任何情况下都不得更改已发布应用程序的包名称。

如果您已经发布了免费版和专业版,则有点不幸,因为 Activity 路径需要更改为公共(public)库路径,并且您无法重命名已发布的包以匹配库路径。所以有些人将不得不失去他们现有的图标。

在我的例子中,我在拆分它们之前只发布了一个免费版本,并且我能够使用与免费版本相同的包名来命名库。我怀疑是否允许您包含一个与包装程序包具有相同包名的库,但显然这样做是可能的(对我来说工作正常)。

所以在我的例子中,我有三个项目:

  • 核心库:包名:com.myname.myapp
  • 免费版:包名:com.myname.myapp
  • 专业版:包名:com.myname.myapp.Pro

免费版和完整版 list 添加名为 com.myname.myapp.ActivityAcom.myname.myapp.ActivityB 的 Activity ,这些 Activity 仅存在于图书馆项目。

关于android - 基于一个代码库/项目创建演示版和完整版应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12963369/

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