1

我创建了一个AS3移动应用程序,并通过flash CS6成功导出。为AS3创建扩展文件Android Air App Flash cs6

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

当我试图上传到谷歌播放时,我得到了(预计)关于文件大小为> 50mb的警告。

我花两个小时试图找到一个解决方法,包括使用jobb.batzipalign.bat,把文件放到main.1.obb和许多其他选项的格式。

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

我曾尝试 http://developer.android.com/google/play/expansion-files.html -

似乎非常复杂,假设我有蚀。我甚至试图将“android-sdk \ extras \ google \ play_apk_expansion”导入Flash构建器,但不是正确的项目扩展。

我找遍了整个堆栈溢出至比如文章:

[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

- 但是使用谷歌的旧版本(我没有“添加额外的按钮”)同样,这不是从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 ? 
+0

同样的问题在这里。没有答案呢? – Saariko 2013-05-01 09:27:00

+0

对不起,Saariko,我没有得到它。我很幸运地自己发布它,我们只是将.apk文件放在我们自己的网站上,因为它是针对客户的,而不是一般的社区。 – Daragh 2013-05-01 13:59:14

回答

3

您不必准备obb - 不需要使用jobb。

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

这样:
preloader.swf的 - > APK
app.swf - > OBB

在这种情况下,你不必做一个OBB文件,只需上传新的APK至Google Play之后在扩展文件部分上传apk文件,将'没有扩展文件'更改为'上传新文件'并选择你的app.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); 
} 

,你可以添加在预加载启动画面;)

如果你必须更新你也必须用新的mainVersion APK编译OBB文件

如果您使用zip文件而不是swf,则必须上传zip文件,而在preloader中则必须处理它 - 从解压缩的文件夹中解压缩并使用数据。

+0

感谢您的代码。这很多作品完美。现在我该如何读取obb文件中的内容。我一次只能加载一个.obb文件,里面没有.swf文件。 – Bhaijaan 2014-07-02 08:16:26

+0

我如何测试这个工作?它正在加载的文件在我的文件系统上不存在,对吧? – 2014-07-09 10:42:10

+0

@Bhaijaan @Bhaijaan我只用了一个swf,如果你想拥有更多的你可能想压缩它们并将zip文件作为扩展文件上传,但是在你的容器文件中,你必须将obb作为一个zip文件,然后使用favorite将其解压缩用于as3的zip库,将zip从zip复制到应用程序已知位置,然后从那里加载swf。缺点是第一次运行需要更长的时间,因为解压缩 – Misiek 2014-07-09 12:04:01