我已将我的应用上传到谷歌。它已经出版。我的主要exp文件是使用应用版本代码2上传的,它仍然具有相同的名称。我的主要应用程序现在是版本代码4,仍然使用main.2 exp文件。
我已经通过调试我的应用程序测试了该文件。
我已经创建了一个测试帐户,并且我已使用该帐户登录该设备,并在创建该测试帐户后尝试下载20分钟。
我相信我的文件大小也是正确的。我正在使用属性155,630,535字节的大小并将其设置为155630535L。还有另一个称为磁盘上的大小,我没有使用它。
我在12小时前上传了我的apk。
真的不知道我哪里出错了。我唯一想知道的是我的版本名称是1.13。我需要在任何地方使用它吗?
我在下载扩展文件时遇到问题。最初我得到'下载失败,因为你可能没有购买此应用'。现在重新编译(导出文件)apk文件并卸载它并重新安装到我的设备后,我已将其上传到我的发布帐户,现在我得到'资源无法找到'。请帮忙......
答案 0 :(得分:2)
确定。经过很多自己的挣扎,我已经解决了我的问题。
首先,它只是以字节为单位的文件大小,而不是磁盘上文件的大小(以字节为单位)。
其次,他们已将测试帐户移至设置中。您需要创建一个测试帐户。
第三,应用程序需要以草稿模式保存。如果应用程序已发布,则在使用测试帐户进行测试时,不会下载扩展文件。
我希望这会对某人有所帮助。
答案 1 :(得分:0)
这篇帖子中有些人提供了一些helfull信息,因为有些内容在apk扩展工作方式上有所改变,而且如果你使用Android Studio来使这些库发挥作用。
注1
您不能再使用草稿了,因为获取扩展文件的链接尚未生效。您必须先使用扩展文件将版本上传到Alpha或Beta。 (只能从您上传的第二个apk中添加扩展文件)因此,请确保在单击APK下的开发人员发布部分中的详细信息时看到列出的apk扩展文件。
注2
如果您正在使用android studio并希望使用下载程序库,请不要只将程序包名称和java文件复制到您自己的应用程序src目录中。在eclipse中导入下载程序库并选择export => gradle构建文件。之后,您可以将该库导入为android studio中的模块。
注3
不确定这一点,但我认为至少需要通过Play商店下载应用程序一次,并且可以通过测试设备上的帐户访问该应用程序。因此,如果您正在使用alpha创建一个google +测试组并添加自己或其他测试设备。
<强>顺便说一句强>
使用这些库,实现apk扩展下载非常容易,只需确保:
您的活动(您要实施下载的活动) 没有完成下载时扩展包的 自动)实现IDownloaderClient。
您设置了服务&amp;接收器并将其设置在清单中。
服务类中的BASE64_PUBLIC_KEY是正确的。上传 第一个apk =&gt;查看开发人员控制台中的Services和API 在你的app =&gt;下此应用的许可证代码。
此代码用于查看是否可以在设备上找到扩展文件:
boolean expansionFilesDelivered() {
for (XAPKFile xf : xAPKS) {
String fileName = Helpers.getExpansionAPKFileName(this, xf.mIsMain, xf.mFileVersion);
Log.i(TAG, "Expansion filename " +fileName);
if (!Helpers.doesFileExist(this, fileName, xf.mFileSize, false))
return false;
}
return true;
}
它使用类XAPKS,它代表一个扩展文件,无论是主文件还是补丁文件,具有特定的文件大小(字节)并与apk版本(首次添加的版本)相关联。
private static class XAPKFile {
public final boolean mIsMain; // true
public final int mFileVersion; //example 4
public final long mFileSize; //example 126515695L
// example => main expansion that was first introduced in apk version 4 and is 126515695 bytes in size
XAPKFile(boolean isMain, int fileVersion, long fileSize) {
mIsMain = isMain;
mFileVersion = fileVersion;
mFileSize = fileSize;
}
}
使用谷歌提供的zip工具(com.android.vending.zipfile)直接从扩展文件中读取电影文件和其他内容也非常容易。
首先使用库中提供的方法获取扩展文件,paremeters是整数,代表你的主要扩展apk版本(你需要扩展包的apk版本首次添加)和补丁apk版本。
ZipResourceFile expansionFile = APKExpansionSupport.getAPKExpansionZipFile(context, APKX_MAIN_APK, APKX_PATCH_APK);
视频强>
直接从此zipresourcefile播放视频:
AssetFileDescriptor a = expansionFile.getAssetFileDescriptor(pathToFileInsideZip);
现在从这个assetFileDescriptor你可以得到一个FileDescriptor并在你的媒体播放器中使用它,正确的语法让你的媒体播放器播放视频也需要第二个和第三个参数..无论你是从起始设置得到的起始时间和长度AssetFileDescriptor。
player.setDataSource(a.getFileDescriptor(), a.getStartOffset(), a.getLength());
其他强>
对于所有其他内容(如图像),您只需获取zipresourcefile的输入流:
expansionFile.getInputStream(pathToFileInsideZip);`
另外请确保您不压缩zip中的视频以使其正常工作! 例如,不压缩.mp4文件:
zip -n .mp4 -r zipfile.zip . -x ".*" -x "*/.*"