diff --git a/packages/playground/uts/unpackage/dist/app-plus/uni_modules/test-uniplugin/app-android/index b/packages/playground/uts/unpackage/dist/app-plus/uni_modules/test-uniplugin/app-android/index new file mode 100644 index 0000000000000000000000000000000000000000..e0eaad93c21de5731730733a8cb0220a358962f1 --- /dev/null +++ b/packages/playground/uts/unpackage/dist/app-plus/uni_modules/test-uniplugin/app-android/index @@ -0,0 +1,13 @@ +import android.util.Log; +fun login(name: String, pwd: String): UtsJSONObject { + return object : UtsJSONObject() { + var name = name + var pwd = pwd + }; +} +open class User { + open suspend fun login(name: String, pwd: String) = CoroutineScope(Dispatchers.Default).async { + login(name, pwd); + Log.info("123"); + } +} diff --git a/packages/uni-uts-vite/src/plugins/v1.ts b/packages/uni-uts-vite/src/plugins/v1.ts index 66d9978e88a03a015690819d23002c88842033b4..c883bd7961a864cd262b2a839df72921ac5699f9 100644 --- a/packages/uni-uts-vite/src/plugins/v1.ts +++ b/packages/uni-uts-vite/src/plugins/v1.ts @@ -25,6 +25,7 @@ import { compile, parsePackage } from '../utils/compiler' export function uniUtsV1Plugin(): Plugin { // 目前仅支持 app-android process.env.UNI_APP_PLATFORM = 'app-android' + let isFirst = true return { name: 'uni:uts-v1', apply: 'build', @@ -59,9 +60,24 @@ const pkg = '${pkg}' const cls = 'IndexKt' ${genProxyCode(ast)} ` - await compile(id) + const dexFile = await compile(id) + if (!isFirst && dexFile) { + const files = [] + if (process.env.UNI_APP_CHANGED_DEX_FILES) { + try { + files.push(...JSON.parse(process.env.UNI_APP_CHANGED_DEX_FILES)) + } catch (e) {} + } + files.push(dexFile) + process.env.UNI_APP_CHANGED_DEX_FILES = JSON.stringify([ + ...new Set(files), + ]) + } return code }, + buildEnd() { + isFirst = false + }, } } @@ -216,7 +232,7 @@ function genVariableDeclarationCode(decl: VariableDeclaration) { return false }) ) { - return `${decl.kind} ${decl.declarations + return `export ${decl.kind} ${decl.declarations .map((d) => `${(d.id as Identifier).value} = ${genInitCode(d.init!)}`) .join(', ')}` } diff --git a/packages/uni-uts-vite/src/utils/compiler.ts b/packages/uni-uts-vite/src/utils/compiler.ts index 416c7e7f834c8457c45a9df8fa2c520890ac4381..4a5793212a17b7e0893c2dee911f12f84793acea 100644 --- a/packages/uni-uts-vite/src/utils/compiler.ts +++ b/packages/uni-uts-vite/src/utils/compiler.ts @@ -80,11 +80,19 @@ export async function compile(filename: string) { // 短期内先不删除,方便排查问题 // fs.unlinkSync(kotlinFile) } catch (e) {} + const dexFile = resolveDexFile(jarFile) + if (fs.existsSync(dexFile)) { + return normalizePath(path.relative(outputDir, dexFile)) + } } } } } +function resolveDexFile(jarFile: string) { + return normalizePath(path.resolve(path.dirname(jarFile), 'classes.dex')) +} + function resolveKotlinFile( filename: string, inputDir: string, diff --git a/packages/vite-plugin-uni/src/cli/action.ts b/packages/vite-plugin-uni/src/cli/action.ts index 8170f7e1eedf846b66f499ac0a7350fe31f62745..b22a52a5664e653160c66f303cccc4fa632d197a 100644 --- a/packages/vite-plugin-uni/src/cli/action.ts +++ b/packages/vite-plugin-uni/src/cli/action.ts @@ -45,10 +45,15 @@ export async function runDev(options: CliOptions & ServerOptions) { } const files = process.env.UNI_APP_CHANGED_FILES const pages = process.env.UNI_APP_CHANGED_PAGES + const dex = process.env.UNI_APP_CHANGED_DEX_FILES const changedFiles = pages || files process.env.UNI_APP_CHANGED_PAGES = '' process.env.UNI_APP_CHANGED_FILES = '' - if (changedFiles && !changedFiles.includes(APP_CONFIG_SERVICE)) { + process.env.UNI_APP_CHANGED_DEX_FILES = '' + if ( + (changedFiles && !changedFiles.includes(APP_CONFIG_SERVICE)) || + dex + ) { if (pages) { return output( 'log', @@ -57,7 +62,14 @@ export async function runDev(options: CliOptions & ServerOptions) { } return output( 'log', - M['dev.watching.end.files'].replace('{files}', changedFiles) + M['dev.watching.end.files'].replace( + '{files}', + JSON.stringify( + JSON.parse(changedFiles || JSON.stringify([])).concat( + JSON.parse(dex || JSON.stringify([])) + ) + ) + ) ) } return output('log', M['dev.watching.end'])