springboot 下 java 調(diào)用 apktool

  • 從官網(wǎng)下apktool.jar
  • 把依賴加入gradle
    dependencies 下添加
compile files('tool/apktool.jar')

但是apktool和springboot 里面的依賴沖突了 報(bào) java.lang.NoSuchMethodError
從報(bào)錯(cuò)種找到相關(guān)包:

  • org.yaml.snakeyaml
    springboot 下是1.25
    apktool 下是 1.12
    好吧
  • 要么編譯springboot 要么編譯 apktool
  • 本著新版本應(yīng)該會向老版本兼容的原則 嘗試把 apktool 的 snakeyaml 從1.12提升到1.25

編譯 apktool

snakeyaml: 'org.yaml:snakeyaml:1.12:android',
修改為
snakeyaml: 'org.yaml:snakeyaml:1.25:android',
  • gradlew.bat 秒閃后退出 看不清報(bào)錯(cuò)信息
    修改gradlew.bat 在 :execute 后加 pause 看報(bào)錯(cuò)信息
:execute
@rem Setup the command line

set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
pause

+看到原因 Unsupported class file major version 57
好吧 jdk13 不支持 換jdk 8
重新編譯成功

  • 文件在: brut.apktool/apktool-cli, 沒看到這句話 糾結(jié)了1kb好久
After build completes you should have a jar file at: ./brut.apktool/apktool-cli/build/libs/apktool-xxxxx.jar
import brut.androlib.Androlib;
import brut.androlib.AndrolibException;
import brut.androlib.ApkDecoder;
import brut.common.BrutException;
import brut.directory.DirectoryException;

import java.io.File;
import java.io.IOException;

public class ApkToolKit {
    static String rootPath = GetPath.getRootDir();
    static String appDir = rootPath + "apk/app";
    static String appDir2 = rootPath + "apk/app2";
    static String outApk = rootPath + "apk/app.apk";
    public static void Build(){
        Androlib instance = new Androlib();
        try {
            instance.build(new File(appDir) , new File(outApk));
        } catch (BrutException e) {
            e.printStackTrace();
        }
        System.out.println("buildApk done");
    }

    public static void Decde(){
        try {
            File inFile = new File(outApk);
            ApkDecoder decoder = new ApkDecoder();
            decoder.setOutDir(new File(appDir2));
            decoder.setApkFile(inFile);
            decoder.decode();
        } catch (IOException|AndrolibException | DirectoryException e) {
            e.printStackTrace();
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容