| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- "use strict";
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.compileApp = void 0;
- const path_1 = __importDefault(require("path"));
- const fs_extra_1 = __importDefault(require("fs-extra"));
- const kotlin_1 = require("../kotlin");
- const stacktrace_1 = require("../stacktrace");
- const utils_1 = require("../utils");
- const shared_1 = require("../shared");
- const DEFAULT_IMPORTS = [
- 'kotlinx.coroutines.async',
- 'kotlinx.coroutines.CoroutineScope',
- 'kotlinx.coroutines.Deferred',
- 'kotlinx.coroutines.Dispatchers',
- 'io.dcloud.uts.Map',
- 'io.dcloud.uts.UTSAndroid',
- 'io.dcloud.uts.*',
- 'io.dcloud.uts.framework.*',
- 'io.dcloud.uts.vue.*',
- 'io.dcloud.uts.vue.shared.*',
- 'io.dcloud.uts.vue.reactivity.*',
- 'io.dcloud.uniapp.runtime.*',
- ];
- async function compileApp(entry, options) {
- const { bundle, UTSTarget } = (0, utils_1.getUTSCompiler)();
- const imports = [...DEFAULT_IMPORTS];
- const { package: pkg, inputDir, outputDir, sourceMap, uni_modules, extApis, } = options;
- const input = {
- root: inputDir,
- filename: entry,
- paths: {
- vue: 'io.dcloud.uts.vue',
- },
- uniModules: uni_modules,
- globals: {
- envs: {
- // 自动化测试
- UNI_AUTOMATOR_WS_ENDPOINT: process.env.UNI_AUTOMATOR_WS_ENDPOINT || '',
- },
- },
- };
- const bundleOptions = {
- input,
- output: {
- isX: true,
- isPlugin: false,
- outDir: outputDir,
- package: pkg,
- sourceMap: sourceMap !== false ? (0, utils_1.resolveUTSSourceMapPath)() : false,
- extname: 'kt',
- imports,
- logFilename: true,
- noColor: true,
- transform: {
- uniExtApiDefaultNamespace: 'io.dcloud.uts.extapi',
- uniExtApiNamespaces: extApis,
- uvueClassNamePrefix: 'Gen',
- },
- },
- };
- const result = await bundle(UTSTarget.KOTLIN, bundleOptions);
- if (!result) {
- return;
- }
- if (result.error) {
- throw (0, stacktrace_1.parseUTSSyntaxError)(result.error, inputDir);
- }
- if (process.env.NODE_ENV !== 'development') {
- return runKotlinBuild(options, result);
- }
- return runKotlinDev(options, result);
- }
- exports.compileApp = compileApp;
- async function runKotlinDev(options, result) {
- result.type = 'kotlin';
- result.changed = [];
- const { inputDir, outputDir } = options;
- const kotlinFile = path_1.default.resolve(outputDir, result.filename);
- // 开发模式下,需要生成 dex
- if (fs_extra_1.default.existsSync(kotlinFile)) {
- const compilerServer = (0, utils_1.getCompilerServer)('uniapp-runextension');
- if (!compilerServer) {
- throw `项目使用了uts插件,正在安装 uts Android 运行扩展...`;
- }
- const { getDefaultJar, getKotlincHome, compile: compileDex, } = compilerServer;
- const cacheDir = process.env.HX_DEPENDENCIES_DIR || '';
- // time = Date.now()
- const jarFile = (0, kotlin_1.resolveJarPath)('app-android', '', '', kotlinFile);
- const options = {
- kotlinc: (0, kotlin_1.resolveKotlincArgs)(kotlinFile, jarFile, getKotlincHome(), getDefaultJar(2)
- .concat((0, kotlin_1.getUniModulesCacheJars)(cacheDir))
- .concat((0, kotlin_1.getUniModulesJars)(outputDir))),
- d8: (0, kotlin_1.resolveD8Args)(jarFile),
- sourceRoot: inputDir,
- sourceMapPath: (0, utils_1.resolveSourceMapFile)(outputDir, kotlinFile),
- };
- const res = await compileDex(options, inputDir);
- // console.log('dex compile time: ' + (Date.now() - time) + 'ms')
- if (res) {
- try {
- fs_extra_1.default.unlinkSync(jarFile);
- // 短期内先不删除,方便排查问题
- // fs.unlinkSync(kotlinFile)
- }
- catch (e) { }
- const dexFile = (0, kotlin_1.resolveDexFile)(jarFile);
- if (fs_extra_1.default.existsSync(dexFile)) {
- result.changed = [(0, shared_1.normalizePath)(path_1.default.relative(outputDir, dexFile))];
- }
- }
- }
- return result;
- }
- async function runKotlinBuild(options, result) {
- const { outputDir } = options;
- const kotlinFile = path_1.default.resolve(outputDir, result.filename);
- fs_extra_1.default.moveSync(kotlinFile, path_1.default.resolve(outputDir, '.uniappx/android/src/' + path_1.default.basename(result.filename)));
- }
|