Node.js 에서 APK 파일을 읽어서 Java 파일로 만들어 줍니다.
js 파일과 같은 위치에 programs 폴더가 있어야 하고
그 안에 7-Zip, dex2jar-2.0, jd-cli-0.9.1 프로그램이 있어야 하고
apk, sources 폴더가 있어야 합니다.
apk 폴더 안에 풀고 싶은 apk 파일을 넣고 인자로 주면 sources에 풀립니다.
제가 만들었고 라이센스 없습니다.
apk2java
exports.apk2java = function(apkName){
var nodePath=process.cwd();
var programsPath=nodePath+"\\programs";
const exec = require('child_process').exec;
var d = new Date();
var folderName=d.getTime();
var srcPath=programsPath+"\\sources\\"+folderName;
 
 console.log("Start APK -> Zip -> dex");
 exec(programsPath+"\\7-Zip\\7z.exe x \""+programsPath+"\\apk\\"+apkName+"\" -y -o"+srcPath, (err, stdout, stderr) => {
  if (err) {
   console.error(err);
   console.log("End - Fail.");
   return;
  }
  if(stderr){
   console.log("stderr");
   //console.error(stderr);
  } 
   console.log("Start APK -> Zip -> dex -> jar");
   exec(programsPath+"\\dex2jar-2.0\\d2j-dex2jar.bat "+srcPath+"\\classes.dex "+"-o "+srcPath+"\\classes.jar", (err, stdout, stderr) => {
  if (err) {
   console.log("err");
   console.error(err);
   console.log("End - Fail.");
   return;
  }  
  if(stderr){
   console.log("stderr");
   //console.error(stderr);
  } 
  console.log("Start APK -> Zip -> dex -> jar -> java");
  exec("java -jar "+programsPath+"\\jd-cli-0.9.1\\jd-cli.jar -od "+srcPath+"\\javaSrc "+srcPath+"\\classes.jar", (err, stdout, stderr) => {
   if (err) {
    console.error(err);
    console.log("End - Fail.");
    return;
   }  
   if(stderr){
    console.log("stderr");
   } 
   //console.log(stdout);
   console.log("End - Success.");
   
  });
   });
 });
}
 
