【问题标题】:iOS build fails with invalid signature: 0x80014 while unzipping the iOS device build zip file from the server (containing the .plist and .ipa files)iOS 构建失败,签名无效:0x80014 从服务器解压缩 iOS 设备构建 zip 文件(包含 .plist 和 .ipa 文件)
【发布时间】:2014-09-16 17:13:47
【问题描述】:

当我尝试使用 Visual Studio 中的设备标志构建我的应用程序时,我收到了这条消息。我无法理解问题所在。

证书的签名有误吗?还是我返回的 zip 文件坏了?

------ Downloading completed build files from http://*:3000/build/273/download to D:\*\bld\iOS\Debug
1>  ------ Done downloading the build outputs to D:\*\bld\iOS\Debug
1>  ------ Extracting the build outputs to D:\*\bin\iOS\Debug
1>  Archive:  D:\*\bld\iOS\Debug\273.zip
1>    inflating: BlankCordovaApp2.plist
1>  
1>  C:\Users\username\AppData\Roaming\npm\node_modules\vs-mda\node_modules\q\q.js:126
1>                      throw e;
1>                            ^
1>EXEC : error : Error from downloading build outputs to D:\*\bin\iOS\Debug: Error: invalid signature: 0x80014
1>      at Extract.<anonymous> (C:\Users\username\AppData\Roaming\npm\node_modules\vs-mda\lib\remoteBuild.js:228:25)
1>      at Extract.EventEmitter.emit (events.js:117:20)
1>      at Parse.<anonymous> (C:\Users\username\AppData\Roaming\npm\node_modules\vs-mda\node_modules\unzip\lib\extract.js:28:10)
1>      at Parse.EventEmitter.emit (events.js:95:17)
1>      at C:\Users\username\AppData\Roaming\npm\node_modules\vs-mda\node_modules\unzip\lib\parse.js:64:12
1>      at processImmediate [as _immediateCallback] (timers.js:330:15)
1>C:\Users\username\AppData\Roaming\npm\node_modules\vs-mda-targets\Microsoft.MDA.targets(99,5): error MSB3073: The command ""C:\Users\username\AppData\Roaming\npm\node_modules\vs-mda\vs-cli" build --platform "iOS" --configuration "Debug" --projectDir . --projectName "BlankCordovaApp2" --language "en-US" --buildServerUrl "192.168.0.19:3000" --buildTarget "iOSLocalDevice"" exited with code 8.

【问题讨论】:

  • unzip npm 包似乎有一些问题。您能否检查您是否能够使用文件资源管理器全部解压来解压缩下载的 zip。如果您能够解压缩包含 *.ipa 和 *.plist 的文件,则您可以使用 iTunes 手动将包部署到设备。
  • 感谢您的回答@Abhishek-MSFT!是的,提取文件没有问题。你有什么想法我可以摆脱错误信息吗?我尝试更新所有 npm 包,清理缓存并修复 VS upd 3。谢谢

标签: ios npm visual-studio-cordova


【解决方案1】:

好的,为了解决这个问题,我确实用 decompress-zip 替换了 unzip npm 包。然后我修改了 vs-mda-remote C:\Users\username\AppData\Roaming\npm\node_modules\vs-mda\lib\remoteBuild.js 中的源代码,改为使用 decompress-zip。现在一切正常!

可能 unzip 在处理 zip 文件方面不如 decompress-zip 强大。

感谢@Abhishek-MSFT 为我指明了正确的方向!

逐步解决方案:

  1. 导航到 C:\Users\username\AppData\Roaming\npm\node_modules\vs-mda
  2. 打开 package.json 并将 "decompress-zip": "0.0.8" 添加到依赖项。
  3. 在当前目录运行 npm install
  4. 导航到 lib 并打开 remoteBuild.js
  5. 在顶部的 vars 链中添加“DecompressZip = require('decompress-zip')”
  6. 然后将函数 unzipBuildFiles(zipFile, toDir) 修改为第 220 行附近的某处,如下所示

    function unzipBuildFiles(zipFile, toDir) {
    
        console.info(res.getString('ExtractingRemoteBuild', toDir));
        util.createDirectoryIfNecessary(toDir);
    
        var deferred = Q.defer();
    
        var unzipper = new DecompressZip(zipFile);
    
        unzipper.on('error', function (err) {
            deferred.reject(new Error(res.getString('ErrorDownloadingRemoteBuild', toDir, err)));
        });
    
        unzipper.on('extract', function (log) {
            console.info(res.getString('DoneExtractingRemoteBuild', toDir));
            fs.unlink(zipFile, function (err) {
                if (err) {
                    console.info(res.getString('FailedToDeleteRemoteZip', zipFile));
                }
                deferred.resolve();
            });
        });
    
        unzipper.extract({
            path: toDir,
            filter: function (file) {
                return file.type !== "SymbolicLink";
            }
        });
    
        return deferred.promise;
    }
    

    现在尝试构建,这将解决签名错误的问题

【讨论】:

  • 收到以下错误:TypeError: Object function DecompressZip(filename) { events.EventEmitter.call(this); this.filename = 文件名; this.stats = null;这个.fd = null; this.chunkSize = 1024 * 1024; // 一次最多缓冲 1Mb // 当我们需要一个资源时,我们应该检查它是否已经有一个承诺 // 并使用它。如果 promise 已经实现,我们就不再进行 // async 工作,我们可以将相关任务排队。 this._p = {}; // _p 而不是 _promises,因为它更容易阅读 } 没有方法 'Extract'
  • 我也面临同样的问题,但仍然没有解决对于这个问题,我只是导航到 ipa 文件的 \bld\iOS\Debug 文件夹。手动解压缩名为相应 ipa 文件的文件夹。双击ipa文件进入iTunes并安装。
  • @gobi 请查看我更新的答案。我希望它也能解决您的问题
  • 有什么方法可以在不修改源的情况下修复软件?
猜你喜欢
  • 2019-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-05
  • 2020-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多