2017-09-01 2 views
0

私は自動化のために私のイオン性アプリケーションでgulpを使用しています。 JS、CSS、HTMLファイルを縮小し、ビルドディレクトリを作成するためのgulpプロセスをセットアップしました。だから、基本的に私はアンドロイドAPKを作成する必要がありますが、そのために私は物事gulpを使用したイオン性適用のためのAPKの自動包装の設定方法

  1. がリリースビルドを作成するためのコマンドを実行
  2. 一気コマンドに
  3. を使用してビルドフォルダ wwwを作成して次の操作を行う必要があります: ionic cordova build --release android
  4. 使用jarsignerのコマンドを看板にAPK:jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore HelloWorld-release-unsigned.apk alias_name

最後に、私のAPKが準備され、追加のバージョンパラメータで名前を更新することで、今日の日付フォルダのどこかにコピーされます。 QAのためにより多くのビルドを行う必要がある場合は、かなり時間がかかります。

gulpプロセスのみを使用して、1度にデプロイ可能な署名付きAPKを作成するにはどうすればいいですか?

答えて

3

私は利用可能な方法とGoogleの素敵なリンクを利用して、署名付きAPKを作成するための素晴らしいソリューションを開発しました。

ステップ1.

は、ビルドディレクトリ内minifiesコピーすべてのCSS、JS、HTMLファイル、すなわちWWWはとAndroidプラットフォームを確認一気プロセスと準備ができているのは、段階的に行ってみようプロジェクトに追加されました。

ステップ2.

プロジェクトのルートに次のコマンド

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048

コピーこのkeystoreを使用してアプリケーションのkeystoreを生成します。

ステップ3.

プロジェクトのルートディレクトリにbuild.jsonという名前の新しいファイルを作成し、その中に以下の行を追加します。 keystore

{ 
    "android": { 
     "debug": { 
      "keystore": "AnyName.keystore", 
      "storePassword": "password", 
      "alias": "AnyAliasName", 
      "password" : "password", 
      "keystoreType": "" 
     }, 
     "release": { 
      "keystore": "AnyName.keystore", 
      "storePassword": "password", 
      "alias": "AnyAliasName", 
      "password" : "password", 
      "keystoreType": "" 
     } 
    } 
} 

ステップを作成しながら、4

gulpfile.js

npm install --save-dev gulp-cheerio 
npm install --save-dev gulp-util 
npm install --save-dev gulp-if 
npm install --save-dev run-sequence 
npm install --save-dev gulp-rename 
npm install --save-dev yargs 

手順5でコードを追加する前に、次の一気のプラグインをインストールし、あなたが入力したkeystore名とパスワードの詳細を設定します。

gulpfile.jsに次のコードを追加してAPK &を作成し、今日の日付ディレクトリにコピーして名前を変更します。次のコードを追加したら、build_app & release_task gulpタスクをデフォルトのgulpプロセスに追加してください。 6.

var if = require('gulp-if'); 
    var runSequence = require('run-sequence'); 
    var rename = require('gulp-rename'); 

    // This plugin used to read XML file 
    var cheerio = require('gulp-cheerio'); 

    // This is gulp utility plugin 
    var util = require("gulp-util"); 

    // Used for executing any command line command 
    var exec = require('child_process').exec; 

    /** 
    * Command line options - defines whether this is a dev or release build 
    * e.g gulp -r or gulp -d. (gulp --release or gulp --develop) 
    * By default, just running 'gulp' is the same as running 'gulp -d' 
    */ 
    var args = require('yargs') 
     .alias('r', 'release') 
     .alias('d', 'develop') 
     .default('release', false) 
     .argv; 

    var release = args.release; 
    // Used to create directory with today's date 
    var releaseDirName = util.date('dd-mmm-yyyy'); 

    // Default path where signed apk is created 
    APK_PATH = './platforms/android/build/outputs/apk/android-release.apk' 

    APK_NAME = "<YOUR_APP_NAME>"; 

    // The following popup is used to give popup notification in windows when APK is ready 
    var WINDOWS_POPUP = "msg * MESSAGE"; 

    // This command creates the signed APK using configuration in build.json 
    var ANDROID_SIGNED_APK_COMMAND = 'cordova build android --release --buildConfig'; 

    /** 
    * Create signed APK 
    */ 
    gulp.task('build_app', function (cb) { 
     if(args.signedAPK){ 
      console.log('Building signed apk...'); 
      exec(ANDROID_SIGNED_APK_COMMAND, 
      { 
       cwd : './', 
       maxBuffer: 1024 * 1024 
      }, 
      function (err, stdout, stderr) { 
       console.log(stdout); 
       console.log(stderr); 
       cb(err); 
      }); 
     } 
    } 


    /** 
    * Common function for executing commands 
    * @param cmd 
    * @param cb 
    * @returns 
    */ 
    function execCMD(cmd, cb){ 
     exec(cmd, 
     { 
      cwd : './', 
      maxBuffer: 1024 * 1024 
     }, 
     function (err, stdout, stderr) { 
      console.log(stdout); 
      console.log(stderr); 
      if(err){ 
       cb(err); 
      }else{ 
       cb(); 
      } 
     }); 
    } 

    /** 
    * Reads XML file for getting version 
    */ 
    gulp.task('config_xml', function() { 
     return gulp.src('./config.xml') 
     .pipe(cheerio({ 
      run: function ($) { 

      // set app version number 
      APK_NAME += '_' + $('widget').attr('version'); 
      }, 
      parserOptions: { 
      xmlMode: true 
      } 
     })) 
     .pipe(gulp.dest('./')); 
    }); 

    /** 
    * release task 
    */ 
    gulp.task('releaseTask',function(callback) { 
     if(args.signedAPK){ 
      runSequence(
       'copyAPK', 
       callback 
      ) 
     } 
    }); 

    /** 
    * Rename android apk 
    */ 
    gulp.task('copyAPK',function(callback) { 
     return gulp.src(APK_PATH) 
      .pipe(if(args.signedAPK,rename(APK_NAME))) 
      .pipe(gulp.dest(releaseDirName + '/Android/')) 
      .on('end', function(){ 
       util.log(util.colors.green('Good Job! Your APK is ready at following location : ') + util.colors.cyan(releaseDirName + '/Android/' + APK_NAME)) 
       execCMD(WINDOWS_POPUP.replace('MESSAGE','Good Job! Your APK is ready at following location : ' + releaseDirName + '/Android/' + APK_NAME), function(err){}) 
      }); 
    }); 

ステップは、任意の名前でbatファイルを作成します。私はそれを作成しましたSigned APK <My Project Name>.bat 次のコードをbatファイルに入れてください。

cd /d %~dp0 
gulp --release --signedAPK 
cmd.exe 

このbatファイルをプロジェクトのルートディレクトリに保存します。

cd /d %~dp0 

上記のコードは、batファイルが存在するディレクトリにジャンプします。

gulp --release --signedAPK 

上記一つのAndroid APK署名さ作成します。

ステップ7

何のために待ってはいけない...プロジェクトに移動してくださいダブルbatファイルをクリックすると、それはそれだ...署名APKは、今日の日付のフォルダにあなたを待ってますプロジェクトで

+0

'args'変数にエラーが発生しました。それについての任意のアイデア。 –

+0

申し訳ありませんが、私は "yargs"ノードmobuleをロードするようには言及していませんでした。私は答えを更新しました。今すぐご確認ください。 "yargs"モジュールをインストールして、あなたの 'gulpfile.js'でそれを使用してください。 –

関連する問題