1

我正在处理 APK 扩展文件,我查看了这些链接:

1)创建APK扩展文件的步骤

2) http://ankitthakkar90.blogspot.in/2013/01/apk-expansion-files-in-android-with.html

我已经从路径 sdk-path/extras/google 导入了 market_licensing、play_apk_expansion

play_apk_expansion 包含三个项目 downloader_library、zip_file、downloader_sample。

现在我有 SampleDownloaderActivity 我面临的问题:

我还没有在控制台中上传apk文件,我正在尝试测试SampleDownloaderActivity proj,但我收到了这个错误:

02-21 12:54:13.150: E/AndroidRuntime(544): FATAL EXCEPTION: main
02-21 12:54:13.150: E/AndroidRuntime(544): java.lang.IllegalArgumentException: java.security.spec.InvalidKeySpecException: java.io.EOFException: DEF length 67 object truncated by 48
02-21 12:54:13.150: E/AndroidRuntime(544):  at com.google.android.vending.licensing.LicenseChecker.generatePublicKey(LicenseChecker.java:121)
02-21 12:54:13.150: E/AndroidRuntime(544):  at com.google.android.vending.licensing.LicenseChecker.<init>(LicenseChecker.java:92)
02-21 12:54:13.150: E/AndroidRuntime(544):  at com.google.android.vending.expansion.downloader.impl.DownloaderService$LVLRunnable.run(DownloaderService.java:765)
02-21 12:54:13.150: E/AndroidRuntime(544):  at android.os.Handler.handleCallback(Handler.java:587)
02-21 12:54:13.150: E/AndroidRuntime(544):  at android.os.Handler.dispatchMessage(Handler.java:92)
02-21 12:54:13.150: E/AndroidRuntime(544):  at android.os.Looper.loop(Looper.java:130)
02-21 12:54:13.150: E/AndroidRuntime(544):  at android.app.ActivityThread.main(ActivityThread.java:3683)
02-21 12:54:13.150: E/AndroidRuntime(544):  at java.lang.reflect.Method.invokeNative(Native Method)
02-21 12:54:13.150: E/AndroidRuntime(544):  at java.lang.reflect.Method.invoke(Method.java:507)
02-21 12:54:13.150: E/AndroidRuntime(544):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-21 12:54:13.150: E/AndroidRuntime(544):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-21 12:54:13.150: E/AndroidRuntime(544):  at dalvik.system.NativeStart.main(Native Method)
02-21 12:54:13.150: E/AndroidRuntime(544): Caused by: java.security.spec.InvalidKeySpecException: java.io.EOFException: DEF length 67 object truncated by 48
02-21 12:54:13.150: E/AndroidRuntime(544):  at org.bouncycastle.jce.provider.JDKKeyFactory.engineGeneratePublic(JDKKeyFactory.java:92)
02-21 12:54:13.150: E/AndroidRuntime(544):  at org.bouncycastle.jce.provider.JDKKeyFactory$RSA.engineGeneratePublic(JDKKeyFactory.java:396)
02-21 12:54:13.150: E/AndroidRuntime(544):  at java.security.KeyFactory.generatePublic(KeyFactory.java:177)
02-21 12:54:13.150: E/AndroidRuntime(544):  at com.google.android.vending.licensing.LicenseChecker.generatePublicKey(LicenseChecker.java:112)

据我所知这是BASE64_PUBLIC_KEY的问题,但我没有提供任何密钥,因为我没有上传apk,以及如何创建obb文件,我有大约100张图片,大约40mb,我需要在哪里把这些文件?

4

2 回答 2

4

在 Android 中使用APK 扩展文件时,与早期新的 android google play 开发者控制台不同,在帐户详细信息中在此处输入图像描述

每个 android google play 开发者控制台帐户都有一个公钥,现在每个 google play 开发者控制台帐户上的每个应用程序都有唯一的公钥。

对于testin apk扩展文件上传应用程序,在apk上传后你会看到一些这样的选项

在此处输入图像描述

点击服务和 API

在此处输入图像描述

在您的示例中选择公钥复制粘贴

public class SampleDownloaderService extends DownloaderService {
// stuff for LVL -- MODIFY FOR YOUR APPLICATION!
private static final String BASE64_PUBLIC_KEY ="paste here";

在上传 apk 时,您应该上传任何名称的文件(可能是压缩文件).. 您需要确保您上传的文件的大小是您在 sampledownloader 活动中放入的文件大小

private static final XAPKFile[] xAPKS = { new XAPKFile(true, 1, 425553759L)

1 是清单中指定的 android:versionCode。

在此处输入图像描述

您在上传apk时上传的xapk文件相同的文件将被重命名并下载为sd卡中的obb文件

要解压缩 obb 文件等,请单击此处

于 2013-02-26T11:02:16.927 回答
0

阅读这篇文章的人的更新:

注1

您不能再使用草稿,因为获取扩展文件的链接尚未激活。您必须先使用扩展文件将版本上传到 Alpha 或 Beta。(只能从您上传的第二个 apk 开始添加扩展文件)因此,请确保在单击 APK 下的开发者发布部分中的详细信息时看到列出的 apk 扩展文件。

笔记2

如果您使用的是 android studio 并且想要使用下载器库,请不要将包名和 java 文件复制到您自己的应用程序 src 目录中。在eclipse中导入下载器库,选择export => gradle build files。之后,您可以将库作为模块导入 android studio。

注3

不确定这一点,但我也认为有必要通过 Play 商店至少下载一次应用程序,并使用测试设备上的帐户访问它。因此,如果您正在使用 alpha,请创建一个 google+ 测试组并将您自己或其他测试设备添加到其中。

于 2014-09-24T19:10:18.387 回答