Skip to content

Commit 68383dc

Browse files
committed
Allow change of minSdkVersion via settings
1 parent 63df81e commit 68383dc

6 files changed

Lines changed: 33 additions & 11 deletions

File tree

src/main/java/the/bytecode/club/bytecodeviewer/SettingsSerializer.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ public static synchronized void saveSettings()
163163
save("deprecated");
164164
save("deprecated");
165165
save("deprecated");
166-
save(BytecodeViewer.viewer.fontSpinner.getValue());
166+
save(BytecodeViewer.viewer.getFontSize());
167167
save(Configuration.deleteForeignLibraries);
168168

169169
if (BytecodeViewer.viewer.apkConversionGroup.isSelected(BytecodeViewer.viewer.apkConversionDex.getModel()))
@@ -200,6 +200,7 @@ else if (BytecodeViewer.viewer.apkConversionGroup.isSelected(BytecodeViewer.view
200200
save(Configuration.lastPluginDirectory);
201201
save(Configuration.python2Extra);
202202
save(Configuration.python3Extra);
203+
save(BytecodeViewer.viewer.getMinSdkVersion());
203204
} catch (Exception e) {
204205
BytecodeViewer.handleException(e);
205206
}
@@ -396,6 +397,7 @@ public static void loadSettings()
396397
Configuration.lastPluginDirectory = asString(138);
397398
Configuration.python2Extra = asBoolean(139);
398399
Configuration.python3Extra = asBoolean(140);
400+
BytecodeViewer.viewer.minSdkVersionSpinner.setValue(asInt(141));
399401
}
400402
catch (IndexOutOfBoundsException e)
401403
{
@@ -426,4 +428,4 @@ public static int asInt(int lineNumber) throws Exception
426428
{
427429
return Integer.parseInt(DiskReader.loadString(settingsName, lineNumber, false));
428430
}
429-
}
431+
}

src/main/java/the/bytecode/club/bytecodeviewer/gui/MainViewerGUI.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,11 @@ public class MainViewerGUI extends JFrame
266266
public final JCheckBoxMenuItem recoveryTypehInts = new TranslatedJCheckBoxMenuItem("Recover Type Hints", TranslatedComponents.RECOVER_TYPE__HINTS);
267267
public final JCheckBoxMenuItem forceTurningIFs = new TranslatedJCheckBoxMenuItem("Force Returning IFs", TranslatedComponents.FORCE_RETURNING_IFS);
268268
public final JCheckBoxMenuItem forLoopAGGCapture = new TranslatedJCheckBoxMenuItem("For Loop AGG Capture", TranslatedComponents.FOR_LOOP_AGG_CAPTURE);
269-
269+
270+
//Smali/D2Jar
271+
public final JMenu minSdkVersionMenu = new TranslatedJMenu("Minimum SDK version", TranslatedComponents.MIN_SDK_VERSION);
272+
public final JSpinner minSdkVersionSpinner = new JSpinner();
273+
270274
//obfuscation
271275
public final JMenu obfuscate = new JMenu("Obfuscate");
272276
public final JMenuItem renameFields = new JMenuItem("Rename Fields");
@@ -611,6 +615,13 @@ public void buildSettingsMenu()
611615
bytecodeDecompilerSettingsSecondaryMenu.add(appendBracketsToLabels);
612616
bytecodeDecompilerSettingsDialog = new SettingsDialog(bytecodeDecompilerSettingsSecondaryMenu, new JPanel());
613617
bytecodeDecompilerSettings.addActionListener((e)-> bytecodeDecompilerSettingsDialog.showDialog());
618+
619+
//Smali minSdkVersion
620+
minSdkVersionSpinner.setPreferredSize(new Dimension(60, 24));
621+
minSdkVersionSpinner.setMinimumSize(new Dimension(60, 24));
622+
minSdkVersionSpinner.setModel(new SpinnerNumberModel(26, 1, null, 1));
623+
minSdkVersionMenu.add(minSdkVersionSpinner);
624+
settingsMainMenu.add(minSdkVersionMenu);
614625

615626
deleteForeignOutdatedLibs.addActionListener(arg0 -> showForeignLibraryWarning());
616627
forcePureAsciiAsText.addActionListener(arg0 -> SettingsSerializer.saveSettingsAsync());
@@ -798,6 +809,11 @@ public int getFontSize()
798809
{
799810
return (int) fontSpinner.getValue();
800811
}
812+
813+
public int getMinSdkVersion()
814+
{
815+
return (int) minSdkVersionSpinner.getValue();
816+
}
801817

802818
public synchronized void clearBusyStatus()
803819
{
@@ -968,4 +984,4 @@ public void updateTabTheme()
968984
}
969985

970986
public static final long serialVersionUID = 1851409230530948543L;
971-
}
987+
}

src/main/java/the/bytecode/club/bytecodeviewer/translation/TranslatedComponents.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,7 @@ public enum TranslatedComponents
250250
DESC,
251251
RESULTS,
252252
REFRESH,
253+
MIN_SDK_VERSION,
253254

254255
;
255256

@@ -265,4 +266,4 @@ public TranslatedComponentReference getTranslatedComponentReference()
265266
{
266267
return componentReference;
267268
}
268-
}
269+
}

src/main/java/the/bytecode/club/bytecodeviewer/util/Dex2Jar.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
package the.bytecode.club.bytecodeviewer.util;
22

33
import com.googlecode.d2j.dex.Dex2jar;
4-
import the.bytecode.club.bytecodeviewer.BytecodeViewer;
5-
64
import java.io.File;
5+
import the.bytecode.club.bytecodeviewer.BytecodeViewer;
76

87
/***************************************************************************
98
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
@@ -60,7 +59,9 @@ public static synchronized void saveAsDex(File input, File output) {
6059

6160
public static synchronized void saveAsDex(File input, File output, boolean delete) {
6261
try {
63-
com.googlecode.dex2jar.tools.Jar2Dex.main(input.getAbsolutePath(), "-o", output.getAbsolutePath());
62+
com.googlecode.dex2jar.tools.Jar2Dex.main(input.getAbsolutePath(),
63+
"-o", output.getAbsolutePath(),
64+
"-s", BytecodeViewer.viewer.getMinSdkVersion() + "");
6465
if (delete)
6566
input.delete();
6667
} catch (Exception e) {

src/main/resources/translations/english.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -279,5 +279,6 @@
279279
"SAVE": "Save...",
280280
"SAVE_AS": "Save As...",
281281
"RESULTS": "Results",
282-
"REFRESH": "Refresh"
283-
}
282+
"REFRESH": "Refresh",
283+
"MIN_SDK_VERSION": "Minimum SDK version"
284+
}

src/main/resources/translations/german.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,5 +254,6 @@
254254
"CLOSE_ALL_BUT_THIS": "Alle außer diesen schließen",
255255
"CLOSE_TAB": "Tab schließen",
256256
"PLEASE_SEND_THIS_ERROR_LOG_TO": "Bitte senden Sie dieses Fehlerprotokoll an",
257-
"PLEASE_SEND_RESOURCES": "Wenn Sie entsprechende gesetzliche Rechte an der jeweiligen Klasse besitzen"
257+
"PLEASE_SEND_RESOURCES": "Wenn Sie entsprechende gesetzliche Rechte an der jeweiligen Klasse besitzen",
258+
"MIN_SDK_VERSION": "Minimale SDK-Version"
258259
}

0 commit comments

Comments
 (0)