1

我需要将扩展​​支持集成到我的应用程序中。到目前为止,我的应用程序中有示例 DownloaderActivity、Service 和 Receiver。

现在我设置了 XAPKFile

        return new XAPKFile[]{new XAPKFile(
            true,//is main?
            3,//Version
            4550105L)};//File size

文件大小是正确的,它不是“磁盘大小”,但我也试过了。

版本号始终等于我的 apk 包版本。

我将两者都作为 alhpa 版本上传到市场上以对其进行测试并使其他人无法访问。

测试账户是开发者账户。

现在的问题是,下载不会开始。我总是收到提示“下载失败,因为您可能没有购买此应用程序”。

我昨天在下载器服务中调试了很多应用程序,以找到实际问题。我在 LicenseValidator.java 验证方法中从服务器返回的响应代码始终为 NOT_LICENSED。

RSA 密钥是正确的。

为什么我的应用没有获得许可?

编辑:

我现在在另一个帐户上对其进行了测试,得到了不同的错误:

在此处输入图像描述

该帐户已作为测试帐户添加到开发者控制台的许可中

4

3 回答 3

1

我已经等了一天,现在它神奇地起作用了。谷歌似乎需要一些时间来取得进展。

编辑:

现在它再次停止工作,并出现错误“下载失败,因为找不到资源”,真有趣......

于 2014-01-14T18:27:55.387 回答
0

确保文件大小与上传到安卓控制台的扩展文件相同,

 return new XAPKFile[]{new XAPKFile(
        true,//is main?
        3,//Version
        99695373L)};//File size

在此处输入图像描述

我也有同样的问题,但问题来自这里

boolean expansionFilesDelivered() {
    for (XAPKFile xf : xAPKS) {
        String fileName = Helpers.getExpansionAPKFileName(this, xf.mIsMain, xf.mFileVersion);
        if (!Helpers.doesFileExist(this, fileName, xf.mFileSize, false))
            return false;
    }
    return true;
}

它返回false,所以即使文件被下载,应用程序也无法验证扩展文件,所以我通过添加来修复else

boolean expansionFilesDelivered() {
    for (XAPKFile xf : xAPKS) {
        String fileName = Helpers.getExpansionAPKFileName(this, xf.mIsMain, xf.mFileVersion);

        if (!Helpers.doesFileExist(this, fileName, xf.mFileSize, true)) {
            return false;
        }else{
            return true;
        }
    }
    return true;
}

并在帐户设置中,将许可测试响应设置为 LICENSED在此处输入图像描述

希望可以帮助你:)

于 2015-01-06T09:43:40.237 回答
0

当我使用 Android 5.0.1 时,我设置了 targetSdkVersion 19,然后我的问题就解决了。

<uses-sdk
    android:minSdkVersion="9" 
    android:targetSdkVersion="19" />

在此处输入图像描述

Wehn 我使用 Android 5.0.1 我设置了 targetSdkVersion 21 我有以下错误。

<uses-sdk
        android:minSdkVersion="9" 
        android:targetSdkVersion="21" />

下载失败,因为您可能没有购买此应用

像这样的 LogCat 错误:

12-28 15:06:34.521: E/AndroidRuntime(14153): FATAL EXCEPTION: main
12-28 15:06:34.521: E/AndroidRuntime(14153): Process: your_app_package_name, PID: 14153
12-28 15:06:34.521: E/AndroidRuntime(14153): java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.android.vending.licensing.ILicensingService }
12-28 15:06:34.521: E/AndroidRuntime(14153):    at android.app.ContextImpl.validateServiceIntent(ContextImpl.java:1674)
12-28 15:06:34.521: E/AndroidRuntime(14153):    at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1773)
12-28 15:06:34.521: E/AndroidRuntime(14153):    at android.app.ContextImpl.bindService(ContextImpl.java:1751)
12-28 15:06:34.521: E/AndroidRuntime(14153):    at android.content.ContextWrapper.bindService(ContextWrapper.java:538)
12-28 15:06:34.521: E/AndroidRuntime(14153):    at com.google.android.vending.licensing.LicenseChecker.checkAccess(LicenseChecker.java:150)
12-28 15:06:34.521: E/AndroidRuntime(14153):    at com.google.android.vending.expansion.downloader.impl.DownloaderService$LVLRunnable.run(DownloaderService.java:768)
12-28 15:06:34.521: E/AndroidRuntime(14153):    at android.os.Handler.handleCallback(Handler.java:739)
12-28 15:06:34.521: E/AndroidRuntime(14153):    at android.os.Handler.dispatchMessage(Handler.java:95)
12-28 15:06:34.521: E/AndroidRuntime(14153):    at android.os.Looper.loop(Looper.java:135)
12-28 15:06:34.521: E/AndroidRuntime(14153):    at android.app.ActivityThread.main(ActivityThread.java:5221)
12-28 15:06:34.521: E/AndroidRuntime(14153):    at java.lang.reflect.Method.invoke(Native Method)
12-28 15:06:34.521: E/AndroidRuntime(14153):    at java.lang.reflect.Method.invoke(Method.java:372)
12-28 15:06:34.521: E/AndroidRuntime(14153):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
12-28 15:06:34.521: E/AndroidRuntime(14153):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
于 2014-12-28T13:24:55.193 回答