我看到了Android-Developer许可库的说明,但概述似乎省略了该过程中的几个关键步骤,并且未能完全解释如何使某些工作正常.
有人可以提供一组明确的操作,这些操作可以在Android应用程序上设置许可库,以便在允许使用之前检查以确保用户已在Google Play中为应用付费吗?
我知道这个主题已多次打开,我学到了很多,但我偶然发现了一个我真正需要建议的问题.
我正在使用带有混淆的LVL.我更改了默认的LVL ALOT,以便防LVL不会破坏它.但是,Lucky Patcher只需点击一下即可打破它!我试图看到新破坏的APK.是的,它只是简称为"允许方法".
我的问题是,如果有人可以推荐一种方法来阻止Lucky Patcher破坏它吗?我知道我不能防弹,但我希望它至少对于一键式软件来说不那么容易.
努力尝试市场许可服务,我遇到了样本应用程序的一些问题.
当我第一次运行该示例时,我收到一条错误消息,指出该应用程序未获得许可.我将我的帐户链接到模拟器以获取测试响应,现在我收到错误消息"应用程序错误:NOT_MARKET_MANAGED"
这是否意味着我必须将应用程序上传到市场才能测试它是否有效?
每次按下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 LVL API(许可证验证库).
在旧的LVL中,许可证检查基于使用基于每个帐户基础生成的公钥/私钥的许可证验证.新的假设每个应用程序库使用公钥/私钥.
我有使用旧LVL的应用程序,看起来它的工作原理(看起来像,但实际上我不知道).应用程序嵌入在每个帐户基础上生成的公钥.
现在,当我决定升级我的应用程序时,我应该怎么做?嵌入公钥用于申请还是仍然使用公钥作为帐户?
我没有在Google的Android开发者网站上找到任何线索......
我试过许可样品.它说"应用程序错误= 3".我在developer.android.com上找到了许可响应代码表,但是3号对应于上面的列表?那段代码是什么意思?
我目前在Android市场上有两个版本的应用程序,一个付费版本和一个免费版本.但我希望将应用内结算功能集成到我的免费应用程序中,并在订阅基础上向客户收费,价格低于付费应用的当前价格.
但是我应该如何为现有客户处理这个问题呢?让他们再次支付使用付费功能似乎是不公平的,而他们是我的应用程序的早期采用者.理想情况下,我实现的东西将使现有用户可以访问我的免费应用程序中的解锁功能.
有关如何实现这一目标的任何想法?一个好的方法概述是足够的,我不介意做一些关于如何实际实现这种方法的研究.
我有一个apk文件,这是非免费的
我的问题如下:
1,如果市场上的Copy Protection设置为"true",用户是否可以从设备复制我的apk文件?(rooted/non rooted)从设备复制apk
2,如果可以:实现真正的复制保护的最佳方法是什么?
谢谢,莱斯利
ServerManagedPolicy
Google在其许可证验证库中提供的默认值依赖于服务器响应来确定许可证重新验证间隔.这导致需要每隔几天重新确认一次,永久性.这不仅对用户造成麻烦,对于长时间没有连接的用户来说,这可能是一个严重的问题.(我们刚刚接到一位用户的询问,该用户预计几周内没有互联网连接,这就是推动这个问题的原因.)
总之,我正在寻找一种能够完成两件事的算法:
ServerManagedPolicy
;在回答这个问题时,建议的策略算法是忽略来自Google服务器的响应中提供的时间,而是使用大约一个月的许可有效期,每隔几天尝试一次许可检查(如果延长有效期,收到许可的答复).
虽然这种方法部分地解决了第一个目标,但它仍然要求用户在使用应用程序时每月连接一次,因此它不适用于(至少一个)我们的用户.
以下算法完成了第一个目标,但我不知道第二个目标.任何评论指出该算法的弱点,或建议另一种方法,将是受欢迎的.
附加要点:
ServerManagedPolicy
)相比,上述算法的相对风险(对我们而言)和对用户的好处.我正在尝试使用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中的默认配置文件.这似乎也不是正确的方法.或者我错过了什么?
android ×10
android-lvl ×10
google-play ×2
algorithm ×1
ant ×1
java ×1
licensing ×1
proguard ×1