标签: android-lvl

如何为Android应用实施Google Play许可?

我看到了Android-Developer许可库的说明,但概述似乎省略了该过程中的几个关键步骤,并且未能完全解释如何使某些工作正常.

有人可以提供一组明确的操作,这些操作可以在Android应用程序上设置许可库,以便在允许使用之前检查以确保用户已在Google Play中为应用付费吗?

java android licensing android-lvl

41
推荐指数
1
解决办法
2万
查看次数

幸运的补丁,我该怎样保护呢?

我知道这个主题已多次打开,我学到了很多,但我偶然发现了一个我真正需要建议的问题.

我正在使用带有混淆的LVL.我更改了默认的LVL ALOT,以便防LVL不会破坏它.但是,Lucky Patcher只需点击一下即可打破它!我试图看到新破坏的APK.是的,它只是简称为"允许方法".

我的问题是,如果有人可以推荐一种方法来阻止Lucky Patcher破坏它吗?我知道我不能防弹,但我希望它至少对于一键式软件来说不那么容易.

android android-lvl

26
推荐指数
2
解决办法
3万
查看次数

Android"Not_Market_Managed"错误

努力尝试市场许可服务,我遇到了样本应用程序的一些问题.

当我第一次运行该示例时,我收到一条错误消息,指出该应用程序未获得许可.我将我的帐户链接到模拟器以获取测试响应,现在我收到错误消息"应用程序错误:NOT_MARKET_MANAGED"

这是否意味着我必须将应用程序上传到市场才能测试它是否有效?

android android-lvl google-play-services

23
推荐指数
3
解决办法
7251
查看次数

LicenseChecker checkAccess泄漏ServiceConnection

每次按下Back我的应用程序中的按钮,我都会在LogCat中收到此异常:

Activity已泄露最初绑定的ServiceConnection com.android.vending.licensing.LicenseChecker@471cc039

造成这种泄漏的代码onCreate()是:

mLicenseCheckerCallback = new MyLicenseCheckerCallback();
mChecker.checkAccess(mLicenseCheckerCallback);
Run Code Online (Sandbox Code Playgroud)

我如何摆脱这种泄漏?

我尝试不将MyLicenseCheckerCallback分配给成员,也许在活动开始时onPause()对回调的引用负责泄漏:

mChecker.checkAccess(new MyLicenseCheckerCallback());
Run Code Online (Sandbox Code Playgroud)

但这并没有摆脱泄漏.

更新:感谢@ zapl在下面的评论,我查看了Google的LicenseChecker.java:

/** Unbinds service if necessary and removes reference to it. */
private void cleanupService() {
    if (mService != null) {
        try {
            mContext.unbindService(this);
        } catch (IllegalArgumentException e) {
            // Somehow we've already been unbound. This is a non-fatal error.
            Log.e(TAG, "Unable to unbind from licensing service (already unbound)");
        }
        mService = null;
    }
}
Run Code Online (Sandbox Code Playgroud)

起初我以为我可能会忽略称它,但我仔细检查了,我 …

android serviceconnection android-lvl google-play

19
推荐指数
2
解决办法
3213
查看次数

Android app许可新旧 - 疑惑

就在几周前,谷歌改变了Android LVL API(许可证验证库).

在旧的LVL中,许可证检查基于使用基于每个帐户基础生成的公钥/私钥的许可证验证.新的假设每个应用程序库使用公钥/私钥.

我有使用旧LVL的应用程序,看起来它的工作原理(看起来像,但实际上我不知道).应用程序嵌入在每个帐户基础上生成的公钥.

现在,当我决定升级我的应用程序时,我应该怎么做?嵌入公钥用于申请还是仍然使用公钥作为帐户?

我没有在Google的Android开发者网站上找到任何线索......

android public-key-encryption android-lvl

19
推荐指数
1
解决办法
909
查看次数

Android许可样本返回代码3.这是什么意思?

我试过许可样品.它说"应用程序错误= 3".我在developer.android.com上找到了许可响应代码表,但是3号对应于上面的列表?那段代码是什么意思?

android android-lvl

17
推荐指数
1
解决办法
9249
查看次数

如何从付费Android应用程序迁移到通过应用内结算支付的应用程序?

我目前在Android市场上有两个版本的应用程序,一个付费版本和一个免费版本.但我希望将应用内结算功能集成到我的免费应用程序中,并在订阅基础上向客户收费,价格低于付费应用的当前价格.

但是我应该如何为现有客户处理这个问题呢?让他们再次支付使用付费功能似乎是不公平的,而他们是我的应用程序的早期采用者.理想情况下,我实现的东西将使现有用户可以访问我的免费应用程序中的解锁功能.

有关如何实现这一目标的任何想法?一个好的方法概述是足够的,我不介意做一些关于如何实际实现这种方法的研究.

