如何创建离子应用程序构建& .ipa使用gulp

时间:2016-02-11 10:12:28

标签: angularjs ionic-framework gulp

我在使用gulp的时候陷入困境!

我知道gulp用于连接文件,缩小脚本,编译scss文件,但我正在寻找一些任务,通过该任务我可以创建应用程序的构建并且< strong> .ipa 申请文件。

我们如何使用 gulp任务来实现它?

2 个答案:

答案 0 :(得分:1)

我已经做了一些解决方法,并找到了使用gulp创建 .ipa 的好方法......

第一步

参考:How can I deploy (create .ipa) iphone app using 'cordova build ios --release'?

如果您使用的是cordova ios 3.9.0或更高版本,则可以使用此命令直接从CLI创建.ipa,无需额外命令:

cordova build ios --device --release 您需要在项目的根目录中使用build.json文件

{
     "ios": {
         "debug": {
             "codeSignIdentitiy": "iPhone Developer",
             "provisioningProfile": "your-dev-provisioning-profile-UUID-here"
         },
         "release": {
             "codeSignIdentitiy": "iPhone Distribution",
             "provisioningProfile": "your-distribution-provisioning-profile-UUID-here"

         }
     }
 }

要获取UUID,我在文本编辑器上打开.mobileprovision文件并搜索“UUID”,不确定是否有更简单的方法来查找它。

第二步:

参考:How to execute shell command using gulp

编写gulp任务来执行shell命令

var IOS_BUILD_COMMAND = 'ionic build ios';
var IOS_IPA_COMMAND = 'cordova build ios --device --release';

gulp.task('ios_build', function (cb) {
  exec(IOS_BUILD_COMMAND, function (err, stdout, stderr) {
    console.log(stdout);
    console.log(stderr);
    cb(err);
  });
});

gulp.task('ios_ipa', function (cb) {
  exec(IOS_IPA_COMMAND, 
    {
        cwd : './',
        maxBuffer: 500 * 1024
    },
    function (err, stdout, stderr) {
        console.log(stdout);
        console.log(stderr);
        cb(err);
    });
}); 

第三步

从命令行执行gulp -r

哟......它完成了!! !!

答案 1 :(得分:0)

我对离子并不是很熟悉,但就我所知,它使用了Cordova。

您可以使用build.json文件来管理应用签名配置。 (docs

例如:

{
     "ios": {
         "debug": {
             "codeSignIdentity": "iPhone Development",
             "provisioningProfile": "926c2bd6-8de9-4c2f-8407-1016d2d12954",
         },
         "release": {
             "codeSignIdentity": "iPhone Distribution"
             "provisioningProfile": "70f699ad-faf1-4adE-8fea-9d84738fb306",
         }
     }
 }

您甚至可以更进一步,使用Fastlane工具来处理证书。

Sigh可以在Cordova before_build挂钩中使用,以确保使用新证书。

#!/usr/bin/env node
'use strict';

var path = require('path');


module.exports = function(context) {
  if (context.opts.platforms.indexOf('ios') === -1) {
    return;
  }
  var ConfigParser = context.requireCordovaModule('cordova-common').ConfigParser;
  var superspawn = context.requireCordovaModule('cordova-common').superspawn;

  var config = new ConfigParser(path.resolve(context.opts.projectRoot, 'config.xml'));

  var id = config.ios_CFBundleIdentifier() || config.packageName();
  var sighArgs = ['--app_identifier', id, '--username', '<your apple id here>'];
  return superspawn.spawn('sigh', sighArgs, {stdio: 'inherit'});
};

更进一步,Deliver可用于自动将ipa上传到App Store。

当然,如果您愿意,这些工具也可以从gulp任务而不是Cordova钩子运行。