私は利用可能な方法と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は、今日の日付のフォルダにあなたを待ってますプロジェクトで
'args'変数にエラーが発生しました。それについての任意のアイデア。 –
申し訳ありませんが、私は "yargs"ノードmobuleをロードするようには言及していませんでした。私は答えを更新しました。今すぐご確認ください。 "yargs"モジュールをインストールして、あなたの 'gulpfile.js'でそれを使用してください。 –