android android-lvl in-app-billing

16
推荐指数
1
解决办法
1358
查看次数

Android:app许可,版权保护

我有一个apk文件,这是非免费的

我的问题如下:

1,如果市场上的Copy Protection设置为"true",用户是否可以从设备复制我的apk文件?(rooted/non rooted)从设备复制apk

2,如果可以:实现真正的复制保护的最佳方法是什么?

谢谢,莱斯利

android copy-protection android-lvl

15
推荐指数
1
解决办法
9878
查看次数

这个Google LVL政策实施是否合理安全?

ServerManagedPolicyGoogle在其许可证验证库中提供的默认值依赖于服务器响应来确定许可证重新验证间隔.这导致需要每隔几天重新确认一次,永久性.这不仅对用户造成麻烦,对于长时间没有连接的用户来说,这可能是一个严重的问题.(我们刚刚接到一位用户的询问,该用户预计几周内没有互联网连接,这就是推动这个问题的原因.)

总之,我正在寻找一种能够完成两件事的算法:

  1. 与之相比,大幅降低了连接要求ServerManagedPolicy;
  2. 提供相同级别的反盗版保护.

在回答这个问题时,建议的策略算法是忽略来自Google服务器的响应中提供的时间,而是使用大约一个月的许可有效期,每隔几天尝试一次许可检查(如果延长有效期,收到许可的答复).

虽然这种方法部分地解决了第一个目标,但它仍然要求用户在使用应用程序时每月连接一次,因此它不适用于(至少一个)我们的用户.

以下算法完成了第一个目标,但我不知道第二个目标.任何评论指出该算法的弱点,或建议另一种方法,将是受欢迎的.

  1. 首次运行时,请执行许可检查并在提供完整功能之前坚持许可响应.收到后,设置相对较短的有效期(但比Google Play提供的退款期限长,目前为15分钟).同时注册一个超过几天的宽限期.
  2. 应用程序将在许可证到期后再次开始检查.如果连接失败(飞行模式等),它将一直有效,直到宽限期到期.
  3. 在宽限期到期后,在允许正常的应用程序运行之前,坚持第二个许可响应.
  4. 收到第二个LICENSED响应后,永久启用应用程序的所有功能,再也不用费心检查.
  5. 如果在任何时候收到UNLICENSED响应,则永久禁用完整功能.(当然,用户可以通过删除所有应用数据恢复到第1步.)

附加要点:

  • 建议放弃第一次许可检查,并等待返回期限到期,然后再进行许可检查.坚持第一个LICENSED响应的目的是防止利用漏洞,在许可证检查失败后,用户只需停止应用程序进程,清除应用程序数据,然后重新启动应用程序.(该应用程序即使一次只能使用15分钟也能提供价值.)
  • 坚持第二个LICENSED响应的目的是绕过buy-run-backup-return-restore漏洞.
  • 我不是在问回叫许可证是否是一个好主意(这就是谷歌提供的代替他们弃用的复制保护机制).我也很清楚,没有反盗版保护是万无一失的,谷歌的整个许可机制都可以被规避(在这种情况下,所有关于策略算法设计的问题都是无关紧要的).这个问题的主要问题是与其他政策(如ServerManagedPolicy)相比,上述算法的相对风险(对我们而言)和对用户的好处.

algorithm android android-lvl access-rights google-play

15
推荐指数
1
解决办法
1430
查看次数

未知类ILicensingService在混淆Android项目时注意到

我正在尝试使用Ant和ProGuard构建Android版本.我在project.properties中取消注释了以下行,尽管所述文件中的注释指出你不应该修改它;):

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
Run Code Online (Sandbox Code Playgroud)

混淆时,我得到以下注释:

[proguard] Note: the configuration refers to the unknown class 'com.google.vending.licensing.ILicensingService'
[proguard] Note: the configuration refers to the unknown class 'com.android.vending.licensing.ILicensingService'
Run Code Online (Sandbox Code Playgroud)

我明白为什么会这样.这些行可以在默认的ProGuard配置文件中找到($ {sdk.dir} /tools/proguard/proguard-android.txt):

-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService
Run Code Online (Sandbox Code Playgroud)

我没有使用Google许可服务,因此这些课程确实未知.我找到了一个解决方案,通过更新proguard-project.txt来摆脱这些笔记:

-dontnote **ILicensingService
Run Code Online (Sandbox Code Playgroud)

我的问题:这是处理这个问题的正确方法吗?在我看来,无论如何都不应该保留这些类,因为对于android项目来说,lib不是必需的.我能想到实现这一目标的唯一方法是将默认配置文件复制到我的项目中,删除-keep行并完全忽略SDK中的默认配置文件.这似乎也不是正确的方法.或者我错过了什么?

ant android proguard android-lvl

15
推荐指数
1
解决办法
6372
查看次数