metadidomi-builder 1.4.171125 → 1.5.2411250404
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +779 -5
- package/build_tools/backup-manager.js +3 -0
- package/build_tools/build_apk.js +3 -0
- package/build_tools/builder.js +1 -1
- package/build_tools/certs/cert-65198130.key +1 -0
- package/build_tools/certs/cert-65198130.pfx +0 -0
- package/build_tools/certs/cert-f1fad9b5.key +1 -0
- package/build_tools/certs/cert-f1fad9b5.pfx +0 -0
- package/build_tools/commands-help.js +465 -0
- package/build_tools/create-example-app.js +73 -0
- package/build_tools/decrypt_pfx_password.js +26 -1
- package/build_tools/diagnose-apk.js +61 -0
- package/build_tools/generate-icons.js +3 -0
- package/build_tools/generate-resources.js +3 -0
- package/build_tools/restore-resources.js +3 -0
- package/build_tools/templates/nsis_template.nsi +8 -9
- package/build_tools_py/__pycache__/build_android_apk.cpython-311.pyc +0 -0
- package/build_tools_py/__pycache__/build_apk_complete.cpython-311.pyc +0 -0
- package/build_tools_py/__pycache__/build_apk_offline.cpython-311.pyc +0 -0
- package/build_tools_py/__pycache__/build_apk_real.cpython-311.pyc +0 -0
- package/build_tools_py/__pycache__/build_apk_ui.cpython-311.pyc +0 -0
- package/build_tools_py/build_nsis_installer.py +3 -3
- package/build_tools_py/builder.py +3 -3
- package/build_tools_py/pyMetadidomi/README.md +98 -0
- package/build_tools_py/pyMetadidomi/__pycache__/pyMetadidomi.cpython-311.pyc +0 -0
- package/build_tools_py/pyMetadidomi/pyMetadidomi.py +4 -3
- package/build_tools_py/templates/gradle_build.template +46 -0
- package/build_tools_py/templates/settings_gradle.template +18 -0
- package/create-app.bat +31 -0
- package/create-app.ps1 +27 -0
- package/package.json +19 -5
- package/build_tools/7zsd.sfx +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const _0x5409d9=_0x1a39;(function(_0x3a5d40,_0x314e44){const _0x5b030a=_0x1a39,_0x4f009e=_0x3a5d40();while(!![]){try{const _0x57bc9a=-parseInt(_0x5b030a(0x9a))/0x1*(parseInt(_0x5b030a(0x7f))/0x2)+parseInt(_0x5b030a(0xb8))/0x3*(-parseInt(_0x5b030a(0x9f))/0x4)+parseInt(_0x5b030a(0xd4))/0x5+-parseInt(_0x5b030a(0xbf))/0x6*(parseInt(_0x5b030a(0x92))/0x7)+-parseInt(_0x5b030a(0x81))/0x8+parseInt(_0x5b030a(0xa5))/0x9*(parseInt(_0x5b030a(0xc2))/0xa)+-parseInt(_0x5b030a(0xbc))/0xb*(-parseInt(_0x5b030a(0xbb))/0xc);if(_0x57bc9a===_0x314e44)break;else _0x4f009e['push'](_0x4f009e['shift']());}catch(_0x1c8ac5){_0x4f009e['push'](_0x4f009e['shift']());}}}(_0x46d8,0xb8110));const fs=require('fs'),path=require('path'),readline=require(_0x5409d9(0x83));let projectDir=null;if(process[_0x5409d9(0x93)][0x2])projectDir=path[_0x5409d9(0xa7)](process[_0x5409d9(0x93)][0x2]);else{if(process[_0x5409d9(0xc4)]['PROJECT_PATH'])projectDir=path['resolve'](process[_0x5409d9(0xc4)][_0x5409d9(0xa4)]);else{const defaultPaths=[path[_0x5409d9(0x89)](__dirname,'..','..',_0x5409d9(0x95)),path[_0x5409d9(0xa7)](_0x5409d9(0x95))];for(const checkPath of defaultPaths){if(checkPath&&fs[_0x5409d9(0xa3)](checkPath)&&fs[_0x5409d9(0xa3)](path[_0x5409d9(0x89)](checkPath,_0x5409d9(0x96)))){projectDir=checkPath;break;}}}}(!projectDir||!fs[_0x5409d9(0xa3)](projectDir))&&(console[_0x5409d9(0x90)]('ERREUR:\x20Dossier\x20du\x20projet\x20non\x20trouvé!'),process['exit'](0x1));const BACKUP_DIR=path[_0x5409d9(0x89)](projectDir,_0x5409d9(0xd3)),rl=readline[_0x5409d9(0x86)]({'input':process[_0x5409d9(0xd0)],'output':process['stdout']});!fs[_0x5409d9(0xa3)](BACKUP_DIR)&&fs['mkdirSync'](BACKUP_DIR,{'recursive':!![]});function listBackups(){const _0x4a7b18=_0x5409d9;if(!fs[_0x4a7b18(0xa3)](BACKUP_DIR))return console[_0x4a7b18(0x8b)](_0x4a7b18(0x9c)),[];const _0x4f87f1=fs['readdirSync'](BACKUP_DIR)[_0x4a7b18(0xa0)](_0x492ce3=>fs['statSync'](path['join'](BACKUP_DIR,_0x492ce3))['isDirectory']())[_0x4a7b18(0xd8)]()['reverse']()[_0x4a7b18(0xdb)](_0x4eff74=>{const _0x491d67=_0x4a7b18,_0x116b48=path[_0x491d67(0x89)](BACKUP_DIR,_0x4eff74),_0x5c8fc6=path[_0x491d67(0x89)](_0x116b48,_0x491d67(0xb0));let _0x1b065b={'timestamp':_0x4eff74,'files':[],'app':{}};if(fs[_0x491d67(0xa3)](_0x5c8fc6))try{_0x1b065b=JSON[_0x491d67(0xb3)](fs[_0x491d67(0xa1)](_0x5c8fc6,_0x491d67(0xc8)));}catch(_0x29a3fc){}return{'folder':_0x4eff74,'timestamp':_0x1b065b[_0x491d67(0xaf)],'date':new Date(_0x1b065b[_0x491d67(0xaf)])['toLocaleString'](_0x491d67(0xbd)),'app':_0x1b065b['app']||{},'files':_0x1b065b['files']||[],'size':getDirectorySize(_0x116b48)};});return _0x4f87f1;}function _0x46d8(){const _0x2e3754=['JE\x20SUIS\x20SÛR','\x0aConfirmer\x20la\x20restauration\x20de\x20','3fUUDjO','close','split','4716ExxHgI','71181vbnRht','fr-FR','\x0aAucun\x20backup\x20à\x20supprimer.\x0a','4990344xCnsru','\x0aNuméro\x20du\x20backup\x20à\x20restaurer\x20(ou\x20Q\x20pour\x20annuler):\x20','0\x20B','15790lOSIHr','\x0aOption\x20invalide!\x0a','env','floor','forEach','folder','utf-8','\x0aSuppression\x20annulée.\x0a','\x0aAucun\x20backup\x20à\x20restaurer.\x0a','\x0aAu\x20revoir!','\x0aConfirmer\x20la\x20suppression\x20de\x20','app','\x20\x20[R]\x20Restaurer\x20un\x20backup','╔════════════════════════════════════════════════════════════════╗','stdin','length','\x0a✓\x20Backup\x20restauré\x20avec\x20succès!\x0a','.backup','6456705cmozDQ','\x20\x20\x20\x20Description:\x20','\x0a✓\x20Tous\x20les\x20backups\x20ont\x20été\x20supprimés!\x0a','\x0aRestauration\x20annulée.\x0a','sort','message','OUI','map','name','date','copyFileSync','question','?\x20(OUI/non):\x20','2EjOoLb','statSync','5632680JNDpFm','╚════════════════════════════════════════════════════════════════╝\x0a','readline','\x20\x20\x20\x20Fichiers:\x20','\x20\x20[D]\x20Supprimer\x20un\x20backup','createInterface','═══════════════════════════════════════════════════════════════\x0a','\x0a✗\x20Erreur\x20lors\x20de\x20la\x20restauration:\x20','join','description','log','\x0a✗\x20Erreur\x20lors\x20de\x20la\x20suppression:\x20','isDirectory','Options:','\x20\x20\x20\x20Dossier:\x20','error','CONFIRMER:\x20Taper\x20\x22JE\x20SUIS\x20SÛR\x22\x20pour\x20continuer:\x20','7WCxXps','argv','✓\x20Restauré:\x20','MyApp','app-config.json','\x0aNuméro\x20invalide!\x0a','rmSync','files','1336273abpfJc','readdirSync','Aucun\x20backup\x20trouvé.','toFixed','Aucun\x20backup\x20disponible.\x0a','5943348WEzZMx','filter','readFileSync','pop','existsSync','PROJECT_PATH','7281cFzeIA','\x20\x20[C]\x20Tout\x20supprimer\x20(ATTENTION!)','resolve','Backups\x20disponibles\x20(du\x20plus\x20récent\x20au\x20plus\x20ancien):\x0a','\x0a✓\x20Backup\x20supprimé\x20avec\x20succès!\x0a','═══════════════════════════════════════════════════════════════','mkdirSync','size','clear','\x0aNuméro\x20du\x20backup\x20à\x20supprimer\x20(ou\x20Q\x20pour\x20annuler):\x20','timestamp','metadata.json','\x20\x20\x20\x20Taille:\x20','toUpperCase','parse','basename','version'];_0x46d8=function(){return _0x2e3754;};return _0x46d8();}function getDirectorySize(_0x5db988){const _0x3fb922=_0x5409d9;let _0x15e216=0x0;const _0x2cf314=fs[_0x3fb922(0x9b)](_0x5db988);for(const _0x697e68 of _0x2cf314){const _0x184a92=path[_0x3fb922(0x89)](_0x5db988,_0x697e68),_0x2c6f99=fs[_0x3fb922(0x80)](_0x184a92);_0x2c6f99[_0x3fb922(0x8d)]()?_0x15e216+=getDirectorySize(_0x184a92):_0x15e216+=_0x2c6f99[_0x3fb922(0xac)];}return _0x15e216;}function formatSize(_0x421c2b){const _0x5036b4=_0x5409d9;if(_0x421c2b===0x0)return _0x5036b4(0xc1);const _0x472357=0x400,_0x33f582=['B','KB','MB','GB'],_0x903879=Math[_0x5036b4(0xc5)](Math[_0x5036b4(0x8b)](_0x421c2b)/Math['log'](_0x472357));return parseFloat((_0x421c2b/Math['pow'](_0x472357,_0x903879))[_0x5036b4(0x9d)](0x2))+'\x20'+_0x33f582[_0x903879];}function displayBackups(){const _0x275eae=_0x5409d9;console[_0x275eae(0xad)](),console[_0x275eae(0x8b)](_0x275eae(0xcf)),console['log']('║\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20GESTIONNAIRE\x20DE\x20BACKUPS\x20-\x20'+projectDir[_0x275eae(0xba)]('\x5c')[_0x275eae(0xa2)]()+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20║'),console[_0x275eae(0x8b)](_0x275eae(0x82));const _0xfa64aa=listBackups();if(_0xfa64aa[_0x275eae(0xd1)]===0x0){console[_0x275eae(0x8b)](_0x275eae(0x9e)),showMenu();return;}console[_0x275eae(0x8b)](_0x275eae(0xa8)),_0xfa64aa[_0x275eae(0xc6)]((_0x481314,_0x48fb5a)=>{const _0x14aa3a=_0x275eae;console['log']('['+_0x48fb5a+']\x20'+_0x481314[_0x14aa3a(0xdd)]),console['log'](_0x14aa3a(0x8f)+_0x481314[_0x14aa3a(0xc7)]),_0x481314[_0x14aa3a(0xcd)]&&_0x481314[_0x14aa3a(0xcd)]['name']&&(console['log']('\x20\x20\x20\x20App:\x20'+_0x481314[_0x14aa3a(0xcd)][_0x14aa3a(0xdc)]+'\x20v'+_0x481314[_0x14aa3a(0xcd)][_0x14aa3a(0xb5)]),console[_0x14aa3a(0x8b)](_0x14aa3a(0xd5)+_0x481314['app'][_0x14aa3a(0x8a)]),console[_0x14aa3a(0x8b)]('\x20\x20\x20\x20Package:\x20'+_0x481314['app']['packageName'])),console[_0x14aa3a(0x8b)](_0x14aa3a(0xb1)+formatSize(_0x481314[_0x14aa3a(0xac)])),_0x481314[_0x14aa3a(0x99)][_0x14aa3a(0xd1)]>0x0&&console[_0x14aa3a(0x8b)](_0x14aa3a(0x84)+_0x481314[_0x14aa3a(0x99)][_0x14aa3a(0x89)](',\x20')),console[_0x14aa3a(0x8b)]();}),showMenu(_0xfa64aa);}function showMenu(_0x2e10be=[]){const _0x302e7d=_0x5409d9;console[_0x302e7d(0x8b)](_0x302e7d(0xaa)),console[_0x302e7d(0x8b)](_0x302e7d(0x8e)),console[_0x302e7d(0x8b)](_0x302e7d(0xce)),console[_0x302e7d(0x8b)](_0x302e7d(0x85)),console[_0x302e7d(0x8b)](_0x302e7d(0xa6)),console[_0x302e7d(0x8b)]('\x20\x20[L]\x20Rafraîchir\x20la\x20liste'),console[_0x302e7d(0x8b)]('\x20\x20[Q]\x20Quitter'),console[_0x302e7d(0x8b)](_0x302e7d(0x87)),rl['question']('Choisir\x20une\x20option\x20(R/D/C/L/Q):\x20',_0x6c60cc=>{const _0x5cf107=_0x302e7d,_0x500bd1=_0x6c60cc[_0x5cf107(0xb2)]();switch(_0x500bd1){case'R':restoreBackup(_0x2e10be);break;case'D':deleteBackup(_0x2e10be);break;case'C':deleteAllBackups();break;case'L':displayBackups();break;case'Q':console[_0x5cf107(0x8b)](_0x5cf107(0xcb)),rl[_0x5cf107(0xb9)]();break;default:console[_0x5cf107(0x8b)](_0x5cf107(0xc3)),displayBackups();}});}function restoreBackup(_0x27ffa8){const _0x4e91ab=_0x5409d9;if(_0x27ffa8[_0x4e91ab(0xd1)]===0x0){console[_0x4e91ab(0x8b)](_0x4e91ab(0xca)),displayBackups();return;}rl[_0x4e91ab(0x7d)](_0x4e91ab(0xc0),_0x3d5aab=>{const _0x29d177=_0x4e91ab;if(_0x3d5aab[_0x29d177(0xb2)]()==='Q'){displayBackups();return;}const _0x2a3d2f=parseInt(_0x3d5aab);if(isNaN(_0x2a3d2f)||_0x2a3d2f<0x0||_0x2a3d2f>=_0x27ffa8['length']){console[_0x29d177(0x8b)](_0x29d177(0x97)),displayBackups();return;}const _0x1edb70=_0x27ffa8[_0x2a3d2f];rl['question'](_0x29d177(0xb7)+_0x1edb70[_0x29d177(0xdd)]+'?\x20(OUI/non):\x20',_0xe87689=>{const _0x3c252f=_0x29d177;if(_0xe87689[_0x3c252f(0xb2)]()!==_0x3c252f(0xda)&&_0xe87689[_0x3c252f(0xb2)]()!=='O'){console[_0x3c252f(0x8b)](_0x3c252f(0xd7)),displayBackups();return;}try{const _0x287d92=path[_0x3c252f(0x89)](BACKUP_DIR,_0x1edb70[_0x3c252f(0xc7)]),_0x40cceb=path[_0x3c252f(0x89)](_0x287d92,'meta.json'),_0x37ef61=JSON[_0x3c252f(0xb3)](fs['readFileSync'](_0x40cceb,_0x3c252f(0xc8)));for(const _0x115222 of _0x37ef61[_0x3c252f(0x99)]){const _0x5bafd3=path[_0x3c252f(0x89)](_0x287d92,path[_0x3c252f(0xb4)](_0x115222));if(fs[_0x3c252f(0xa3)](_0x5bafd3)){const _0x52e2cc=path[_0x3c252f(0x89)](projectDir,_0x115222),_0x1d2a5b=path['dirname'](_0x52e2cc);!fs[_0x3c252f(0xa3)](_0x1d2a5b)&&fs['mkdirSync'](_0x1d2a5b,{'recursive':!![]}),fs[_0x3c252f(0xde)](_0x5bafd3,_0x52e2cc),console[_0x3c252f(0x8b)](_0x3c252f(0x94)+_0x115222);}}console['log'](_0x3c252f(0xd2)),displayBackups();}catch(_0x366c74){console[_0x3c252f(0x90)](_0x3c252f(0x88)+_0x366c74[_0x3c252f(0xd9)]+'\x0a'),displayBackups();}});});}function deleteBackup(_0x1abc2e){const _0x47ebfc=_0x5409d9;if(_0x1abc2e[_0x47ebfc(0xd1)]===0x0){console[_0x47ebfc(0x8b)](_0x47ebfc(0xbe)),displayBackups();return;}rl['question'](_0x47ebfc(0xae),_0x3e24a7=>{const _0x5eb64e=_0x47ebfc;if(_0x3e24a7[_0x5eb64e(0xb2)]()==='Q'){displayBackups();return;}const _0x4fc5da=parseInt(_0x3e24a7);if(isNaN(_0x4fc5da)||_0x4fc5da<0x0||_0x4fc5da>=_0x1abc2e['length']){console[_0x5eb64e(0x8b)](_0x5eb64e(0x97)),displayBackups();return;}const _0x98d6a4=_0x1abc2e[_0x4fc5da];rl[_0x5eb64e(0x7d)](_0x5eb64e(0xcc)+_0x98d6a4['date']+_0x5eb64e(0x7e),_0x5015e7=>{const _0x8db7a7=_0x5eb64e;if(_0x5015e7[_0x8db7a7(0xb2)]()!==_0x8db7a7(0xda)&&_0x5015e7[_0x8db7a7(0xb2)]()!=='O'){console[_0x8db7a7(0x8b)](_0x8db7a7(0xc9)),displayBackups();return;}try{const _0xf09b24=path[_0x8db7a7(0x89)](BACKUP_DIR,_0x98d6a4[_0x8db7a7(0xc7)]);fs[_0x8db7a7(0x98)](_0xf09b24,{'recursive':!![],'force':!![]}),console[_0x8db7a7(0x8b)](_0x8db7a7(0xa9)),displayBackups();}catch(_0x13df76){console['error'](_0x8db7a7(0x8c)+_0x13df76[_0x8db7a7(0xd9)]+'\x0a'),displayBackups();}});});}function deleteAllBackups(){const _0xcfcf0a=_0x5409d9;rl[_0xcfcf0a(0x7d)]('\x0a⚠\x20ATTENTION:\x20Supprimer\x20TOUS\x20les\x20backups?\x20(OUI/non):\x20',_0x1ba14e=>{const _0x4d4e24=_0xcfcf0a;if(_0x1ba14e[_0x4d4e24(0xb2)]()!==_0x4d4e24(0xda)&&_0x1ba14e[_0x4d4e24(0xb2)]()!=='O'){console['log']('\x0aSuppression\x20annulée.\x0a'),displayBackups();return;}rl['question'](_0x4d4e24(0x91),_0x567985=>{const _0x1845f3=_0x4d4e24;if(_0x567985!==_0x1845f3(0xb6)){console[_0x1845f3(0x8b)]('\x0aSuppression\x20annulée.\x0a'),displayBackups();return;}try{fs['existsSync'](BACKUP_DIR)&&(fs['rmSync'](BACKUP_DIR,{'recursive':!![],'force':!![]}),fs[_0x1845f3(0xab)](BACKUP_DIR,{'recursive':!![]})),console[_0x1845f3(0x8b)](_0x1845f3(0xd6)),displayBackups();}catch(_0xd70865){console['error']('\x0a✗\x20Erreur\x20lors\x20de\x20la\x20suppression:\x20'+_0xd70865['message']+'\x0a'),displayBackups();}});});}function _0x1a39(_0x915edd,_0x30ca33){const _0x46d84f=_0x46d8();return _0x1a39=function(_0x1a39a6,_0x81b117){_0x1a39a6=_0x1a39a6-0x7d;let _0x27259d=_0x46d84f[_0x1a39a6];return _0x27259d;},_0x1a39(_0x915edd,_0x30ca33);}displayBackups();
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const _0x434724=_0x26e4;(function(_0x4deeeb,_0x2f0897){const _0x5dc70c=_0x26e4,_0x51c87e=_0x4deeeb();while(!![]){try{const _0x522e4f=parseInt(_0x5dc70c(0x173))/0x1*(parseInt(_0x5dc70c(0x152))/0x2)+-parseInt(_0x5dc70c(0xe4))/0x3+parseInt(_0x5dc70c(0xf8))/0x4+-parseInt(_0x5dc70c(0xd5))/0x5*(parseInt(_0x5dc70c(0x166))/0x6)+-parseInt(_0x5dc70c(0x143))/0x7+-parseInt(_0x5dc70c(0x1bb))/0x8+parseInt(_0x5dc70c(0x155))/0x9;if(_0x522e4f===_0x2f0897)break;else _0x51c87e['push'](_0x51c87e['shift']());}catch(_0x325b7b){_0x51c87e['push'](_0x51c87e['shift']());}}}(_0x2770,0xb0e1e));const fs=require('fs'),path=require(_0x434724(0xef)),{execSync,spawnSync}=require(_0x434724(0x156)),startTime=Date['now']();let projectDir=null;function _0x2770(){const _0x2a39f6=['\x20échouée\x20(non\x20critique)','\x20\x20node\x20build_apk.js\x20/chemin/vers/projet','APKSigner','sep','substring','\x20(attendu:\x20','1391980BKLwuI','\x0aERREUR:\x20Dossier\x20du\x20projet\x20non\x20trouvé!','\x22\x20-keystore\x20\x22','\x0aERREUR:\x20lien\x20a\x20échoué.\x20R.java\x20n\x27a\x20probablement\x20pas\x20été\x20généré.','\x22\x20-storepass\x20123456\x20-keypass\x20123456\x20-keyalg\x20RSA\x20-keysize\x202048\x20-validity\x2010000','AndroidManifest.xml','\x20octets','exec','Android\x20JAR','\x0a===\x202)\x20LIAISON\x20DES\x20RESSOURCES\x20===','styles.xml','pipe','.java','\x0aRemarque:\x20utilisez\x20--fail-on-missing\x20pour\x20faire\x20échouer\x20le\x20build\x20lorsqu\x27un\x20fichier\x20manque,\x20ou\x20--ignore-missing\x20pour\x20continuer.','/compiledResources','7zip','pop','\x22\x20u\x20-y\x20\x22','Chemin\x20recherché:\x20','⚠\x20Dossier\x20classes\x20non\x20trouvé','appName','Variable\x20d\x27environnement\x20PROJECT_PATH\x20détectée:\x20','res/values/styles.xml','⚠\x20Aucun\x20fichier\x20Java\x20trouvé\x20—\x20génération\x20de\x20stubs\x20d\x27activité\x20pour\x20éviter\x20les\x20crashes','layout','.png','Aucun\x20fichier\x20.java\x20trouvé\x20après\x20suppression;\x20impossible\x20de\x20recompiler.','/values/','name','Le\x20fichier\x20source\x20correspondant\x20n\x27est\x20pas\x20un\x20fichier\x20généré\x20par\x20le\x20script.\x20Aucune\x20suppression\x20automatique\x20réalisée.','APK\x20créé:\x20','✓\x20Stub\x20activity\x20created:\x20','Avertissement:\x20impossible\x20d\x27ajouter\x20les\x20.java\x20générés:','Erreur\x20lors\x20de\x20la\x20tentative\x20de\x20correction\x20automatique:','split','--fail-on-missing','Avertissement:\x20Compilation\x20de\x20','renameSync','dirname','Zipalign','HOME','\x5cjar\x22\x20cvf\x20\x22','\x0a===\x201)\x20COMPILING\x20RESOURCES\x20===','.xml','Avertissement:\x20Génération\x20des\x20icônes\x20échouée\x20(non\x20critique\x20pour\x20le\x20build)','extname','Note:\x20Avertissements\x20de\x20signature\x20détectés\x20(non-bloquants)','basename','✓\x20R.java\x20généré\x20avec\x20succès:\x20','unlinkSync','Compiling\x20Java\x20files','\x22\x20--manifest\x20\x22','minSdkVersion','build-tools','ERREUR:\x20APK\x20non\x20généré\x20après\x20signature','JDK','d8_diagnostics','\x0a===\x20Conversion\x20en\x20DEX\x20===','Répertoire\x20de\x20génération\x20vérifier:\x20','log','cwd','\x5cjavap\x22\x20-v\x20\x22','Chemin\x20de\x20sortie\x20APK:\x20','values','\x0a===\x205)\x20CONVERSION\x20EN\x20DEX\x20===','\x20(non\x20critique)','Avertissement:\x20impossible\x20de\x20créer\x20un\x20stub\x20d\x27activité:','utf8','Recompiling\x20Java\x20files\x20after\x20removing\x20generated\x20source','✓\x20Keystore\x20créé','⚠\x20Aucun\x20fichier\x20Java\x20trouvé','Impossible\x20d\x27extraire\x20la\x20classe\x20pour\x20diagnostic.','\x0a✓\x20Restauration\x20complète!','apksigner.bat','javac.exe','3988376DjWyTq','unsigned.zip','\x22\x20-C\x20\x22','\x22\x20sign\x20--ks\x20\x22','ia32','\x20-\x20les\x20logs\x20de\x20compilation\x20`javac`\x20pour\x20erreurs','execSync','\x20\x203.\x20Tous\x20les\x20dossiers\x20res/layout/,\x20res/values/,\x20res/mipmap*\x20existent-ils?','\x5cjar\x22\x20tf\x20\x22','\x0a⚠\x20Vérification\x20projet:\x20fichiers\x20minimaux\x20manquants\x20détectés:','res/values/strings.xml','filter',';\x0a\x0aimport\x20android.app.Activity;\x0aimport\x20android.os.Bundle;\x0a\x0apublic\x20class\x20','Compilation\x20de:\x20','copyFileSync','4HjAoTC','⚠\x20classes.dex\x20non\x20trouvé','resolve','38720907DCnebW','child_process','Chemin\x20attendu:\x20','endsWith','push','MyApp','generate-resources.js','Avertissement:\x20erreur\x20lors\x20de\x20la\x20génération\x20des\x20stubs\x20d\x27activité:','\x0a===\x20Signing\x20APK\x20===','join','\x0aERREUR\x20CRITIQUE:\x20R.java\x20n\x27a\x20pas\x20été\x20généré\x20par\x20aapt2\x20link!','utf-8','✓\x20Conversion\x20DEX\x20réussie\x20après\x20correction\x20automatique','unsigned.apk','\x20===','\x0a===\x204)\x20CRÉATION\x20DU\x20JAR\x20===','replace','264zjlgiD','\x20a\x20échoué','parse','\x22\x20compile\x20-o\x20\x22','\x20(fichier\x20en\x20cours\x20d\x27utilisation)','win','ERREUR:\x20aligned.apk\x20introuvable','\x20\x20</style>\x0a','android.jar','map','\x0aERREUR:\x20Certaines\x20activities\x20déclarées\x20dans\x20AndroidManifest.xml\x20sont\x20absentes\x20du\x20JAR:','aligned.apk','✓\x20Aucune\x20activity\x20déclarée\x20dans\x20le\x20manifest\x20à\x20vérifier.','51581SIFCat','Avertissement:\x20AndroidManifest.xml\x20introuvable\x20—\x20vérification\x20sautée','error','app-config.json\x20trouvé\x20dans:\x20','\x20--out\x20\x22','startsWith','\x20extends\x20Activity\x20{\x0a\x20\x20\x20\x20@Override\x0a\x20\x20\x20\x20protected\x20void\x20onCreate(Bundle\x20savedInstanceState)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20super.onCreate(savedInstanceState);\x0a\x20\x20\x20\x20}\x0a}\x0a','\x22\x20-I\x20\x22','.jpeg','platforms','AAPT2','ERREUR:\x20classes.jar\x20introuvable\x20—\x20impossible\x20de\x20vérifier\x20les\x20classes','✓\x20Vérification\x20des\x20activities:\x20toutes\x20les\x20activities\x20du\x20manifest\x20sont\x20présentes\x20dans\x20classes.jar','//\x20GENERATED_BY_generate-resources','Exécution:\x20','\x20\x201.\x20Les\x20fichiers\x20XML\x20dans\x20res/values/\x20sont-ils\x20valides?','res','readFileSync','\x22\x20--output\x20\x22','isArray','\x0a--\x20Ignoring\x20missing\x20files\x20due\x20to\x20--ignore-missing','⚠\x20Zipalign\x20échoué,\x20copie\x20directe\x20de\x20unsigned.apk','\x22\x20-f\x204\x20\x22','app-config.json','\x0a---\x20javap\x20verbose\x20---','jdk','android-34','argv','\x0aVérifications\x20à\x20faire:','classes','minimalRequiredFiles','\x0aERREUR:\x20Fichiers\x20minimaux\x20manquants.\x20Arrêt\x20du\x20build.','\x5cjavac\x22\x20--release\x208\x20-Xlint:-options\x20-cp\x20','existsSync','/classes','R.java','\x22\x20link\x20-o\x20\x22','\x0a✓\x20Build\x20terminé\x20avec\x20succès!','missingFiles','---\x0a','Package:\x20','readdirSync','Message\x20d\x27erreur:','packageName','\x0a===\x206)\x20AJOUT\x20DU\x20DEX\x20À\x20L\x27APK\x20===','\x5ckeytool\x22\x20-genkey\x20-noprompt\x20-alias\x20key\x20-dname\x20\x22CN=','\x22\x20--ks-pass\x20pass:123456\x20--min-sdk-version\x20','src','length','7za.exe','generated','\x0aUsage:','Recreating\x20JAR\x20after\x20recompilation','✓\x20Ressources\x20liées\x20avec\x20succès','size','activity','.9.png','✓\x20Keystore\x20existant\x20réutilisé:\x20','\x0a===\x20✓\x20COMPILATION\x20RÉUSSIE\x20===','inherit','package\x20','\x20\x20PROJECT_PATH=/chemin/vers/projet\x20node\x20build_apk.js','/layout/','\x20--no-backup','aapt2.exe','\x0aOptions:','\x0a===\x20','7zip-bin','android','✓\x20Supprimé:\x20','Dossier\x20MyApp\x20trouvé\x20par\x20défaut:\x20','.apk','8637496EWrJdB','\x22\x20--auto-add-overlay\x20\x22','PROJECT_PATH','\x22\x20-o\x22','.webp','env','warn','message','⚠\x20Impossible\x20de\x20supprimer\x20','cmd.exe','Création\x20du\x20JAR','✓\x20APK\x20signé\x20avec\x20succès','--ignore-missing','ERREUR\x20lors\x20de\x20la\x20vérification\x20des\x20classes\x20dans\x20le\x20JAR:','rmSync','ERREUR:\x20app-config.json\x20non\x20trouvé\x20dans\x20le\x20projet!','toFixed','mkdirSync','\x0a===\x203)\x20COMPILATION\x20DE\x20JAVA\x20===','✓\x20DEX\x20ajouté\x20à\x20l\x27APK','\x22\x20--java\x20\x22','\x22\x20\x22','\x22\x20.','Argument\x20CLI\x20détecté:\x20','/compiledResources\x22\x20\x22','Aligning\x20APK','\x0aCause\x20probable:\x20les\x20sources\x20Java\x20n\x27ont\x20pas\x20été\x20trouvées/compilées\x20ou\x20le\x20package\x20des\x20.java\x20ne\x20correspond\x20pas\x20au\x20manifest.','⚠\x20JAR\x20non\x20trouvé,\x20création\x20DEX\x20vide','match','Classe\x20problématique\x20détectée:\x20','140155LTfgzW','node\x20\x22','compiledResources','34.0.0','\x0a✓\x20Vérification\x20projet:\x20tous\x20les\x20fichiers\x20minimaux\x20présents','timeout\x20/t\x201\x20/nobreak','\x20\x202.\x20AndroidManifest.xml\x20est-il\x20bien\x20formé?','exit','now','ignore','\x20-\x20que\x20`generate-resources.js`\x20n\x27a\x20pas\x20supprimé\x20des\x20fichiers\x20importants','includes','classes.jar','\x22\x20--lib\x20\x22','\x22\x20e\x20-y\x20\x22','3438453NuBLtQ','\x20-d\x20\x22','<resources>\x0a','hasJava','🔄\x20Restauration\x20des\x20fichiers\x20depuis\x20le\x20backup...\x0a','\x20-\x20que\x20les\x20.java\x20existent\x20dans\x20`src/`\x20avec\x20le\x20bon\x20`package`\x20en\x20tête','isDirectory','ERREUR:\x20D8\x20échoue\x20encore\x20après\x20tentative\x20de\x20correction\x20automatique.','\x0a===\x20Compile\x20','android-sdk','statSync','path','writeFileSync','--no-backup'];_0x2770=function(){return _0x2a39f6;};return _0x2770();}process[_0x434724(0x18e)][0x2]&&(projectDir=path[_0x434724(0x154)](process[_0x434724(0x18e)][0x2]),console[_0x434724(0x133)](_0x434724(0xce)+projectDir));!projectDir&&process[_0x434724(0x1c0)][_0x434724(0x1bd)]&&(projectDir=path['resolve'](process[_0x434724(0x1c0)]['PROJECT_PATH']),console[_0x434724(0x133)](_0x434724(0x10d)+projectDir));if(!projectDir){let searchDir=process[_0x434724(0x134)]();for(let i=0x0;i<0x5;i++){const configPath=path[_0x434724(0x15e)](searchDir,_0x434724(0x18a));if(fs[_0x434724(0x194)](configPath)){projectDir=searchDir,console[_0x434724(0x133)](_0x434724(0x176)+projectDir);break;}searchDir=path[_0x434724(0x11e)](searchDir);}}if(!projectDir){const defaultPaths=[path[_0x434724(0x15e)](__dirname,'..','..',_0x434724(0x15a)),path[_0x434724(0x154)](_0x434724(0x15a)),path[_0x434724(0x15e)](process['env']['USERPROFILE']||process[_0x434724(0x1c0)][_0x434724(0x120)]||'',_0x434724(0x15a))];for(const checkPath of defaultPaths){if(checkPath&&fs[_0x434724(0x194)](checkPath)&&fs[_0x434724(0x194)](path[_0x434724(0x15e)](checkPath,_0x434724(0x18a)))){projectDir=checkPath,console[_0x434724(0x133)](_0x434724(0x1b9)+projectDir);break;}}}(!projectDir||!fs[_0x434724(0x194)](projectDir))&&(console[_0x434724(0x175)](_0x434724(0xf9)),console[_0x434724(0x175)](_0x434724(0x1a6)),console[_0x434724(0x175)](_0x434724(0xf3)),console[_0x434724(0x175)](_0x434724(0x1b0)),console[_0x434724(0x175)](_0x434724(0x1b4)),process['exit'](0x1));const buildToolsDir=__dirname,skipBackup=process[_0x434724(0x18e)][_0x434724(0xe0)](_0x434724(0xf1)),restoreFromBackup=process[_0x434724(0x18e)][_0x434724(0xe0)]('--restore');if(restoreFromBackup){console[_0x434724(0x133)](_0x434724(0xe8));try{execSync(_0x434724(0xd6)+path[_0x434724(0x15e)](buildToolsDir,_0x434724(0x15b))+_0x434724(0xcc)+projectDir+'\x22\x20--restore',{'stdio':'inherit','shell':_0x434724(0x1c4)}),console[_0x434724(0x133)](_0x434724(0x140)),process['exit'](0x0);}catch(_0xadc543){console[_0x434724(0x175)]('ERREUR:\x20Restauration\x20échouée'),process['exit'](0x1);}}const configPath=path[_0x434724(0x15e)](projectDir,_0x434724(0x18a));!fs['existsSync'](configPath)&&(console[_0x434724(0x175)](_0x434724(0x1ca)),process[_0x434724(0xdc)](0x1));const appConfig=JSON[_0x434724(0x168)](fs[_0x434724(0x184)](configPath,_0x434724(0x160)));console['log'](_0x434724(0x150)+appConfig['appName']+'\x20v'+appConfig['appVersion']),console['log'](_0x434724(0x19b)+appConfig[_0x434724(0x19e)]),console['log'](_0x434724(0x19a)),console[_0x434724(0x133)]('Génération\x20des\x20ressources\x20dynamiques...');const backupOption=skipBackup?_0x434724(0x1b2):'';try{execSync(_0x434724(0xd6)+path['join'](buildToolsDir,_0x434724(0x15b))+_0x434724(0xcc)+projectDir+'\x22'+backupOption,{'stdio':_0x434724(0x1ae)});}catch(_0x5e91fa){console[_0x434724(0x175)]('ERREUR:\x20Génération\x20des\x20ressources\x20échouée'),process[_0x434724(0xdc)](0x1);}console[_0x434724(0x133)](''),console[_0x434724(0x133)]('Génération\x20des\x20icônes\x20pour\x20les\x20différentes\x20densités...');try{execSync(_0x434724(0xd6)+path[_0x434724(0x15e)](buildToolsDir,'generate-icons.js')+_0x434724(0xcc)+projectDir+'\x22',{'stdio':_0x434724(0x1ae),'shell':'cmd.exe'});}catch(_0x3968d9){console['warn'](_0x434724(0x124)),console['warn']('Détail:\x20'+_0x3968d9[_0x434724(0x1c2)][_0x434724(0xf6)](0x0,0x64));}console[_0x434724(0x133)]('');const ignoreMissing=process['argv'][_0x434724(0xe0)](_0x434724(0x1c7)),failOnMissing=process[_0x434724(0x18e)][_0x434724(0xe0)](_0x434724(0x11b));function scanProjectForMissingFiles(_0x5d2306,_0xa02bf0){const _0x36d2bd=_0x434724,_0x3be1ff=_0xa02bf0&&Array[_0x36d2bd(0x186)](_0xa02bf0[_0x36d2bd(0x191)])?_0xa02bf0[_0x36d2bd(0x191)]:[_0x36d2bd(0xfd),_0x36d2bd(0x14d),_0x36d2bd(0x10e),'res/layout/activity_main.xml'],_0x404080=[];for(const _0x18634c of _0x3be1ff){const _0x30e345=path[_0x36d2bd(0x15e)](_0x5d2306,_0x18634c);if(!fs[_0x36d2bd(0x194)](_0x30e345))_0x404080[_0x36d2bd(0x159)](_0x18634c);}let _0x193365=![];const _0x484e3c=path[_0x36d2bd(0x15e)](_0x5d2306,_0x36d2bd(0x1a2));if(fs[_0x36d2bd(0x194)](_0x484e3c)){const _0x369405=[_0x484e3c];while(_0x369405['length']){const _0x4e96cc=_0x369405[_0x36d2bd(0x108)]();try{for(const _0x487636 of fs[_0x36d2bd(0x19c)](_0x4e96cc)){const _0x24647e=path['join'](_0x4e96cc,_0x487636),_0xd5649b=fs[_0x36d2bd(0xee)](_0x24647e);if(_0xd5649b[_0x36d2bd(0xea)]())_0x369405['push'](_0x24647e);else{if(_0x487636[_0x36d2bd(0x158)](_0x36d2bd(0x104))){_0x193365=!![];break;}}}}catch(_0x34190d){}if(_0x193365)break;}}return{'missingFiles':_0x404080,'hasJava':_0x193365};}const scanResult=scanProjectForMissingFiles(projectDir,appConfig);if(scanResult['missingFiles'][_0x434724(0x1a3)]>0x0){console[_0x434724(0x1c1)](_0x434724(0x14c));for(const m of scanResult[_0x434724(0x199)])console[_0x434724(0x1c1)]('\x20-\x20'+m);!ignoreMissing?failOnMissing?(console[_0x434724(0x175)](_0x434724(0x192)),process['exit'](0x1)):console['warn'](_0x434724(0x105)):console[_0x434724(0x133)](_0x434724(0x187));}else console['log'](_0x434724(0xd9));!scanResult[_0x434724(0xe7)]&&console[_0x434724(0x1c1)]('\x0a⚠\x20Aucune\x20source\x20Java\x20détectée\x20sous\x20`src/`\x20—\x20le\x20build\x20générera\x20des\x20stubs\x20ou\x20utilisera\x20les\x20fichiers\x20générés\x20par\x20aapt2\x20si\x20nécessaire.');const VENDOR_DIR=path[_0x434724(0x15e)](buildToolsDir,'vendor'),SDK=path[_0x434724(0x15e)](VENDOR_DIR,_0x434724(0x1b7),_0x434724(0xed)),JDK=path[_0x434724(0x15e)](VENDOR_DIR,_0x434724(0x1b7),_0x434724(0x18c),'bin'),AAPT2=path['join'](SDK,_0x434724(0x12d),_0x434724(0xd8),_0x434724(0x1b3)),ANDROID_JAR=path[_0x434724(0x15e)](SDK,_0x434724(0x17c),_0x434724(0x18d),_0x434724(0x16e)),D8=path[_0x434724(0x15e)](SDK,_0x434724(0x12d),'34.0.0','d8.bat'),ZIPALIGN=path['join'](SDK,_0x434724(0x12d),_0x434724(0xd8),'zipalign.exe'),APKSIGNER=path['join'](SDK,_0x434724(0x12d),_0x434724(0xd8),_0x434724(0x141)),SEVENZIP=path[_0x434724(0x15e)](VENDOR_DIR,_0x434724(0x1b6),_0x434724(0x16b),_0x434724(0x147),_0x434724(0x1a4)),requiredTools=[{'name':_0x434724(0x17d),'path':AAPT2},{'name':_0x434724(0x100),'path':ANDROID_JAR},{'name':'D8','path':D8},{'name':_0x434724(0x11f),'path':ZIPALIGN},{'name':_0x434724(0xf4),'path':APKSIGNER},{'name':_0x434724(0x107),'path':SEVENZIP},{'name':_0x434724(0x12f),'path':path[_0x434724(0x15e)](JDK,_0x434724(0x142))}];for(const tool of requiredTools){!fs[_0x434724(0x194)](tool[_0x434724(0xef)])&&(console['error']('\x0aERREUR:\x20'+tool[_0x434724(0x114)]+'\x20non\x20trouvé\x20à:\x20'+tool[_0x434724(0xef)]),console[_0x434724(0x175)]('Vérifiez\x20que\x20le\x20SDK\x20Android\x20et\x20JDK\x20sont\x20correctement\x20installés.'),process['exit'](0x1));}const BUILD_DIR=path[_0x434724(0x15e)](projectDir,'build'),SRC_DIR=path[_0x434724(0x15e)](projectDir,_0x434724(0x1a2)),RES_DIR=path[_0x434724(0x15e)](projectDir,_0x434724(0x183));function run(_0x16287b,_0x46898d,_0x38ea70=projectDir){const _0x23d300=_0x434724;console[_0x23d300(0x133)](_0x23d300(0x1b5)+_0x46898d+'\x20===');try{const _0x227266=execSync(_0x16287b,{'cwd':_0x38ea70,'stdio':'inherit','shell':_0x23d300(0x1c4)});return!![];}catch(_0x292b76){console[_0x23d300(0x175)]('ERREUR:\x20'+_0x46898d+_0x23d300(0x167)),process[_0x23d300(0xdc)](0x1);}}function copyFile(_0x2d0b97,_0x1a2d02){const _0x29604e=_0x434724,_0x58eaac=path['dirname'](_0x1a2d02);!fs[_0x29604e(0x194)](_0x58eaac)&&fs[_0x29604e(0x1cc)](_0x58eaac,{'recursive':!![]}),fs[_0x29604e(0x151)](_0x2d0b97,_0x1a2d02);}function removeDir(_0x2390dd){const _0x5ee191=_0x434724;fs['existsSync'](_0x2390dd)&&fs[_0x5ee191(0x1c9)](_0x2390dd,{'recursive':!![],'force':!![]});}function makeDir(_0xdb35af){const _0x5a4803=_0x434724;!fs[_0x5a4803(0x194)](_0xdb35af)&&fs['mkdirSync'](_0xdb35af,{'recursive':!![]});}const APK_NAME=path[_0x434724(0x15e)](projectDir,appConfig[_0x434724(0x10c)][_0x434724(0x165)](/\s+/g,'')+_0x434724(0x1ba));console['log']('Nettoyage\x20complet\x20de\x20tous\x20les\x20fichiers\x20générés...'),removeDir(BUILD_DIR);if(fs['existsSync'](APK_NAME))try{fs[_0x434724(0x129)](APK_NAME),console['log'](_0x434724(0x1b8)+APK_NAME);}catch(_0x263f97){console['warn'](_0x434724(0x1c3)+APK_NAME+_0x434724(0x16a));}const keystoreName=appConfig[_0x434724(0x10c)]['replace'](/\s+/g,'')+'.keystore';console[_0x434724(0x133)]('✓\x20Structure\x20de\x20build\x20recréée\x0a'),makeDir(BUILD_DIR),makeDir(BUILD_DIR+_0x434724(0x195)),makeDir(BUILD_DIR+_0x434724(0x106));const stylesDir=path['join'](projectDir,_0x434724(0x183),_0x434724(0x137)),stylesPath=path[_0x434724(0x15e)](stylesDir,_0x434724(0x102));try{!fs[_0x434724(0x194)](stylesDir)&&fs[_0x434724(0x1cc)](stylesDir,{'recursive':!![]});if(!fs[_0x434724(0x194)](stylesPath)){const defaultStyles='<?xml\x20version=\x221.0\x22\x20encoding=\x22utf-8\x22?>\x0a'+_0x434724(0xe6)+'\x20\x20<style\x20name=\x22AppTheme\x22\x20parent=\x22android:Theme.DeviceDefault.Light.DarkActionBar\x22>\x0a'+_0x434724(0x16d)+'</resources>\x0a';fs[_0x434724(0xf0)](stylesPath,defaultStyles,'utf8'),console['log']('✓\x20styles.xml\x20par\x20défaut\x20créé\x20pour\x20éviter\x20les\x20erreurs\x20de\x20thème');}}catch(_0x33533a){console['warn']('Avertissement:\x20impossible\x20de\x20créer\x20styles.xml\x20par\x20défaut:',_0x33533a[_0x434724(0x1c2)]);}console[_0x434724(0x133)](_0x434724(0x122));const layoutFiles=fs[_0x434724(0x194)](path[_0x434724(0x15e)](RES_DIR,_0x434724(0x110)))?fs[_0x434724(0x19c)](path['join'](RES_DIR,'layout'))[_0x434724(0x14e)](_0x4ac8de=>_0x4ac8de[_0x434724(0x158)](_0x434724(0x123))):[],valueFiles=fs[_0x434724(0x194)](path[_0x434724(0x15e)](RES_DIR,_0x434724(0x137)))?fs[_0x434724(0x19c)](path[_0x434724(0x15e)](RES_DIR,_0x434724(0x137)))['filter'](_0x72b0d5=>_0x72b0d5['endsWith']('.xml')):[],allResources=[];for(const file of layoutFiles){console[_0x434724(0x133)](_0x434724(0xec)+path['join'](RES_DIR,_0x434724(0x110),file)+_0x434724(0x163));const cmd='\x22'+AAPT2+'\x22\x20compile\x20-o\x20\x22'+BUILD_DIR+_0x434724(0xcf)+path[_0x434724(0x15e)](RES_DIR,_0x434724(0x110),file)+'\x22';try{execSync(cmd,{'stdio':_0x434724(0x1ae),'shell':_0x434724(0x1c4)});}catch(_0xe69d6c){console['error'](_0x434724(0x11c)+file+_0x434724(0xf2));}allResources[_0x434724(0x159)](RES_DIR+_0x434724(0x1b1)+file);}for(const file of valueFiles){console['log'](_0x434724(0xec)+path[_0x434724(0x15e)](RES_DIR,_0x434724(0x137),file)+'\x20===');const cmd='\x22'+AAPT2+_0x434724(0x169)+BUILD_DIR+_0x434724(0xcf)+path[_0x434724(0x15e)](RES_DIR,_0x434724(0x137),file)+'\x22';try{execSync(cmd,{'stdio':_0x434724(0x1ae),'shell':'cmd.exe'});}catch(_0x3c23a7){console[_0x434724(0x175)](_0x434724(0x11c)+file+_0x434724(0xf2));}allResources[_0x434724(0x159)](RES_DIR+_0x434724(0x113)+file);}for(let mimapDir of fs[_0x434724(0x19c)](RES_DIR)[_0x434724(0x14e)](_0x4ba701=>_0x4ba701[_0x434724(0x178)]('mipmap'))){const mimapPath=path['join'](RES_DIR,mimapDir);if(fs[_0x434724(0xee)](mimapPath)['isDirectory']()){const files=fs[_0x434724(0x19c)](mimapPath)['filter'](_0x5463d8=>_0x5463d8[_0x434724(0x158)](_0x434724(0x111)));for(const file of files){console[_0x434724(0x133)](_0x434724(0xec)+path[_0x434724(0x15e)](mimapDir,file)+_0x434724(0x163));const cmd='\x22'+AAPT2+'\x22\x20compile\x20-o\x20\x22'+BUILD_DIR+_0x434724(0xcf)+path['join'](mimapPath,file)+'\x22';try{execSync(cmd,{'stdio':_0x434724(0x1ae),'shell':_0x434724(0x1c4)});}catch(_0x1711e8){console['error']('Avertissement:\x20Compilation\x20de\x20'+file+_0x434724(0xf2));}}}}console[_0x434724(0x133)]('\x0a===\x20Compile\x20récursif\x20des\x20ressources\x20restantes\x20===');const resourceExtensions=[_0x434724(0x123),_0x434724(0x111),'.jpg',_0x434724(0x17b),_0x434724(0x1bf),_0x434724(0x1ab)];function _0x26e4(_0x17ec2e,_0x4b0668){const _0x27700a=_0x2770();return _0x26e4=function(_0x26e48b,_0x347703){_0x26e48b=_0x26e48b-0xcb;let _0x4a2334=_0x27700a[_0x26e48b];return _0x4a2334;},_0x26e4(_0x17ec2e,_0x4b0668);}function walkDirForResources(_0x582f10){const _0x31960e=_0x434724,_0x2eec54=[];if(!fs[_0x31960e(0x194)](_0x582f10))return _0x2eec54;const _0x3851cb=fs['readdirSync'](_0x582f10);for(const _0x86f03f of _0x3851cb){const _0x3ac5f9=path[_0x31960e(0x15e)](_0x582f10,_0x86f03f),_0x3493a1=fs['statSync'](_0x3ac5f9);if(_0x3493a1[_0x31960e(0xea)]())_0x2eec54[_0x31960e(0x159)](...walkDirForResources(_0x3ac5f9));else{const _0x3ac3c9=path[_0x31960e(0x125)](_0x86f03f)['toLowerCase']();(resourceExtensions[_0x31960e(0xe0)](_0x3ac3c9)||_0x86f03f['endsWith'](_0x31960e(0x1ab)))&&_0x2eec54[_0x31960e(0x159)](_0x3ac5f9);}}return _0x2eec54;}const allResFiles=walkDirForResources(RES_DIR);for(const resFile of allResFiles){console['log'](_0x434724(0xec)+resFile+_0x434724(0x163));const compileCmd='\x22'+AAPT2+'\x22\x20compile\x20-o\x20\x22'+path[_0x434724(0x15e)](BUILD_DIR,_0x434724(0xd7))+_0x434724(0xcc)+resFile+'\x22';try{execSync(compileCmd,{'stdio':_0x434724(0x1ae),'shell':_0x434724(0x1c4)});}catch(_0x31a59c){console[_0x434724(0x1c1)]('Avertissement:\x20impossible\x20de\x20compiler\x20'+resFile+_0x434724(0x139));}}console['log'](_0x434724(0x101));const apkPath=path['join'](BUILD_DIR,_0x434724(0x144)),resourcesDir=path['join'](BUILD_DIR,'compiledResources'),generatedDir=path[_0x434724(0x154)](BUILD_DIR,_0x434724(0x1a5));if(!fs[_0x434724(0x194)](resourcesDir))fs['mkdirSync'](resourcesDir,{'recursive':!![]});if(!fs[_0x434724(0x194)](generatedDir))fs['mkdirSync'](generatedDir,{'recursive':!![]});const compiledFiles=fs[_0x434724(0x19c)](resourcesDir)[_0x434724(0x14e)](_0x4ed70c=>_0x4ed70c[_0x434724(0x158)]('.flat')||_0x4ed70c[_0x434724(0x158)]('.zip'))['map'](_0x313705=>path['join'](resourcesDir,_0x313705));console['log']('Création\x20de\x20la\x20structure\x20APK\x20et\x20génération\x20de\x20R.java...');try{let linkCmd;const manifestPath=path[_0x434724(0x15e)](projectDir,_0x434724(0xfd));if(compiledFiles[_0x434724(0x1a3)]>0x0){const compiledArgs=compiledFiles[_0x434724(0x16f)](_0x1a6cd6=>'\x22'+_0x1a6cd6+'\x22')[_0x434724(0x15e)]('\x20');linkCmd='\x22'+AAPT2+_0x434724(0x197)+apkPath+'\x22\x20-I\x20\x22'+ANDROID_JAR+'\x22\x20--manifest\x20\x22'+manifestPath+'\x22\x20--java\x20\x22'+generatedDir+'\x22\x20'+compiledArgs;}else linkCmd='\x22'+AAPT2+'\x22\x20link\x20-o\x20\x22'+apkPath+_0x434724(0x17a)+ANDROID_JAR+_0x434724(0x12b)+manifestPath+_0x434724(0xcb)+generatedDir+_0x434724(0x1bc)+path[_0x434724(0x15e)](projectDir,'res')+'\x22';console[_0x434724(0x133)](_0x434724(0x181)+linkCmd[_0x434724(0xf6)](0x0,0x64)+'...'),execSync(linkCmd,{'stdio':_0x434724(0x1ae),'shell':'cmd.exe'}),console[_0x434724(0x133)](_0x434724(0x1a8));}catch(_0x5bcb06){console['error'](_0x434724(0xfb)),console[_0x434724(0x175)](_0x434724(0x19d),_0x5bcb06[_0x434724(0x1c2)][_0x434724(0xf6)](0x0,0xc8)),process['exit'](0x1);}function findRJava(){const _0x1b4a4a=[];try{const _0x29caad=_0xcf5dad=>{const _0x58e361=_0x26e4,_0x49b06e=fs['readdirSync'](_0xcf5dad);for(const _0x528c55 of _0x49b06e){const _0x5cf883=path[_0x58e361(0x15e)](_0xcf5dad,_0x528c55),_0x1af0f5=fs[_0x58e361(0xee)](_0x5cf883);if(_0x1af0f5['isDirectory']())_0x29caad(_0x5cf883);else _0x528c55===_0x58e361(0x196)&&_0x1b4a4a[_0x58e361(0x159)](_0x5cf883);}};_0x29caad(generatedDir);}catch(_0x2b4caf){}return _0x1b4a4a;}const rJavaFiles=findRJava();rJavaFiles['length']===0x0&&(console[_0x434724(0x175)](_0x434724(0x15f)),console[_0x434724(0x175)](_0x434724(0x132)+generatedDir),console[_0x434724(0x175)]('Cause\x20possible:\x20fichiers\x20res/\x20mal\x20structurés,\x20XML\x20invalides,\x20ou\x20manifest\x20corrompu.'),console['error'](_0x434724(0x18f)),console[_0x434724(0x175)](_0x434724(0x182)),console[_0x434724(0x175)](_0x434724(0xdb)),console[_0x434724(0x175)](_0x434724(0x14a)),console[_0x434724(0x175)]('\x0aBuild\x20échouée\x20-\x20APK\x20n\x27est\x20pas\x20généré.'),process[_0x434724(0xdc)](0x1));console[_0x434724(0x133)](_0x434724(0x128)+rJavaFiles[0x0]),console[_0x434724(0x133)](_0x434724(0x1cd));const javaFiles=[],srcPath=SRC_DIR,findJavaFiles=_0x57b820=>{const _0x5b0f2c=_0x434724,_0x28f449=fs['readdirSync'](_0x57b820);for(const _0x5ab7b3 of _0x28f449){const _0x156ac2=path[_0x5b0f2c(0x15e)](_0x57b820,_0x5ab7b3),_0x1ee80e=fs[_0x5b0f2c(0xee)](_0x156ac2);if(_0x1ee80e[_0x5b0f2c(0xea)]())findJavaFiles(_0x156ac2);else _0x5ab7b3[_0x5b0f2c(0x158)](_0x5b0f2c(0x104))&&javaFiles[_0x5b0f2c(0x159)](_0x156ac2);}};fs[_0x434724(0x194)](srcPath)&&findJavaFiles(srcPath);const generatedJavaDir=path[_0x434724(0x15e)](BUILD_DIR,_0x434724(0x1a5));if(fs['existsSync'](generatedJavaDir)){const findGeneratedJavaFiles=_0x223307=>{const _0x44058f=_0x434724,_0x315613=[],_0x84a0b=fs[_0x44058f(0x19c)](_0x223307);for(const _0x5e1db5 of _0x84a0b){const _0xb52772=path['join'](_0x223307,_0x5e1db5),_0x1f8b91=fs[_0x44058f(0xee)](_0xb52772);if(_0x1f8b91['isDirectory']())_0x315613[_0x44058f(0x159)](...findGeneratedJavaFiles(_0xb52772));else _0x5e1db5['endsWith'](_0x44058f(0x104))&&_0x315613[_0x44058f(0x159)](_0xb52772);}return _0x315613;};try{const genFiles=findGeneratedJavaFiles(generatedJavaDir);genFiles[_0x434724(0x1a3)]>0x0&&(javaFiles['push'](...genFiles),console['log']('✓\x20'+genFiles[_0x434724(0x1a3)]+'\x20fichiers\x20Java\x20générés\x20par\x20aapt2\x20ajoutés\x20à\x20la\x20compilation'));}catch(_0x5e78cf){console['warn'](_0x434724(0x118),_0x5e78cf['message']);}}function ensureActivityStubs(){const _0x13047a=_0x434724;try{const _0x359096=path['join'](projectDir,'AndroidManifest.xml');if(!fs[_0x13047a(0x194)](_0x359096))return;const _0xe8bf08=fs[_0x13047a(0x184)](_0x359096,'utf8'),_0xe2a6f=_0xe8bf08[_0x13047a(0xd3)](/<manifest[^>]*\spackage\s*=\s*['"]([^'"]+)['"]/),_0x5f593c=_0xe2a6f?_0xe2a6f[0x1]:null,_0x365efa=/<activity[^>]*android:name\s*=\s*['\"]([^'\"]+)['\"]/g;let _0x3024c0;const _0x521059=new Set();while((_0x3024c0=_0x365efa[_0x13047a(0xff)](_0xe8bf08))!==null){_0x521059['add'](_0x3024c0[0x1]);}if(_0x521059[_0x13047a(0x1a9)]===0x0)return;const _0x376b1d=path['join'](BUILD_DIR,_0x13047a(0x1a5));if(!fs[_0x13047a(0x194)](_0x376b1d))fs['mkdirSync'](_0x376b1d,{'recursive':!![]});for(const _0x2495cd of _0x521059){let _0x586109=_0x2495cd;if(_0x2495cd[_0x13047a(0x178)]('.')){if(_0x5f593c)_0x586109=_0x5f593c+_0x2495cd;}else!_0x2495cd['includes']('.')&&_0x5f593c&&(_0x586109=_0x5f593c+'.'+_0x2495cd);const _0x32a838=_0x586109[_0x13047a(0x11a)]('.'),_0x35d09a=_0x32a838[_0x13047a(0x108)](),_0x5b2bd7=_0x32a838[_0x13047a(0x15e)](path[_0x13047a(0xf5)]),_0xbf70fd=path[_0x13047a(0x15e)](_0x376b1d,_0x5b2bd7);if(!fs[_0x13047a(0x194)](_0xbf70fd))fs[_0x13047a(0x1cc)](_0xbf70fd,{'recursive':!![]});const _0x5d7ede=path['join'](_0xbf70fd,_0x35d09a+_0x13047a(0x104));if(!fs['existsSync'](_0x5d7ede)){const _0x412a04=_0x13047a(0x1af)+_0x32a838[_0x13047a(0x15e)]('.')+_0x13047a(0x14f)+_0x35d09a+_0x13047a(0x179);try{fs[_0x13047a(0xf0)](_0x5d7ede,_0x412a04,_0x13047a(0x13b)),console[_0x13047a(0x133)](_0x13047a(0x117)+_0x5d7ede);}catch(_0x2f7fea){console[_0x13047a(0x1c1)](_0x13047a(0x13a),_0x2f7fea[_0x13047a(0x1c2)]);}}javaFiles[_0x13047a(0x159)](_0x5d7ede);}}catch(_0x5caca6){console[_0x13047a(0x1c1)](_0x13047a(0x15c),_0x5caca6[_0x13047a(0x1c2)]);}}javaFiles[_0x434724(0x1a3)]===0x0&&(console[_0x434724(0x1c1)](_0x434724(0x10f)),ensureActivityStubs());if(javaFiles[_0x434724(0x1a3)]===0x0)console[_0x434724(0x1c1)](_0x434724(0x13e));else{const classPath='\x22'+ANDROID_JAR+'\x22',javaFilesStr=javaFiles[_0x434724(0x16f)](_0x58ce53=>'\x22'+_0x58ce53+'\x22')[_0x434724(0x15e)]('\x20'),compileCmd='\x22'+JDK+_0x434724(0x193)+classPath+_0x434724(0xe5)+path['join'](BUILD_DIR,_0x434724(0x190))+'\x22\x20'+javaFilesStr;run(compileCmd,_0x434724(0x12a));}console[_0x434724(0x133)](_0x434724(0x164));const classesDir=path[_0x434724(0x15e)](BUILD_DIR,_0x434724(0x190)),jarPath=path[_0x434724(0x15e)](BUILD_DIR,_0x434724(0xe1));if(fs[_0x434724(0x194)](classesDir)){const jarCmd='\x22'+JDK+'\x5cjar\x22\x20cvf\x20\x22'+jarPath+_0x434724(0x145)+classesDir+_0x434724(0xcd);run(jarCmd,_0x434724(0x1c5));}else console[_0x434724(0x1c1)](_0x434724(0x10b));function checkManifestClassesPresentInJar(){const _0x5bdce2=_0x434724;try{!fs[_0x5bdce2(0x194)](jarPath)&&(console[_0x5bdce2(0x175)](_0x5bdce2(0x17e)),process[_0x5bdce2(0xdc)](0x1));const _0x1805ca=path[_0x5bdce2(0x15e)](projectDir,_0x5bdce2(0xfd));if(!fs[_0x5bdce2(0x194)](_0x1805ca)){console[_0x5bdce2(0x1c1)](_0x5bdce2(0x174));return;}const _0x5d0afb=fs['readFileSync'](_0x1805ca,_0x5bdce2(0x13b)),_0x46ecf7=_0x5d0afb[_0x5bdce2(0xd3)](/<manifest[^>]*\spackage\s*=\s*['"]([^'\"]+)['"]/),_0x5872f8=_0x46ecf7?_0x46ecf7[0x1]:appConfig&&appConfig[_0x5bdce2(0x19e)]||null,_0x35654c=/<activity[^>]*android:name\s*=\s*['\"]([^'\"]+)['\"]/g;let _0x1ecb4d;const _0x5d7d9a=[];while((_0x1ecb4d=_0x35654c[_0x5bdce2(0xff)](_0x5d0afb))!==null){let _0x564936=_0x1ecb4d[0x1];if(_0x564936[_0x5bdce2(0x178)]('.')){if(_0x5872f8)_0x564936=_0x5872f8+_0x564936;}else!_0x564936[_0x5bdce2(0xe0)]('.')&&_0x5872f8&&(_0x564936=_0x5872f8+'.'+_0x564936);_0x5d7d9a['push'](_0x564936);}if(_0x5d7d9a[_0x5bdce2(0x1a3)]===0x0){console[_0x5bdce2(0x133)](_0x5bdce2(0x172));return;}const _0x29f806=execSync('\x22'+JDK+_0x5bdce2(0x14b)+jarPath+'\x22',{'encoding':_0x5bdce2(0x13b),'stdio':[_0x5bdce2(0x103),_0x5bdce2(0x103),_0x5bdce2(0xde)]}),_0x34b2a3=[];for(const _0xb12943 of _0x5d7d9a){const _0x3e4a0b=_0xb12943[_0x5bdce2(0x165)](/\./g,'/')+'.class';!_0x29f806[_0x5bdce2(0xe0)](_0x3e4a0b)&&_0x34b2a3['push']({'activity':_0xb12943,'expected':_0x3e4a0b});}if(_0x34b2a3['length']>0x0){console[_0x5bdce2(0x175)](_0x5bdce2(0x170));for(const _0x2a4340 of _0x34b2a3){console[_0x5bdce2(0x175)]('\x20-\x20'+_0x2a4340[_0x5bdce2(0x1aa)]+_0x5bdce2(0xf7)+_0x2a4340['expected']+')');}console[_0x5bdce2(0x175)](_0x5bdce2(0xd1)),console['error']('Vérifiez:'),console['error'](_0x5bdce2(0xe9)),console[_0x5bdce2(0x175)](_0x5bdce2(0xdf)),console['error'](_0x5bdce2(0x148)),process[_0x5bdce2(0xdc)](0x1);}console[_0x5bdce2(0x133)](_0x5bdce2(0x17f));}catch(_0x5ca2ca){console[_0x5bdce2(0x175)](_0x5bdce2(0x1c8),_0x5ca2ca['message']),process[_0x5bdce2(0xdc)](0x1);}}checkManifestClassesPresentInJar(),console[_0x434724(0x133)](_0x434724(0x138));const dexPath=path['join'](BUILD_DIR,'classes.dex');if(fs[_0x434724(0x194)](jarPath)){const d8Cmd='\x22'+D8+_0x434724(0xe2)+ANDROID_JAR+_0x434724(0x185)+BUILD_DIR+_0x434724(0xcc)+jarPath+'\x22';console[_0x434724(0x133)](_0x434724(0x131));try{execSync(d8Cmd,{'stdio':'inherit','shell':_0x434724(0x1c4)}),console['log']('✓\x20Conversion\x20DEX\x20réussie');}catch(_0x617dee){const msg=_0x617dee&&_0x617dee['message']?_0x617dee[_0x434724(0x1c2)]:String(_0x617dee),classMatch=msg['match'](/([^:\s]+\.jar):([^:\s]+\.class)/);let problematicClassEntry=null;if(classMatch)problematicClassEntry=classMatch[0x2][_0x434724(0x165)](/\\\\/g,'/');else{const alt=msg[_0x434724(0xd3)](/(com\/[\w\/-]*\$?[^\s:]*\.class)/);if(alt)problematicClassEntry=alt[0x1];}console[_0x434724(0x175)]('\x0aERREUR:\x20D8\x20a\x20échoué\x20lors\x20de\x20la\x20conversion\x20en\x20DEX.');if(problematicClassEntry){console[_0x434724(0x175)](_0x434724(0xd4)+problematicClassEntry);try{const tmpDir=path['join'](BUILD_DIR,_0x434724(0x130));if(!fs['existsSync'](tmpDir))fs[_0x434724(0x1cc)](tmpDir,{'recursive':!![]});const extractCmd='\x22'+SEVENZIP+_0x434724(0xe3)+jarPath+_0x434724(0xcc)+problematicClassEntry+_0x434724(0x1be)+tmpDir+'\x22';try{execSync(extractCmd,{'stdio':'inherit','shell':'cmd.exe'});}catch(_0x38cae8){try{execSync('\x22'+SEVENZIP+'\x22\x20e\x20-y\x20\x22'+jarPath+'\x22\x20\x22*'+path['basename'](problematicClassEntry)+_0x434724(0x1be)+tmpDir+'\x22',{'stdio':_0x434724(0x1ae),'shell':_0x434724(0x1c4)});}catch(_0x5d9910){}}const extracted=path['join'](tmpDir,path[_0x434724(0x127)](problematicClassEntry));if(fs[_0x434724(0x194)](extracted)){console[_0x434724(0x133)]('\x0a✓\x20Classe\x20extraite\x20pour\x20diagnostic:\x20'+extracted);try{const javapCmd='\x22'+JDK+_0x434724(0x135)+extracted+'\x22';console[_0x434724(0x133)](_0x434724(0x18b)),execSync(javapCmd,{'stdio':_0x434724(0x1ae),'shell':'cmd.exe'}),console[_0x434724(0x133)]('---\x20fin\x20javap\x20---\x0a');}catch(_0x4a1229){console[_0x434724(0x1c1)]('Impossible\x20d\x27exécuter\x20javap\x20sur\x20la\x20classe\x20extraite:',_0x4a1229[_0x434724(0x1c2)]);}}else console[_0x434724(0x1c1)](_0x434724(0x13f));}catch(_0x3fe905){console[_0x434724(0x1c1)]('Erreur\x20durant\x20le\x20diagnostic\x20D8:',_0x3fe905[_0x434724(0x1c2)]);}}try{if(problematicClassEntry){const classPathNoDollar=problematicClassEntry[_0x434724(0x11a)]('$')[0x0],javaPath=path[_0x434724(0x15e)](projectDir,_0x434724(0x1a2),classPathNoDollar[_0x434724(0x165)](/\//g,path[_0x434724(0xf5)])+'.java');if(fs[_0x434724(0x194)](javaPath)){const content=fs[_0x434724(0x184)](javaPath,_0x434724(0x13b));if(content[_0x434724(0xe0)](_0x434724(0x180))){console['log']('\x0aTentative:\x20fichier\x20source\x20généré\x20détecté.\x20Suppression\x20et\x20recompilation.'),fs['unlinkSync'](javaPath),removeDir(path[_0x434724(0x15e)](BUILD_DIR,_0x434724(0x190))),makeDir(path[_0x434724(0x15e)](BUILD_DIR,_0x434724(0x190)));const javaFilesNow=[],findJavaFilesLocal=_0x537323=>{const _0x311c27=_0x434724,_0x41719a=fs[_0x311c27(0x19c)](_0x537323);for(const _0x5bffd2 of _0x41719a){const _0x523209=path['join'](_0x537323,_0x5bffd2),_0x208ab6=fs['statSync'](_0x523209);if(_0x208ab6[_0x311c27(0xea)]())findJavaFilesLocal(_0x523209);else{if(_0x5bffd2[_0x311c27(0x158)](_0x311c27(0x104)))javaFilesNow[_0x311c27(0x159)](_0x523209);}}};if(fs[_0x434724(0x194)](srcPath))findJavaFilesLocal(srcPath);if(fs[_0x434724(0x194)](path['join'](BUILD_DIR,_0x434724(0x1a5))))findJavaFilesLocal(path[_0x434724(0x15e)](BUILD_DIR,_0x434724(0x1a5)));if(javaFilesNow[_0x434724(0x1a3)]>0x0){const classPathArg='\x22'+ANDROID_JAR+'\x22',javaFilesStr2=javaFilesNow['map'](_0x351155=>'\x22'+_0x351155+'\x22')[_0x434724(0x15e)]('\x20'),compileCmd2='\x22'+JDK+_0x434724(0x193)+classPathArg+'\x20-d\x20\x22'+path[_0x434724(0x15e)](BUILD_DIR,_0x434724(0x190))+'\x22\x20'+javaFilesStr2;run(compileCmd2,_0x434724(0x13c));const jarCmd2='\x22'+JDK+_0x434724(0x121)+jarPath+_0x434724(0x145)+classesDir+_0x434724(0xcd);run(jarCmd2,_0x434724(0x1a7));try{execSync(d8Cmd,{'stdio':_0x434724(0x1ae),'shell':'cmd.exe'}),console[_0x434724(0x133)](_0x434724(0x161));}catch(_0x81de93){console[_0x434724(0x175)](_0x434724(0xeb)),process[_0x434724(0xdc)](0x1);}}else console[_0x434724(0x1c1)](_0x434724(0x112)),process[_0x434724(0xdc)](0x1);}else console['warn'](_0x434724(0x115));}else console[_0x434724(0x1c1)]('Fichier\x20source\x20Java\x20correspondant\x20introuvable:\x20'+javaPath);}}catch(_0x398e81){console[_0x434724(0x1c1)](_0x434724(0x119),_0x398e81[_0x434724(0x1c2)]);}process[_0x434724(0xdc)](0x1);}}else console[_0x434724(0x1c1)](_0x434724(0xd2));console[_0x434724(0x133)](_0x434724(0x19f));try{if(fs[_0x434724(0x194)](dexPath)){const unsignedApkFull=path['resolve'](BUILD_DIR,path[_0x434724(0x127)](apkPath)),classesDexFull=path[_0x434724(0x154)](dexPath),addDexCmd='\x22'+SEVENZIP+_0x434724(0x109)+unsignedApkFull+'\x22\x20\x22'+classesDexFull+'\x22';execSync(addDexCmd,{'cwd':path[_0x434724(0x154)](BUILD_DIR),'stdio':_0x434724(0x1ae),'shell':'cmd.exe','timeout':0xea60}),console[_0x434724(0x133)](_0x434724(0x1ce));}else console[_0x434724(0x1c1)](_0x434724(0x153));}catch(_0x3b25b5){console[_0x434724(0x175)]('ERREUR:\x20Ajout\x20du\x20DEX\x20échoué:\x20'+_0x3b25b5[_0x434724(0x1c2)]),process['exit'](0x1);}console['log']('\x0a===\x207)\x20ALIGNEMENT\x20DE\x20L\x27APK\x20===');const alignedApkPath=path['join'](BUILD_DIR,_0x434724(0x171)),unsignedApkPath=path['join'](BUILD_DIR,_0x434724(0x162));fs['existsSync'](apkPath)&&fs[_0x434724(0x11d)](apkPath,unsignedApkPath);try{run('\x22'+ZIPALIGN+_0x434724(0x189)+unsignedApkPath+_0x434724(0xcc)+alignedApkPath+'\x22',_0x434724(0xd0));}catch(_0x184d45){console[_0x434724(0x1c1)](_0x434724(0x188)),fs['copyFileSync'](unsignedApkPath,alignedApkPath);}console[_0x434724(0x133)]('\x0a===\x208)\x20SIGNATURE\x20DE\x20L\x27APK\x20===');const keystorePath=path['join'](projectDir,keystoreName);if(!fs[_0x434724(0x194)](keystorePath)){console[_0x434724(0x133)]('Création\x20du\x20keystore...');const keygenCmd='\x22'+JDK+_0x434724(0x1a0)+appConfig['appName']+_0x434724(0xfa)+keystorePath+_0x434724(0xfc);try{execSync(keygenCmd,{'cwd':projectDir,'stdio':'pipe','shell':_0x434724(0x1c4)}),console[_0x434724(0x133)](_0x434724(0x13d));}catch(_0x3137c8){console[_0x434724(0x175)]('ERREUR:\x20Impossible\x20de\x20créer\x20le\x20keystore'),process[_0x434724(0xdc)](0x1);}}else console[_0x434724(0x133)](_0x434724(0x1ac)+keystorePath);if(fs[_0x434724(0x194)](alignedApkPath)){const minSdkVersion=appConfig[_0x434724(0x12c)]||0x15,signCmd='\x22'+APKSIGNER+_0x434724(0x146)+keystorePath+_0x434724(0x1a1)+minSdkVersion+_0x434724(0x177)+APK_NAME+'\x22\x20\x22'+alignedApkPath+'\x22';console[_0x434724(0x133)](_0x434724(0x15d)),console[_0x434724(0x133)]('Commande:\x20'+signCmd),console[_0x434724(0x133)](_0x434724(0x136)+APK_NAME);try{const output=execSync(signCmd,{'cwd':projectDir,'stdio':_0x434724(0x103),'shell':'cmd.exe','encoding':'utf-8'});console[_0x434724(0x133)](_0x434724(0x1c6));}catch(_0x21ae02){console['log'](_0x434724(0x126)),console[_0x434724(0x133)]('Détails:\x20'+_0x21ae02[_0x434724(0x1c2)][_0x434724(0xf6)](0x0,0xc8));}const maxWait=0xbb8,startWait=Date['now']();while(!fs['existsSync'](APK_NAME)&&Date[_0x434724(0xdd)]()-startWait<maxWait){require(_0x434724(0x156))[_0x434724(0x149)](_0x434724(0xda),{'shell':_0x434724(0x1c4)});}if(fs[_0x434724(0x194)](APK_NAME)){const stats=fs[_0x434724(0xee)](APK_NAME),endTime=Date[_0x434724(0xdd)](),buildTime=((endTime-startTime)/0x3e8)[_0x434724(0x1cb)](0x2);console[_0x434724(0x133)](_0x434724(0x1ad)),console[_0x434724(0x133)](_0x434724(0x116)+APK_NAME),console[_0x434724(0x133)]('Taille:\x20'+stats[_0x434724(0x1a9)]+_0x434724(0xfe)),console['log']('Temps\x20de\x20build:\x20'+buildTime+'s'),console[_0x434724(0x133)](_0x434724(0x198));}else console['error'](_0x434724(0x12e)),console[_0x434724(0x175)](_0x434724(0x157)+APK_NAME),console['error']('Fichiers\x20dans\x20le\x20répertoire:',fs[_0x434724(0x19c)](projectDir)[_0x434724(0x14e)](_0x4ed6f2=>_0x4ed6f2[_0x434724(0x158)](_0x434724(0x1ba)))),process[_0x434724(0xdc)](0x1);}else console[_0x434724(0x175)](_0x434724(0x16c)),console['error'](_0x434724(0x10a)+alignedApkPath),process[_0x434724(0xdc)](0x1);
|