diff --git a/hooks/post-process.js b/hooks/post-process.js index 21c411934..e7a175ac3 100644 --- a/hooks/post-process.js +++ b/hooks/post-process.js @@ -30,6 +30,18 @@ enableStaticContext(); patchTargetSdkVersion(); enableKeyboardWorkaround(); +function getPackageName() { + const configPath = path.resolve(__dirname, '../config.xml'); + if (!fs.existsSync(configPath)) { + console.warn('[Cordova Hook] ⚠️ config.xml not found at', configPath); + throw new Error(`config.xml is missing at ${configPath}`); + } + const content = fs.readFileSync(configPath, 'utf-8'); + const match = content.match(/id="([^"]+)"/); + const packageName = match ? match[1] : 'com.foxdebug.acode'; + return packageName; +} + function getTmpDir() { const tmpdirEnv = process.env.TMPDIR; @@ -107,11 +119,17 @@ function enableLegacyJni() { const prefix = execSync('npm prefix').toString().trim(); const gradleFile = path.join(prefix, 'platforms/android/app/build.gradle'); - if (!fs.existsSync(gradleFile)) return; + if (!fs.existsSync(gradleFile)){ + console.warn('[Cordova Hook] ⚠️ build.gradle not found'); + return + }; let content = fs.readFileSync(gradleFile, 'utf-8'); // Check for correct block to avoid duplicate insertion - if (content.includes('useLegacyPackaging = true')) return; + if (content.includes('useLegacyPackaging = true')){ + console.log('[Cordova Hook] ✅ Legacy JNI packaging already enabled, skipping'); + return + }; // Inject under android block with correct Groovy syntax content = content.replace(/android\s*{/, match => { @@ -133,12 +151,16 @@ function enableLegacyJni() { function enableStaticContext() { try { const prefix = execSync('npm prefix').toString().trim(); + const packageName = getPackageName(); const mainActivityPath = path.join( prefix, - 'platforms/android/app/src/main/java/com/foxdebug/acode/MainActivity.java' + 'platforms/android/app/src/main/java', + packageName.replace(/\./g, '/'), + 'MainActivity.java' ); if (!fs.existsSync(mainActivityPath)) { + console.warn('[Cordova Hook] ⚠️ MainActivity.java not found at', mainActivityPath); return; } @@ -150,6 +172,7 @@ function enableStaticContext() { content.includes('public static Context getContext()') && content.includes('weakContext = new WeakReference<>(this);') ) { + console.log('[Cordova Hook] ✅ Static context already enabled, skipping'); return; } @@ -181,6 +204,7 @@ function enableStaticContext() { ); fs.writeFileSync(mainActivityPath, content, 'utf-8'); + console.log('[Cordova Hook] ✅ Enabled static context'); } catch (err) { console.error('[Cordova Hook] ❌ Failed to patch MainActivity:', err.message); } @@ -189,12 +213,16 @@ function enableStaticContext() { function enableKeyboardWorkaround() { try{ const prefix = execSync('npm prefix').toString().trim(); + const packageName = getPackageName(); const mainActivityPath = path.join( prefix, - 'platforms/android/app/src/main/java/com/foxdebug/acode/MainActivity.java' + 'platforms/android/app/src/main/java', + packageName.replace(/\./g, '/'), + 'MainActivity.java' ); if (!fs.existsSync(mainActivityPath)) { + console.warn('[Cordova Hook] ⚠️ MainActivity.java not found at', mainActivityPath); return; } @@ -202,6 +230,7 @@ function enableKeyboardWorkaround() { // Skip if already patched if (content.includes('SoftInputAssist')) { + console.log('[Cordova Hook] ✅ Keyboard workaround already enabled, skipping'); return; } diff --git a/src/plugins/system/android/com/foxdebug/system/System.java b/src/plugins/system/android/com/foxdebug/system/System.java index 7677869a9..492dee90a 100644 --- a/src/plugins/system/android/com/foxdebug/system/System.java +++ b/src/plugins/system/android/com/foxdebug/system/System.java @@ -138,7 +138,6 @@ public void initialize(CordovaInterface cordova, CordovaWebView webView) { @Override public void run() { setNativeContextMenuDisabled(false); - new SoftInputAssist(activity); } } );