APK扩展文件下载不起作用

时间:2014-01-12 14:11:37

标签: android android-lvl apk-expansion-files

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

现在我设置了XAPKFile

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

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

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

我将两个作为alhpa版本上传到市场中进行测试,并让其他人无法访问。

测试帐户是开发者帐户。

现在问题是,下载不会开始。我总是得到提示“下载失败,因为你可能没有购买过这个应用程序”。

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

RSA Key是正确的。

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

编辑:

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

enter image description here

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

3 个答案:

答案 0 :(得分:1)

我等了一天,现在神奇地工作了。似乎Google需要一些时间来推进。

编辑:

现在它再次停止工作,错误“下载失败,因为无法找到资源”,多么有趣......

答案 1 :(得分:0)

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

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

enter image description here

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)

答案 2 :(得分:0)

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

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

enter image description here

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

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 enter image description here

希望能帮助你:)