From 30131f0c39a87a811d0d425773793a59f151b65f Mon Sep 17 00:00:00 2001 From: Rohit Kushwaha Date: Wed, 29 Apr 2026 14:31:14 +0530 Subject: [PATCH 1/3] fix: hooks not working on free version --- hooks/post-process.js | 33 ++++++++++++++++--- .../android/com/foxdebug/system/System.java | 1 - 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/hooks/post-process.js b/hooks/post-process.js index 21c411934..729215414 100644 --- a/hooks/post-process.js +++ b/hooks/post-process.js @@ -30,6 +30,14 @@ enableStaticContext(); patchTargetSdkVersion(); enableKeyboardWorkaround(); +function getPackageName() { + const configPath = path.resolve(__dirname, '../config.xml'); + 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 +115,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 +147,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 +168,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 +200,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 +209,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 +226,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); } } ); From 89f537d56efee30f6517fd26479a7c81b8671f63 Mon Sep 17 00:00:00 2001 From: Rohit Kushvaha Date: Wed, 29 Apr 2026 14:53:02 +0530 Subject: [PATCH 2/3] Update hooks/post-process.js Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> --- hooks/post-process.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hooks/post-process.js b/hooks/post-process.js index 729215414..816d8a8d4 100644 --- a/hooks/post-process.js +++ b/hooks/post-process.js @@ -33,7 +33,7 @@ enableKeyboardWorkaround(); function getPackageName() { const configPath = path.resolve(__dirname, '../config.xml'); const content = fs.readFileSync(configPath, 'utf-8'); - const match = content.match(/id="([^"]+)"/); + const match = content.match(/]*\sid="([^"]+)"/); const packageName = match ? match[1] : 'com.foxdebug.acode'; return packageName; } From c6d2ea0eb32c58c3e2da5484d1694d23478998cb Mon Sep 17 00:00:00 2001 From: Rohit Kushvaha Date: Wed, 29 Apr 2026 14:56:06 +0530 Subject: [PATCH 3/3] Update post-process.js --- hooks/post-process.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hooks/post-process.js b/hooks/post-process.js index 816d8a8d4..e7a175ac3 100644 --- a/hooks/post-process.js +++ b/hooks/post-process.js @@ -32,8 +32,12 @@ 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(/]*\sid="([^"]+)"/); + const match = content.match(/id="([^"]+)"/); const packageName = match ? match[1] : 'com.foxdebug.acode'; return packageName; }