我已经开发了应用程序并成功运行.
我在应用程序中使用了应用程序许可功能.现在我要在谷歌播放上传一个应用程序.
请让我知道步骤,如何使用应用程序许可以及如何创建APK扩展文件?
我应用谷歌开发者文档中提到的确切步骤创建一个示例谷歌地图项目,一切都在模拟器上很好,但当我生成项目apk文件并在真实设备上启动它三星Galaxy S4谷歌地图不显示它显示只有一个空白的背景,左下方的屏幕角出现了彩色的Google徽标!!
我为谷歌地图创建了新项目我为项目创建了新的.jks文件并创建了商店和密钥传递和别名然后我从cmd java bin中提取了SHA1我去了dev.google.com/console创建了新项目然后启用了谷歌地图android API随后在Credentials中创建了API密钥,在我项目的google_maps_api.xml中粘贴了这个API密钥,并使用.jks文件路径和别名以及两个密码更新了signingConfigs版本.然后从Android Studio生成签名APK然后将app-release.apk转移到真实设备然后安装它同样问题谷歌地图没有显示.
Plz帮助
文档称Google Play中的APK大小限制为50MB,可选择两个2GB扩展APK.
但是,我可以在Google Play商店中找到超出此50MB限制的应用程序(例如,Gears&Guts为371MB).我可以直接从Google Play下载此游戏而无需外部下载程序.他们是否有一些额外的功能作为顶级开发者上传超过50MB的APK,或谷歌播放只是隐藏它正在下载扩展文件而不是APK本身的事实?
我需要上传.apk
但超过50 MB的限制.
我在文档和一些问题上读到了这个,但是我很难做到这一点.
有没有人有一些教程解释如何做到这一点(使用Android Studio),如果有一些方法可以使用Gradle来做到这一点?
我正在尝试按照此处的指南测试Android中的扩展包文件(OBB):http: //developer.android.com/google/play/expansion-files.html
我正处于需要在Nexus 4上测试我的应用程序的步骤.
我使用jobb生成了我的.obb文件,并在此位置的设备中将其adb推送:
/mnt/shell/emulated/0/Android/obb/my.package/main.1.my.package.obb
Run Code Online (Sandbox Code Playgroud)
当应用程序运行时,它找不到该文件.
方法:
Helpers.doesFileExist(context, fileName, xf.mFileSize, false)
Run Code Online (Sandbox Code Playgroud)
为我的文件返回false.
我调试并发现它正在寻找文件:
/storage/emulated/0/Android/obb/my.package/main.1.my.package.obb
Run Code Online (Sandbox Code Playgroud)
具体来说,这是返回的路径:
Helpers.generateSaveFileName(c, fileName)
Run Code Online (Sandbox Code Playgroud)
Environment.getExternalStorageDirectory()返回的/ storage/emulated/0不存在,使用adb shell浏览设备.
但是它在运行时,在应用程序内部,我还检查了它包含的内容:它包含了我在/ mnt/shell/emulated/0中发现的几乎相同的东西,它包含Android/obb目录,它是空的.
我如何找到路径/mnt/shell/emulated/0/Android/obb/my.package/main.1.my.package.obb我放置了我的obb文件:
$ adb shell
$ ls -ld sdcard
lrwxrwxrwx root root 2013-10-16 17:34 sdcard -> /storage/emulated/legacy
$ ls -ld /storage/emulated/legacy
lrwxrwxrwx root root 2013-10-16 17:34 legacy -> /mnt/shell/emulated/0
Run Code Online (Sandbox Code Playgroud)
在里面,我已经找到了Android/obb目录,空了.
所以问题是:我应该在哪里把我的obb文件放在运行时的正确位置?
我做了一切在那里说:
在Market中创建了一个草案应用程序来获取公钥
生成一个20字节的随机数组(盐)
集成了play_licensing/library和play_apk_expansion/download_library
写了我的服务/接收器
使用助手等进行检查..完全像文件说的那样.
我想一切正常但我还不能在Play商店发布!我需要在本地测试,我需要在开发的初始阶段经常更改我的obb文件.
我无法在模拟器上测试,因为我使用3D和设备相机.
从谷歌播放下载应用程序时,是否可以禁用APK扩展文件的自动下载?
我可以强制google play禁用下载并让应用程序自行下载扩展文件吗?
谢谢
我已经成功下载并存储了扩展文件.但是当我尝试在里面播放mp3时它崩溃了..
ZipResourceFile expansionFile = APKExpansionSupport.getAPKExpansionZipFile(getApplicationContext(),
1, 0);
InputStream fileStream = expansionFile.getInputStream("mysong.mp3");
AssetFileDescriptor asd = expansionFile.getAssetFileDescriptor("mysong.mp3");
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(asd.getFileDescriptor(), asd.getStartOffset(), asd.getLength());
asd.close();
mediaPlayer.prepare();
mediaPlayer.start();
Run Code Online (Sandbox Code Playgroud)
这里logcat说输入流和文件描述符都是null ..任何人都可以帮助我吗?
我有一个需要大型媒体文件的Android应用程序。
该应用程序运行良好:我可以从本地存储中读取自己的.obb文件格式,并且唯一需要实现的是扩展文件的手动下载过程,因为Google Play无法自行执行此操作。
所有这一切,是因为Google提供了既免费又好用的文件扩展服务,但不能仅靠信任就可以开始工作。我知道,这与适当的问题无关,但让所有人都沉迷一下吧……
网址https://developer.android.com/google/play/expansion-files.html足够清楚地说明了这一点,以便以任何方式测试手动下载过程,您都需要从商店下载应用,因此您不得不:
您可以欣喜地看到您的手动下载实施(可能依赖于他们提供的极其易于使用的库)是否可以正常工作。
他们在指南中没有写的是:
归结为:很多事情都会出错,并且每次我需要查看我的代码是否有效时,都会有一个多小时的延迟。
我知道我可以在不依赖Google Play服务的情况下单独测试某些组件(例如,唤醒动态),但是当涉及到.obb文件正确时,此繁琐的过程可能会带来很多麻烦。
有一个更好的方法吗?
android google-play google-play-services apk-expansion-files
我在Android 6.0及更高版本上的权限有问题.
我正在使用的游戏是使用WRITE_EXTERNAL_STORAGE权限.在Android 6.0及更高版本上,必须显示要求用户允许的警报.
我已收到要求删除此警报,这意味着游戏不能再使用WRITE_EXTERNAL_STORAGE了.
从技术上讲,游戏现在不是在任何地方编写和阅读外部存储.所有保存和缓存的文件都存储在特定于应用程序的目录中(/storage/emulated/0/Android/data/com.company.productname)但是,游戏必须读取(有时下载)存储的OBB文件在/storage/emulated/0/Android/obb/com.company.productname目录中.
即使没有设备上的WRITE_EXTERNAL_STORAGE或READ_EXTERNAL_STORAGE,游戏也可以访问此目录:
但它似乎无法访问此目录:
我甚至使用Alpha测试检查它,以模拟从商店下载游戏.
当给予存储权限(通过应用程序设置)时,一切运行正常.
OBB是如何安装的?
我使用的虚幻引擎4使用C open()函数来处理OBB文件:
int32 Handle = open(LocalPath, O_RDONLY);
Run Code Online (Sandbox Code Playgroud)
其中LocalPath是obb文件的完整路径:/ storage_emulated/0/Android/obb/com.company.productname/main.10003.com.company.productname.obb
问题是:
前段时间我发布了我的应用程序的测试版,并将其与APK扩展文件相关联.然后我想更新我的APK而不触摸文件,并做了以下:
我的应用程序的版本代码是7,提供程序也有此值.提供程序看起来像在我的清单中:
<provider
android:name=".expansion.MyApezProvider"
android:authorities="com.bla.blabla"
android:exported="false"
android:multiprocess="true"
>
<meta-data
android:name="mainVersion"
android:value="7">
</meta-data>
</provider>
Run Code Online (Sandbox Code Playgroud)
这是我的下载活动的片段:
private static final XAPKFile[] xAPKS = {new XAPKFile(true, // true signifies a main file
7, // the version of the APK that the file was uploaded
383989643L // the length of the file in bytes
)};
Run Code Online (Sandbox Code Playgroud)
我只将清单中的版本代码值从7增加到8.因为我不想触摸扩展文件.因此,提供程序和Downloader Activity中的值仍为7.
我上传了新的APK文件,但没有再次选择上传的APK扩展文件.但这没效果.用户更新到新版本后,应用程序中的视频文件不再可用.
所以我再次上传了APK文件并重新上传了APK扩展文件,这有效.但这很奇怪,因为用户必须为每次更新下载扩展.
我的问题是:当我将新的apk上传到Google Play控制台时,我是否必须始终选择存储的apk扩展文件或重新上传它?APK扩展文件的行为在测试版和版本中是否有所不同?
在以下帖子中更新Google Play中的APK而不更改扩展文件时,它表示此行为仅在草稿模式下发生,但我的应用程序未处于草稿模式.它作为测试版发布.
我非常感谢你的帮助.