mirror of
https://github.com/revanced/Apktool.git
synced 2025-01-07 10:35:52 +01:00
Fix regressions towards apktool.yml generation (#3172)
* fix: prevent blowing out minSdkVersion * fix: correct naming regression with apk name and sdk info * chore: comment for why we double up minSdkVersion * fix: deprecate compressionType * test: assert apktool format isn't regressed
This commit is contained in:
parent
ab4069306c
commit
ca07a0a56c
@ -132,9 +132,11 @@ public class ApkDecoder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// In case we have no resources. We should store the minSdk we pulled from the source opcode api level
|
||||||
ApkInfo apkInfo = resourcesDecoder.getApkInfo();
|
ApkInfo apkInfo = resourcesDecoder.getApkInfo();
|
||||||
if (mMinSdkVersion > 0) {
|
if (mMinSdkVersion > 0) {
|
||||||
apkInfo.setSdkInfo(getMinSdkInfo());
|
apkInfo.setSdkInfoField("minSdkVersion", Integer.toString(mMinSdkVersion));
|
||||||
}
|
}
|
||||||
|
|
||||||
copyRawFiles(outDir);
|
copyRawFiles(outDir);
|
||||||
@ -183,12 +185,6 @@ public class ApkDecoder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<String, String> getMinSdkInfo() {
|
|
||||||
Map<String, String> sdkInfo = new LinkedHashMap<>();
|
|
||||||
sdkInfo.put("minSdkVersion", Integer.toString(mMinSdkVersion));
|
|
||||||
return sdkInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void copySourcesRaw(File outDir, String filename)
|
private void copySourcesRaw(File outDir, String filename)
|
||||||
throws AndrolibException {
|
throws AndrolibException {
|
||||||
try {
|
try {
|
||||||
|
@ -35,10 +35,10 @@ import java.util.Map;
|
|||||||
public class ApkInfo {
|
public class ApkInfo {
|
||||||
public String version;
|
public String version;
|
||||||
|
|
||||||
private String mApkFileName;
|
private String apkFileName;
|
||||||
public boolean isFrameworkApk;
|
public boolean isFrameworkApk;
|
||||||
public UsesFramework usesFramework;
|
public UsesFramework usesFramework;
|
||||||
private Map<String, String> mSdkInfo = new LinkedHashMap<>();
|
private Map<String, String> sdkInfo = new LinkedHashMap<>();
|
||||||
public PackageInfo packageInfo = new PackageInfo();
|
public PackageInfo packageInfo = new PackageInfo();
|
||||||
public VersionInfo versionInfo = new VersionInfo();
|
public VersionInfo versionInfo = new VersionInfo();
|
||||||
public boolean resourcesAreCompressed;
|
public boolean resourcesAreCompressed;
|
||||||
@ -47,6 +47,9 @@ public class ApkInfo {
|
|||||||
public Map<String, String> unknownFiles;
|
public Map<String, String> unknownFiles;
|
||||||
public Collection<String> doNotCompress;
|
public Collection<String> doNotCompress;
|
||||||
|
|
||||||
|
/** @deprecated use {@link #resourcesAreCompressed} */
|
||||||
|
public boolean compressionType;
|
||||||
|
|
||||||
public ApkInfo() {
|
public ApkInfo() {
|
||||||
this.version = ApktoolProperties.getVersion();
|
this.version = ApktoolProperties.getVersion();
|
||||||
}
|
}
|
||||||
@ -83,38 +86,42 @@ public class ApkInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String getApkFileName() {
|
public String getApkFileName() {
|
||||||
return mApkFileName;
|
return apkFileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setApkFileName(String apkFileName) {
|
public void setApkFileName(String apkFileName) {
|
||||||
mApkFileName = apkFileName;
|
this.apkFileName = apkFileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, String> getSdkInfo() {
|
public Map<String, String> getSdkInfo() {
|
||||||
return mSdkInfo;
|
return sdkInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSdkInfo(Map<String, String> sdkInfo) {
|
public void setSdkInfo(Map<String, String> sdkInfo) {
|
||||||
mSdkInfo = sdkInfo;
|
this.sdkInfo = sdkInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSdkInfoField(String key, String value) {
|
||||||
|
sdkInfo.put(key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getMinSdkVersion() {
|
public String getMinSdkVersion() {
|
||||||
return mSdkInfo.get("minSdkVersion");
|
return sdkInfo.get("minSdkVersion");
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getMaxSdkVersion() {
|
public String getMaxSdkVersion() {
|
||||||
return mSdkInfo.get("maxSdkVersion");
|
return sdkInfo.get("maxSdkVersion");
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTargetSdkVersion() {
|
public String getTargetSdkVersion() {
|
||||||
return mSdkInfo.get("targetSdkVersion");
|
return sdkInfo.get("targetSdkVersion");
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getMinSdkVersionFromAndroidCodename(String sdkVersion) {
|
public int getMinSdkVersionFromAndroidCodename(String sdkVersion) {
|
||||||
int sdkNumber = mapSdkShorthandToVersion(sdkVersion);
|
int sdkNumber = mapSdkShorthandToVersion(sdkVersion);
|
||||||
|
|
||||||
if (sdkNumber == ResConfigFlags.SDK_BASE) {
|
if (sdkNumber == ResConfigFlags.SDK_BASE) {
|
||||||
return Integer.parseInt(mSdkInfo.get("minSdkVersion"));
|
return Integer.parseInt(sdkInfo.get("minSdkVersion"));
|
||||||
}
|
}
|
||||||
return sdkNumber;
|
return sdkNumber;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2010 Ryszard Wiśniewski <brut.alll@gmail.com>
|
||||||
|
* Copyright (C) 2010 Connor Tumbleson <connor.tumbleson@gmail.com>
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package brut.androlib.yaml;
|
||||||
|
|
||||||
|
import brut.androlib.BaseTest;
|
||||||
|
import brut.androlib.TestUtils;
|
||||||
|
import brut.androlib.apk.ApkInfo;
|
||||||
|
import brut.common.BrutException;
|
||||||
|
import brut.directory.ExtFile;
|
||||||
|
import brut.util.OS;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
|
import org.junit.Test;
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
public class ConsistentPropertyTest extends BaseTest {
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void beforeClass() throws Exception {
|
||||||
|
TestUtils.cleanFrameworkFile();
|
||||||
|
|
||||||
|
sTmpDir = new ExtFile(OS.createTempDirectory());
|
||||||
|
sTestNewDir = new ExtFile(sTmpDir, "yaml");
|
||||||
|
LOGGER.info("Unpacking yaml files...");
|
||||||
|
TestUtils.copyResourceDir(ConsistentPropertyTest.class, "decode/yaml/", sTestNewDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAssertingAllKnownApkInfoProperties() throws BrutException {
|
||||||
|
ApkInfo apkInfo = ApkInfo.load(new File(sTestNewDir, "basic"));
|
||||||
|
|
||||||
|
assertEquals("2.8.0", apkInfo.version);
|
||||||
|
assertEquals("basic.apk", apkInfo.getApkFileName());
|
||||||
|
assertFalse(apkInfo.isFrameworkApk);
|
||||||
|
assertEquals(1, apkInfo.usesFramework.ids.size());
|
||||||
|
assertEquals("tag", apkInfo.usesFramework.tag);
|
||||||
|
assertEquals("4", apkInfo.getMinSdkVersion());
|
||||||
|
assertEquals("22", apkInfo.getTargetSdkVersion());
|
||||||
|
assertEquals("30", apkInfo.getMaxSdkVersion());
|
||||||
|
assertEquals("127", apkInfo.packageInfo.forcedPackageId);
|
||||||
|
assertEquals("com.test.basic", apkInfo.packageInfo.renameManifestPackage);
|
||||||
|
assertEquals("71", apkInfo.versionInfo.versionCode);
|
||||||
|
assertEquals("1.0.70", apkInfo.versionInfo.versionName);
|
||||||
|
assertFalse(apkInfo.resourcesAreCompressed);
|
||||||
|
assertFalse(apkInfo.sharedLibrary);
|
||||||
|
assertTrue(apkInfo.sparseResources);
|
||||||
|
assertEquals(1, apkInfo.unknownFiles.size());
|
||||||
|
assertEquals(2, apkInfo.doNotCompress.size());
|
||||||
|
assertFalse(apkInfo.compressionType);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
!!brut.androlib.meta.MetaInfo
|
||||||
|
apkFileName: basic.apk
|
||||||
|
compressionType: false
|
||||||
|
doNotCompress:
|
||||||
|
- resources.arsc
|
||||||
|
- png
|
||||||
|
isFrameworkApk: false
|
||||||
|
packageInfo:
|
||||||
|
forcedPackageId: '127'
|
||||||
|
renameManifestPackage: 'com.test.basic'
|
||||||
|
sdkInfo:
|
||||||
|
minSdkVersion: '4'
|
||||||
|
maxSdkVersion: '30'
|
||||||
|
targetSdkVersion: '22'
|
||||||
|
sharedLibrary: false
|
||||||
|
sparseResources: true
|
||||||
|
unknownFiles:
|
||||||
|
hidden.file: 1
|
||||||
|
usesFramework:
|
||||||
|
ids:
|
||||||
|
- 1
|
||||||
|
tag: 'tag'
|
||||||
|
version: 2.8.0
|
||||||
|
versionInfo:
|
||||||
|
versionCode: '71'
|
||||||
|
versionName: 1.0.70
|
Loading…
Reference in New Issue
Block a user