【问题标题】:Android App versions (Free and Paid) - tell Library Project classes if app is Free or PaidAndroid 应用程序版本(免费和付费) - 告诉图书馆项目类应用程序是免费还是付费
【发布时间】:2011-07-25 21:37:58
【问题描述】:

我有一个包含我所有代码的 Android 应用项目。我已经将此“应用程序”作为定义 here at android.developer.com. 的库项目。

因此,我制作了两个使用这个库项目的新 Android 项目。每个新项目的新包名称为:

com.myapps.freeapp
com.myapps.paidapp

如您所见,我正在尝试发布该应用的免费和付费版本。

告诉库项目安装的应用是免费版还是付费版的最佳方式是什么?

【问题讨论】:

    标签: android android-version


    【解决方案1】:

    这是来自我的blog post,它描述了如何使用库项目构建免费/付费版本。

    通常,您将创建三个项目;免费项目、付费项目和图书馆项目。

    然后您将在您的库项目中创建一个 Build.java 文件,如下所示:

    public class Build {
        public final static int FREE = 1;
        public final static int PAID = 2;
        public static int getBuild(Context context){
            return context.getResources().getInteger(R.integer.build);
        }
    }
    

    现在,您将在每个项目中创建一个 build.xml 资源:

    [库]/resources/values/build.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <resources>
        <integer name="build">0</integer>
    </resources>
    

    [免费]/resources/values/build.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <resources>
        <integer name="build">1</integer>
    </resources>
    

    [付费]/resources/values/build.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <resources>
        <integer name="build">2</integer>
    </resources>
    

    然后您将能够在运行时检查版本:

    if (Build.getBuild(context) == Build.FREE){
       // Do the free stuff
    } else {
       // Do the paid stuff
    }
    

    blog post 详细说明了在 Linux 命令行中从头开始创建项目所需的确切步骤。

    【讨论】:

    • 我最终实现了一个这样的方法。
    • 这似乎不是一个好主意。我相信root手机可以更改资源值,将1更改为2非常简单。
    【解决方案2】:

    “付费”和“免费”信息取决于每个应用程序——图书馆不知道这些信息。

    如果您有一些依赖于这些应用程序的特定代码(例如,检查许可证的代码),它应该在特定应用程序中,而不是在常见的部分中两者都有。

    【讨论】:

    • 我在想,由于新项目有不同的包名,我可以将这些包名传递给库项目,并根据新项目的包名创建不同的逻辑路径(com.myapps .freeapp 和 com.myapps.paidapp)....这不可能吗?
    • 我想这是可能的,但它感觉不对:你的库将不再是generic。一个可能更好的解决方案是库中的一个抽象类,在每个项目中扩展一个类;然后,从每个项目中,将相应的类实例化为库中的一个对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 2014-06-19
    • 1970-01-01
    相关资源
    最近更新 更多