添加打包脚本

master
laiiihz 5 years ago
parent 5d8db16f37
commit a903a55316

@ -1,4 +1,4 @@
org.gradle.jvmargs=-Xmx2g
org.gradle.jvmargs=-Xmx4g -Xms2g
android.enableJetifier=true
android.useAndroidX=true
android.enableR8=false

@ -169,6 +169,13 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.9.10"
cli_util:
dependency: transitive
description:
name: cli_util
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.2.0"
clock:
dependency: transitive
description:
@ -522,6 +529,13 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.2.0"
grinder:
dependency: "direct dev"
description:
name: grinder
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.8.6"
html:
dependency: transitive
description:

@ -219,6 +219,7 @@ dev_dependencies:
sdk: flutter
build_runner: ^1.0.0
json_serializable: ^2.0.0
grinder:
flutter:
uses-material-design: true

@ -0,0 +1,27 @@
class Config {
///
static const homeDir = '/Users/akufe';
///
static const recookPassword = 'recook';
///
static const keystorePath = './jks/recook.keystore';
///
static const packageName = 'RECOOK';
///Android SDK
static String get androidSdkRoot => '$homeDir/Library/Android/sdk';
///Apksigner
static String get apksignerPath =>
'$androidSdkRoot/build-tools/30.0.2/apksigner';
///
static String get downloadPath => '$homeDir/Downloads';
///
static String get buildPath =>
'./build/app/outputs/flutter-apk/app-release.apk';
}

@ -0,0 +1,82 @@
import 'dart:async';
import 'dart:io';
import 'package:grinder/grinder.dart';
import 'config.dart';
main(args) => grind(args);
int pid;
@Task()
test() => new TestRunner().testAsync();
///APK
@Task()
Future buildApk() async {
TaskArgs args = context.invocation.arguments;
bool verbose = args.getFlag('v');
stdout.write("Build APK 📦\n");
stdout.write("BUILDINGAPK");
await Process.start('flutter', ['build', 'apk']).then((proc) async {
if (verbose) {
await stdout.addStream(proc.stdout);
await stderr.addStream(proc.stderr);
}
});
stdout.write("\rBuild APK DONE 📦\n");
stdout.write("copy build to download 🛠\n");
await Process.run('rm', ['-rf', '${Config.downloadPath}/builds']);
await Process.run('mkdir', ['${Config.downloadPath}/builds']);
await Process.run('cp', [
Config.buildPath,
'${Config.downloadPath}/builds/${Config.packageName}_release.apk'
]);
stdout.write("opening downloadPath 🛠\n");
await Process.run('open', ['${Config.downloadPath}/builds']);
stdout.write("opening tencent reinforce 🛠\n");
await Process.run(
'open', ['https://console.cloud.tencent.com/ms/reinforce/upload']);
}
@Task()
rawBuild({bool verbose = false}) async {
String getLine = stdin.readLineSync();
stdout.write(getLine);
}
///
@Task()
sign() async {
stdout.write('start SIGN 🔑\n');
ProcessResult process = await Process.run(
Config.apksignerPath,
[
'sign',
'--ks',
Config.keystorePath,
'--ks-key-alias',
'alias',
'--ks-pass',
'pass:${Config.recookPassword}',
'--key-pass',
'pass:${Config.recookPassword}',
'--out',
'${Config.downloadPath}/builds/${Config.packageName}_release_signed.apk',
'${Config.downloadPath}/builds/${Config.packageName}_release.apk',
],
);
stdout.write(process.stdout);
stderr.write(process.stderr);
stdout.write('end SIGN 🔑\n');
}
@DefaultTask()
@Depends(test)
build() {
Pub.build();
}
@Task()
clean() => defaultClean();
Loading…
Cancel
Save