Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# APK-解析包时出现问题_C#_Android_Asp.net_Apk - Fatal编程技术网

C# APK-解析包时出现问题

C# APK-解析包时出现问题,c#,android,asp.net,apk,C#,Android,Asp.net,Apk,因此,我正在尝试使用ASP.NET从网页安装.APK。下面是我的ASP代码,它可以获取文件并下载到仿真器和android本身。然而,当我去运行时,我得到了解析错误 FileName = application.FileName; FileLocation = application.VersionLocation; FileExtension = application.FileExtension; FileNameWithExte

因此,我正在尝试使用ASP.NET从网页安装.APK。下面是我的ASP代码,它可以获取文件并下载到仿真器和android本身。然而,当我去运行时,我得到了解析错误

        FileName = application.FileName;
        FileLocation = application.VersionLocation;
        FileExtension = application.FileExtension;
        FileNameWithExtension = application.FileName + application.FileExtension;

        string iUrl = Path.Combine(FileLocation, FileNameWithExtension);

        Response.Clear();
        Response.ContentType = "application/vnd.android.package-archive";
        string Header = "Attachment; Filename=" + FileNameWithExtension;
        Response.AppendHeader("Content-Disposition", Header);
        FileInfo Dfile = new FileInfo(iUrl);
        Response.Flush();
        Response.WriteFile(Server.MapPath(Dfile.FullName));
        Response.End();
我在谷歌上搜索了一个又一个,他们都建议检查30的API版本。模拟器也是30岁,Android本身也是如此。这很好

我还允许在仿真器上安装未知的应用程序,并允许谷歌在安卓系统上安装未知的应用程序。这就是我下载的地方。这很好

为了以防万一,我做了几双冷靴。这很好

有一件事我不能理解和感觉到它的原因(不知道如何或为什么),但下载前的APK是3.8mb,当它下载到模拟器或android本身时,它是3.4mb。拖放原始的3.8mb APK可以正常工作,但下载会破坏它


我就是搞不懂它为什么会损坏

你检查过下载的文件了吗?apk只是一个压缩文件,里面有一堆文件。尝试将扩展名更改为.zip,然后打开这两个扩展名并进行比较。如果您无法以这种方式打开从站点下载的文件,那么它可能会以某种方式损坏。我建议使用handler而不是aspx页面,因为它可能会获得一个额外的gzip来破坏您的文件。-还要再添加一个
Response.Flush()在结束()之前;并添加
Response.Buffer=false
-还可以尝试
响应.OutputStream.Write
而不是writefile-您必须仔细检查writefile是否为二进制文件,而不仅仅是文本文件-我从未使用过它。