From aa64e591ff37f391439478e4b21cfa126abaf384 Mon Sep 17 00:00:00 2001 From: REAndroid Date: Thu, 4 May 2023 21:35:53 +0200 Subject: [PATCH] user preferred framework & prefer compileSdkVersion #39 --- .../java/com/reandroid/apk/ApkModule.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/reandroid/apk/ApkModule.java b/src/main/java/com/reandroid/apk/ApkModule.java index beb6283..75214a3 100644 --- a/src/main/java/com/reandroid/apk/ApkModule.java +++ b/src/main/java/com/reandroid/apk/ApkModule.java @@ -57,6 +57,7 @@ public class ApkModule implements ApkFile { private Decoder mDecoder; private ApkType mApkType; private ApkSignatureBlock apkSignatureBlock; + private Integer preferredFramework; public ApkModule(String moduleName, APKArchive apkArchive){ this.moduleName=moduleName; @@ -209,17 +210,37 @@ public class ApkModule implements ApkFile { } return null; } + + public void setPreferredFramework(Integer version) throws IOException { + if(version!=null && version.equals(preferredFramework)){ + return; + } + this.preferredFramework = version; + if(version == null || mTableBlock==null){ + return; + } + logMessage("Initializing preferred framework: " + version); + mTableBlock.clearFrameworks(); + FrameworkApk frameworkApk = AndroidFrameworks.getBestMatch(version); + AndroidFrameworks.setCurrent(frameworkApk); + mTableBlock.addFramework(frameworkApk.getTableBlock()); + logMessage("Initialized framework: " + frameworkApk.getVersionCode()); + } + public Integer getAndroidFrameworkVersion(){ + if(preferredFramework != null){ + return preferredFramework; + } if(!hasAndroidManifestBlock()){ return null; } AndroidManifestBlock manifestBlock = getAndroidManifestBlock(); - Integer version = manifestBlock.getTargetSdkVersion(); + Integer version = manifestBlock.getCompileSdkVersion(); if(version == null){ version = manifestBlock.getPlatformBuildVersionCode(); } if(version == null){ - version = manifestBlock.getCompileSdkVersion(); + version = manifestBlock.getTargetSdkVersion(); } return version; }