我需要将扩展支持集成到我的应用中。到目前为止我得到的是我现在在我的应用程序中有示例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是正确的。
为什么我的应用没有获得许可?
编辑:
我现在在另一个帐户上测试了它,得到了一个不同的错误:
帐户已作为测试帐户添加到开发者控制台的许可中
答案 0 :(得分:1)
我等了一天,现在神奇地工作了。似乎Google需要一些时间来推进。
编辑:
现在它再次停止工作,错误“下载失败,因为无法找到资源”,多么有趣......
答案 1 :(得分: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)
答案 2 :(得分:0)
确保文件大小与上传到Android控制台的扩展文件相同,
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
希望能帮助你:)