如何在Jaggery中从URL创建文件(.apk)?

时间:2015-05-06 14:17:10

标签: javascript wso2 wso2-emm jaggery-js

我有应用商店和应用程序有他们的网址。我想从这些网址下载apks到我的jaggery服务器。虽然下面的代码(我的第一个解决方案)成功创建了myApp.apk,但它无法正常工作。

首先,我尝试使用以下代码,

var url  = "http://img.xxx.com/006/someApp.apk";
var data = get(url, {});    

var file = new File("myApp.apk");
    file.open("w");
    file.write(data.data);
    file.close(); 


当我打印data.data值时,它看起来像

data.data

<小时/> 我也试过了,

var file = new File("http://img.xxx.com/006/someApp.apk");
file.saveAs("myApp.txt");

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

.apk个文件是Android应用程序文件,它们应该以{{1​​}}开头,因为它们实际上是zip存档!

它们并不是要解压缩,虽然您可以这样做以查看一些应用程序资源(但是有更好的方法可以对PK文件进行逆向工程,如果这是Apktool你正在寻找)。

答案 1 :(得分:0)

根据jaggery documentations,file.write正在将对象的String表示写入文件。这就是为什么你得到一个无法安装的apk文件的原因。

然而,你可以使用apache commons-io java库中的copyURLToFile使其工作,因为jaggery支持java本身,并且所有WSO2产品在其类路径中都有apache commons-io库。

<%
    var JFileUtils = Packages.org.apache.commons.io.FileUtils;
    var JUrl = Packages.java.net.URL;
    var JFile = Packages.java.io.File;
    var url  = new JUrl("http://img.xxx.com/006/someApp.apk");
    JFileUtils.copyURLToFile(url, new JFile("myApp.apk"));
    print("done");
%>

默认情况下,您的文件将存储在$ CARBON_HOME目录中,除非您指定了该文件的相对路径或绝对路径。