【问题标题】:Create expansion file for AS3 android Air App Flash cs6为 AS3 android Air App Flash cs6 创建扩展文件
【发布时间】:2013-02-20 08:55:25
【问题描述】:

我已经创建了一个 AS3 移动应用,并通过 flash CS6 成功导出。

在这个 .apk 中,我包含了我的视频文件(将作为 Android 平板电脑的演示文稿)。仅 .flvs 的总大小为 64mb。

当我尝试上传到 Google Play 时,我收到了关于文件大小为 >50mb 的(预期的)警告。

我花了两个小时试图找到解决方法,包括使用 jobb.batzipalign.bat ,将文件转换为 ma​​in 的格式.1.obb 和许多其他选项。

Google 网站似乎认为我在使用 Eclipse(我不是我使用 Flash CS6),但我还是尝试了所有这些工具,但结果为零。

我试过了 http://developer.android.com/google/play/expansion-files.html -

但是 似乎非常复杂,并假设我有 Eclipse。我什至尝试将“android-sdk\extras\google\play_apk_expansion”导入 Flash builder,但不是正确的项目扩展。

我查看了 Stack Overflow 上的所有文章,例如:

[https://stackoverflow.com/questions/14385776/how-to-attach-a-expansion-file-to-an-as3-air-application/15232051#15232051][2]

——但是目前还没有回应

AS3 / AIR Google Play application id and expansion files access

-但是没有明确的答案,我什至不知道它是如何得到 .obb 文件的。

APK 50meg+ Expansion Packs and Flash

-但是我没有亚马逊存储桶帐户。也不知道什么是android共享存储。

Steps to create APK expansion file

– 但是使用的是旧版本的 google(我没有“添加额外按钮”)而且这不是来自 Flash As3 项目,并且再次依赖于 Eclipse。

APK 50meg+ Expansion Packs and Flash

-但是此人已经拥有 .obb 文件(如何?)。

如你所见,我尝试了很多不同的方式,但我无法简单地创建扩展方式。

简而言之;

    Dose anyone one have a clear cut step by step technique on how to upload an .apk
    created in Flash CS6 that is >50MB to Google Play ?

【问题讨论】:

  • 这里有同样的问题。还没有答案吗?
  • 对不起,Saariko,我没搞定。我很幸运自己分发它,我们只是将 .apk 文件放在我们自己的网站上,因为它是为客户而不是一般社区。​​span>

标签: android flash-cs6 mobile-application apk-expansion-files


【解决方案1】:

你不必准备obb——不需要使用jobb。

air app 使用扩展文件最简单的方法是制作一个小的 swf 作为预加载器并将其用作主 apk,而另一个包含所有大数据的 swf 文件(将被加载)存储在 obb 文件中。

所以:
preloader.swf -> apk
app.swf -> obb

在这种情况下,您不必制作 obb 文件,只需将新的 apk 上传到 google play 并在扩展文件部分上传 apk 后将“无扩展文件”更改为“上传新文件”并选择您的应用.swf 文件。谷歌会把swf改成obb你就不需要了。

当您为新应用上传第一个 apk 时,您将无法添加 obb 文件。您必须只上传 apk,然后添加新版本的 apk - 这会启用 obb 选项。

现在您必须在您的预加载器类中从 apk 加载 app.swf。我正在使用类似的东西:

private var mainVersion:String="1000001";
private var path:String = "Android/obb/com.your.app.id";
private var filename:String= "main." + mainVersion + ".com.your.app.id.obb";//patch for second obb
private var file:File;
private var fileStream:FileStream;
private var bytes:ByteArray;
private var applicationLoader:Loader;

public function App() 
{
    file = File.documentsDirectory.resolvePath(path + "/" + filename);

    if (file.exists)
    {
        loadSwf();
    }
}

private function loadSwf():void 
{
    fileStream = new FileStream(); 
    fileStream.open(file, FileMode.READ);
    bytes = new ByteArray();
    fileStream.readBytes(bytes);
    fileStream.close(); 

    var cont:LoaderContext = new LoaderContext();
    cont.allowCodeImport = true;

    applicationLoader = new Loader();
    applicationLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, handleAppLoaded);
    applicationLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, handleProgress);

    applicationLoader.loadBytes(bytes, cont);
}

private function handleProgress(e:ProgressEvent):void 
{
    trace(int(100 * e.bytesLoaded / e.bytesTotal))
    //just add progress bar if you want
}

private function handleAppLoaded(e:Event):void 
{
    addChild(applicationLoader);
}

您可以在预加载器中添加启动画面;)

如果您必须更新 obb 文件,您还必须使用新的 mainVersion 重新编译 apk

如果你想使用 zip 文件而不是 swf,你必须上传一个 zip 文件,并且在预加载器中你必须处理它 - 解压并使用解压文件夹中的数据。

【讨论】:

  • 感谢您的代码。这很完美。现在我如何读取 obb 文件中的内容。我在 .obb 中有几个 .swf 文件,我想一次加载一个。
  • 如何测试它是否有效?它正在加载的文件在我的文件系统中不存在,对吧?
  • @Bhaijaan 我只使用了一个 swf,如果你想要更多,你可能想要压缩它们并将 zip 文件作为扩展文件上传,但是在你的容器文件中你必须将 obb 视为一个 zip,所以使用最喜欢的 as3 zip 库解压缩它,将 swf 从 zip 复制到应用程序已知位置,然后从那里加载 swf。缺点是由于解压,第一次运行需要更长的时间
  • @SimenØianGjermundsen 我发现的唯一最终测试是使用 google play 进行整个过程,因此上传容器 apk 添加扩展文件(google 更改为 obb 的 swf),然后在几个小时后从 google 下载应用程序玩。在开发过程中,我不使用容器 apk,我只是发布主应用程序,因为 apk 容器仅在发布到 google play 时的最后一步中使用。但这只是我的方式
  • @Misiek 还有其他方法可以解决这个问题吗?还是解压缩仍然是唯一的方法?如果它仍然是唯一的方法,哪个压缩库具有更好的解压缩速度?
猜你喜欢
  • 1970-01-01
  • 2014-08-12
  • 2011-04-18
  • 1970-01-01
  • 2012-12-18
  • 1970-01-01
  • 1970-01-01
  • 2013-05-12
  • 2015-05-13
相关资源
最近更新 更多