从 Android 应用程序中删除功能的安全方法
Safety way to remove functionality from Android app
我有 2 个版本的应用程序 - 免费版和专业版(口味)。现在我为 Pro 版本添加了一些额外的功能。使其功能不适用于免费版本的安全和正确方法是什么?例如,如果我只是删除 "Free" 布局上的一些按钮 - 是否足够,或者我必须覆盖所有 java 代码以使其不包含在免费版本中?如果有人 "hack" 免费应用程序和 return 从专业版布局,有可能吗?
搜索没有给我结果。
谢谢
更新: 需要说明的是,这个问题与产品口味和 gradle 系统无关——我知道有关它的基本信息。这个问题是否可以通过简单地在编译的 apk 中替换一些变量来破解应用程序,例如布尔变量或字符串(并使其成为 "Pro")。例如,在 "true" 上的某些地方替换 "false" 并获得具有完整功能的专业版。我对此一无所知,但出于某些原因我认为这是可能的(因为它是 java,我认为)。对不起我的英语。
我想你使用 Android Studio 进行开发?然后,您可以配置等级构建文件来构建两种不同风格的应用程序。查看 documentation 以了解如何完成此操作的详细说明。
两个选项:
如果你有一个服务器组件,你可以有一个注册功能,让服务器告诉应用程序是否允许用户使用专业版。
推荐的方式是In App Purchase。 Goole为此提供了 api s,您可以借助 Google In App Purchase SDK查看详细信息。在此基础上,您可以启用专业版功能。
https://developer.android.com/google/play/billing/index.html
您应该考虑使用常量或静态方法实现 class,这会在每个风味源集中区分您的免费版或专业版的功能。
也许一个 BuildConfig 字段就足够了。您可以在 gradle 文件中生成它:
productFlavors {
pro {
buildConfigField "boolean", "PRO", "true"
}
并通过
访问它
BuildConfig.PRO
另一种方法是访问风味:
BuildConfig.FLAVOR.equals("pro")
我会在 Android Studio 上将这两种风格作为单独的模块。
在您的情况下,例如您有一个 Activity(及其布局)MyActivity.java 有专业版和免费版。专业版有树形按钮,免费版只有两个。
因此,您可以将 MyActivity.java 包含在主模块中,但您将有两个布局文件,一个在 pro 模块中(此布局将包含三个按钮),另一个在内部免费模块(另一方面,此模块仅包含两个按钮)。
在 MyActivity.java 代码中,您可以区分您使用的是免费版还是专业版,并满足所有条件。
另一种选择是有两个 MyActivity.java 类(每个风味模块一个)和相应的实现。
我有 2 个版本的应用程序 - 免费版和专业版(口味)。现在我为 Pro 版本添加了一些额外的功能。使其功能不适用于免费版本的安全和正确方法是什么?例如,如果我只是删除 "Free" 布局上的一些按钮 - 是否足够,或者我必须覆盖所有 java 代码以使其不包含在免费版本中?如果有人 "hack" 免费应用程序和 return 从专业版布局,有可能吗?
搜索没有给我结果。
谢谢
更新: 需要说明的是,这个问题与产品口味和 gradle 系统无关——我知道有关它的基本信息。这个问题是否可以通过简单地在编译的 apk 中替换一些变量来破解应用程序,例如布尔变量或字符串(并使其成为 "Pro")。例如,在 "true" 上的某些地方替换 "false" 并获得具有完整功能的专业版。我对此一无所知,但出于某些原因我认为这是可能的(因为它是 java,我认为)。对不起我的英语。
我想你使用 Android Studio 进行开发?然后,您可以配置等级构建文件来构建两种不同风格的应用程序。查看 documentation 以了解如何完成此操作的详细说明。
两个选项:
如果你有一个服务器组件,你可以有一个注册功能,让服务器告诉应用程序是否允许用户使用专业版。
推荐的方式是In App Purchase。 Goole为此提供了 api s,您可以借助 Google In App Purchase SDK查看详细信息。在此基础上,您可以启用专业版功能。
https://developer.android.com/google/play/billing/index.html
您应该考虑使用常量或静态方法实现 class,这会在每个风味源集中区分您的免费版或专业版的功能。
也许一个 BuildConfig 字段就足够了。您可以在 gradle 文件中生成它:
productFlavors {
pro {
buildConfigField "boolean", "PRO", "true"
}
并通过
访问它BuildConfig.PRO
另一种方法是访问风味:
BuildConfig.FLAVOR.equals("pro")
我会在 Android Studio 上将这两种风格作为单独的模块。
在您的情况下,例如您有一个 Activity(及其布局)MyActivity.java 有专业版和免费版。专业版有树形按钮,免费版只有两个。
因此,您可以将 MyActivity.java 包含在主模块中,但您将有两个布局文件,一个在 pro 模块中(此布局将包含三个按钮),另一个在内部免费模块(另一方面,此模块仅包含两个按钮)。
在 MyActivity.java 代码中,您可以区分您使用的是免费版还是专业版,并满足所有条件。
另一种选择是有两个 MyActivity.java 类(每个风味模块一个)和相应的实现。