commit
a2490f99d7
32 changed files with 59 additions and 39 deletions
4
.github/workflows/maven.yml
vendored
4
.github/workflows/maven.yml
vendored
|
@ -14,7 +14,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
java: [ '8', '11', '16' ] # All currently supported versions
|
java: [ '8', '11', '17-ea' ] # LTS versions
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
@ -22,7 +22,7 @@ jobs:
|
||||||
uses: actions/setup-java@v2
|
uses: actions/setup-java@v2
|
||||||
with:
|
with:
|
||||||
java-version: ${{ matrix.java }}
|
java-version: ${{ matrix.java }}
|
||||||
distribution: 'adopt'
|
distribution: 'temurin'
|
||||||
- name: Build with Maven
|
- name: Build with Maven
|
||||||
run: mvn -B package --file pom.xml
|
run: mvn -B package --file pom.xml
|
||||||
- name: Extract Maven project version
|
- name: Extract Maven project version
|
||||||
|
|
|
@ -19,5 +19,6 @@ Some dependencies may have been modified or could be released by their author in
|
||||||
|
|
||||||
#### Modifications
|
#### Modifications
|
||||||
|
|
||||||
|
- `ByteAnalysis`: Compiled from source with the newest dependency versions
|
||||||
|
- `APKTool`: Added the `apktool-cli` subproject, compiled without changes from source
|
||||||
- `JD-GUI`: Removed ASM, RSyntaxTextArea, ANTLR, and TreeLayout
|
- `JD-GUI`: Removed ASM, RSyntaxTextArea, ANTLR, and TreeLayout
|
||||||
- `APKTool`: Recompiled with the newest dependency versions, removed prebuilt folder
|
|
||||||
|
|
BIN
libs/org/apktool/apktool-cli/2.6.0/apktool-cli-2.6.0.jar
Normal file
BIN
libs/org/apktool/apktool-cli/2.6.0/apktool-cli-2.6.0.jar
Normal file
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
92750a855f488f5b90b4ee75352d53cc
|
|
@ -0,0 +1 @@
|
||||||
|
f84f12d4a024aa00fa314229c748c971c984f8ae
|
|
@ -3,6 +3,6 @@
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.apktool</groupId>
|
<groupId>org.apktool</groupId>
|
||||||
<artifactId>apktool</artifactId>
|
<artifactId>apktool-cli</artifactId>
|
||||||
<version>2.5.0bcv2</version>
|
<version>2.6.0</version>
|
||||||
</project>
|
</project>
|
|
@ -0,0 +1 @@
|
||||||
|
32d7606cd2e4eb5ec99cf13a1f623a2c
|
|
@ -0,0 +1 @@
|
||||||
|
b7c5e3e3a20e7601b18d45f594ecaf0d31e0047c
|
|
@ -1,12 +1,12 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<metadata>
|
<metadata>
|
||||||
<groupId>org.apktool</groupId>
|
<groupId>org.apktool</groupId>
|
||||||
<artifactId>apktool</artifactId>
|
<artifactId>apktool-cli</artifactId>
|
||||||
<versioning>
|
<versioning>
|
||||||
<release>2.5.0bcv2</release>
|
<release>2.6.0</release>
|
||||||
<versions>
|
<versions>
|
||||||
<version>2.5.0bcv2</version>
|
<version>2.6.0</version>
|
||||||
</versions>
|
</versions>
|
||||||
<lastUpdated>20210622201718</lastUpdated>
|
<lastUpdated>20210916084410</lastUpdated>
|
||||||
</versioning>
|
</versioning>
|
||||||
</metadata>
|
</metadata>
|
1
libs/org/apktool/apktool-cli/maven-metadata.xml.md5
Normal file
1
libs/org/apktool/apktool-cli/maven-metadata.xml.md5
Normal file
|
@ -0,0 +1 @@
|
||||||
|
5cf5e3c60d76f6bc05317852c0dee46c
|
1
libs/org/apktool/apktool-cli/maven-metadata.xml.sha1
Normal file
1
libs/org/apktool/apktool-cli/maven-metadata.xml.sha1
Normal file
|
@ -0,0 +1 @@
|
||||||
|
33442f1de71c010486efa6d68d221cecd8bf185e
|
Binary file not shown.
|
@ -1 +0,0 @@
|
||||||
7d96a4ccc7289d0f0f476c618a6315a8
|
|
|
@ -1 +0,0 @@
|
||||||
f3aad98eee64a34566ae6b971b59a3fb27c897a5
|
|
|
@ -1 +0,0 @@
|
||||||
f13d5769cd41299e8727973044de6326
|
|
|
@ -1 +0,0 @@
|
||||||
8750ebdb9af548b87d7f4597f65ca49262de7033
|
|
|
@ -1 +0,0 @@
|
||||||
04af915c4a9139dff66855fe769239f1
|
|
|
@ -1 +0,0 @@
|
||||||
1f365a9ab11f7213c747f379cf8d4220dc1b7fab
|
|
16
pom.xml
16
pom.xml
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
<!-- Dependency versions -->
|
<!-- Dependency versions -->
|
||||||
<annotations.version>22.0.0</annotations.version>
|
<annotations.version>22.0.0</annotations.version>
|
||||||
<apktool.version>2.5.0bcv2</apktool.version>
|
<apktool.version>2.6.0</apktool.version>
|
||||||
<asm.version>9.2</asm.version>
|
<asm.version>9.2</asm.version>
|
||||||
<bined.version>0.2.0</bined.version>
|
<bined.version>0.2.0</bined.version>
|
||||||
<cfr.version>0.151</cfr.version>
|
<cfr.version>0.151</cfr.version>
|
||||||
|
@ -77,9 +77,20 @@
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apktool</groupId>
|
<groupId>org.apktool</groupId>
|
||||||
<artifactId>apktool</artifactId>
|
<artifactId>apktool-cli</artifactId>
|
||||||
<version>${apktool.version}</version>
|
<version>${apktool.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apktool</groupId>
|
||||||
|
<artifactId>apktool-lib</artifactId>
|
||||||
|
<version>${apktool.version}</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.yaml</groupId>
|
||||||
|
<artifactId>snakeyaml</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.ow2.asm</groupId>
|
<groupId>org.ow2.asm</groupId>
|
||||||
<artifactId>asm</artifactId>
|
<artifactId>asm</artifactId>
|
||||||
|
@ -360,6 +371,7 @@
|
||||||
<configuration>
|
<configuration>
|
||||||
<source>${java.version}</source>
|
<source>${java.version}</source>
|
||||||
<target>${java.version}</target>
|
<target>${java.version}</target>
|
||||||
|
<showDeprecation>true</showDeprecation>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
|
|
|
@ -44,7 +44,7 @@ public class GlobalHotKeys
|
||||||
|
|
||||||
//CTRL + O
|
//CTRL + O
|
||||||
//open resource
|
//open resource
|
||||||
if ((e.getKeyCode() == KeyEvent.VK_O) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0))
|
if ((e.getKeyCode() == KeyEvent.VK_O) && ((e.getModifiersEx() & KeyEvent.CTRL_DOWN_MASK) != 0))
|
||||||
{
|
{
|
||||||
Configuration.lastHotKeyExecuted = System.currentTimeMillis();
|
Configuration.lastHotKeyExecuted = System.currentTimeMillis();
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ public class GlobalHotKeys
|
||||||
|
|
||||||
//CTRL + N
|
//CTRL + N
|
||||||
//new workspace
|
//new workspace
|
||||||
else if ((e.getKeyCode() == KeyEvent.VK_N) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0))
|
else if ((e.getKeyCode() == KeyEvent.VK_N) && ((e.getModifiersEx() & KeyEvent.CTRL_DOWN_MASK) != 0))
|
||||||
{
|
{
|
||||||
Configuration.lastHotKeyExecuted = System.currentTimeMillis();
|
Configuration.lastHotKeyExecuted = System.currentTimeMillis();
|
||||||
BytecodeViewer.resetWorkspace(true);
|
BytecodeViewer.resetWorkspace(true);
|
||||||
|
@ -70,7 +70,7 @@ public class GlobalHotKeys
|
||||||
|
|
||||||
//CTRL + T
|
//CTRL + T
|
||||||
//compile
|
//compile
|
||||||
else if ((e.getKeyCode() == KeyEvent.VK_T) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0))
|
else if ((e.getKeyCode() == KeyEvent.VK_T) && ((e.getModifiersEx() & KeyEvent.CTRL_DOWN_MASK) != 0))
|
||||||
{
|
{
|
||||||
Configuration.lastHotKeyExecuted = System.currentTimeMillis();
|
Configuration.lastHotKeyExecuted = System.currentTimeMillis();
|
||||||
Thread t = new Thread(() -> BytecodeViewer.compile(true, false), "Compile");
|
Thread t = new Thread(() -> BytecodeViewer.compile(true, false), "Compile");
|
||||||
|
@ -79,7 +79,7 @@ public class GlobalHotKeys
|
||||||
|
|
||||||
//CTRL + R
|
//CTRL + R
|
||||||
//Run remote code
|
//Run remote code
|
||||||
else if ((e.getKeyCode() == KeyEvent.VK_R) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0))
|
else if ((e.getKeyCode() == KeyEvent.VK_R) && ((e.getModifiersEx() & KeyEvent.CTRL_DOWN_MASK) != 0))
|
||||||
{
|
{
|
||||||
Configuration.lastHotKeyExecuted = System.currentTimeMillis();
|
Configuration.lastHotKeyExecuted = System.currentTimeMillis();
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ public class GlobalHotKeys
|
||||||
|
|
||||||
//CTRL + S
|
//CTRL + S
|
||||||
//Export resources
|
//Export resources
|
||||||
else if ((e.getKeyCode() == KeyEvent.VK_S) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0))
|
else if ((e.getKeyCode() == KeyEvent.VK_S) && ((e.getModifiersEx() & KeyEvent.CTRL_DOWN_MASK) != 0))
|
||||||
{
|
{
|
||||||
Configuration.lastHotKeyExecuted = System.currentTimeMillis();
|
Configuration.lastHotKeyExecuted = System.currentTimeMillis();
|
||||||
|
|
||||||
|
@ -137,7 +137,7 @@ public class GlobalHotKeys
|
||||||
|
|
||||||
//CTRL + W
|
//CTRL + W
|
||||||
//close active resource (currently opened tab)
|
//close active resource (currently opened tab)
|
||||||
else if ((e.getKeyCode() == KeyEvent.VK_W) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0))
|
else if ((e.getKeyCode() == KeyEvent.VK_W) && ((e.getModifiersEx() & KeyEvent.CTRL_DOWN_MASK) != 0))
|
||||||
{
|
{
|
||||||
Configuration.lastHotKeyExecuted = System.currentTimeMillis();
|
Configuration.lastHotKeyExecuted = System.currentTimeMillis();
|
||||||
|
|
||||||
|
@ -147,7 +147,7 @@ public class GlobalHotKeys
|
||||||
|
|
||||||
//CTRL + L
|
//CTRL + L
|
||||||
//open last opened resource
|
//open last opened resource
|
||||||
else if ((e.getKeyCode() == KeyEvent.VK_L) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0))
|
else if ((e.getKeyCode() == KeyEvent.VK_L) && ((e.getModifiersEx() & KeyEvent.CTRL_DOWN_MASK) != 0))
|
||||||
{
|
{
|
||||||
Configuration.lastHotKeyExecuted = System.currentTimeMillis();
|
Configuration.lastHotKeyExecuted = System.currentTimeMillis();
|
||||||
|
|
||||||
|
|
|
@ -134,8 +134,8 @@ public class ExceptionUI extends JFrameConsole
|
||||||
{
|
{
|
||||||
String fatJar = FAT_JAR ? " [Fat Jar]" : "";
|
String fatJar = FAT_JAR ? " [Fat Jar]" : "";
|
||||||
|
|
||||||
return TranslatedStrings.PLEASE_SEND_THIS_ERROR_LOG_TO.toString() + " " + author +
|
return TranslatedStrings.PLEASE_SEND_THIS_ERROR_LOG_TO + " " + author +
|
||||||
"\n" + TranslatedStrings.PLEASE_SEND_RESOURCES.toString() +
|
"\n" + TranslatedStrings.PLEASE_SEND_RESOURCES +
|
||||||
"\nBytecode Viewer Version: " + VERSION + fatJar +
|
"\nBytecode Viewer Version: " + VERSION + fatJar +
|
||||||
", OS: " + System.getProperty("os.name") +
|
", OS: " + System.getProperty("os.name") +
|
||||||
", Java: " + System.getProperty("java.version");
|
", Java: " + System.getProperty("java.version");
|
||||||
|
|
|
@ -12,6 +12,7 @@ import the.bytecode.club.bytecodeviewer.Constants;
|
||||||
import the.bytecode.club.bytecodeviewer.decompilers.InternalDecompiler;
|
import the.bytecode.club.bytecodeviewer.decompilers.InternalDecompiler;
|
||||||
import the.bytecode.club.bytecodeviewer.gui.components.JFrameConsolePrintStream;
|
import the.bytecode.club.bytecodeviewer.gui.components.JFrameConsolePrintStream;
|
||||||
import the.bytecode.club.bytecodeviewer.resources.ExternalResources;
|
import the.bytecode.club.bytecodeviewer.resources.ExternalResources;
|
||||||
|
import the.bytecode.club.bytecodeviewer.translation.TranslatedStrings;
|
||||||
import the.bytecode.club.bytecodeviewer.util.MiscUtils;
|
import the.bytecode.club.bytecodeviewer.util.MiscUtils;
|
||||||
|
|
||||||
import static the.bytecode.club.bytecodeviewer.Constants.fs;
|
import static the.bytecode.club.bytecodeviewer.Constants.fs;
|
||||||
|
@ -75,7 +76,6 @@ public class JavapDisassembler extends InternalDecompiler
|
||||||
//setup reflection
|
//setup reflection
|
||||||
Class<?> javap = child.loadClass("com.sun.tools.javap.Main");
|
Class<?> javap = child.loadClass("com.sun.tools.javap.Main");
|
||||||
Method main = javap.getMethod("main", String[].class);
|
Method main = javap.getMethod("main", String[].class);
|
||||||
Object cl = javap.newInstance();
|
|
||||||
|
|
||||||
//pipe sys out
|
//pipe sys out
|
||||||
sysOutBuffer = new JFrameConsolePrintStream("", false);
|
sysOutBuffer = new JFrameConsolePrintStream("", false);
|
||||||
|
@ -84,13 +84,17 @@ public class JavapDisassembler extends InternalDecompiler
|
||||||
BytecodeViewer.sm.silenceExec(true);
|
BytecodeViewer.sm.silenceExec(true);
|
||||||
|
|
||||||
//invoke Javap
|
//invoke Javap
|
||||||
main.invoke(cl, (Object) new String[]{
|
main.invoke(null, (Object) new String[]{
|
||||||
"-p", //Shows all classes and members
|
"-p", //Shows all classes and members
|
||||||
"-c", //Prints out disassembled code
|
"-c", //Prints out disassembled code
|
||||||
//"-l", //Prints out line and local variable tables
|
//"-l", //Prints out line and local variable tables
|
||||||
"-constants", //Shows static final constants
|
"-constants", //Shows static final constants
|
||||||
tempClass.getAbsolutePath()});
|
tempClass.getAbsolutePath()});
|
||||||
}
|
}
|
||||||
|
catch (IllegalAccessException e)
|
||||||
|
{
|
||||||
|
return TranslatedStrings.ILLEGAL_ACCESS_ERROR.toString();
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|
|
@ -215,7 +215,7 @@ public class ExtendedJOptionPane
|
||||||
else
|
else
|
||||||
dialog.setLocationRelativeTo(BytecodeViewer.viewer);
|
dialog.setLocationRelativeTo(BytecodeViewer.viewer);
|
||||||
|
|
||||||
dialog.show();
|
dialog.setVisible(true);
|
||||||
dialog.dispose();
|
dialog.dispose();
|
||||||
|
|
||||||
return dialog;
|
return dialog;
|
||||||
|
|
|
@ -82,7 +82,7 @@ public class SearchableJTextArea extends JTextArea
|
||||||
|
|
||||||
addKeyListener(new PressKeyListener(keyEvent ->
|
addKeyListener(new PressKeyListener(keyEvent ->
|
||||||
{
|
{
|
||||||
if ((keyEvent.getKeyCode() == KeyEvent.VK_F) && ((keyEvent.getModifiers() & KeyEvent.CTRL_MASK) != 0))
|
if ((keyEvent.getKeyCode() == KeyEvent.VK_F) && ((keyEvent.getModifiersEx() & KeyEvent.CTRL_DOWN_MASK) != 0))
|
||||||
searchInput.requestFocus();
|
searchInput.requestFocus();
|
||||||
|
|
||||||
GlobalHotKeys.keyPressed(keyEvent);
|
GlobalHotKeys.keyPressed(keyEvent);
|
||||||
|
|
|
@ -108,10 +108,10 @@ public class SearchableRSyntaxTextArea extends RSyntaxTextArea
|
||||||
|
|
||||||
addKeyListener(new PressKeyListener(keyEvent ->
|
addKeyListener(new PressKeyListener(keyEvent ->
|
||||||
{
|
{
|
||||||
if ((keyEvent.getKeyCode() == KeyEvent.VK_F) && ((keyEvent.getModifiers() & KeyEvent.CTRL_MASK) != 0))
|
if ((keyEvent.getKeyCode() == KeyEvent.VK_F) && ((keyEvent.getModifiersEx() & KeyEvent.CTRL_DOWN_MASK) != 0))
|
||||||
searchInput.requestFocus();
|
searchInput.requestFocus();
|
||||||
|
|
||||||
if (onCtrlS != null && (keyEvent.getKeyCode() == KeyEvent.VK_S) && ((keyEvent.getModifiers() & KeyEvent.CTRL_MASK) != 0))
|
if (onCtrlS != null && (keyEvent.getKeyCode() == KeyEvent.VK_S) && ((keyEvent.getModifiersEx() & KeyEvent.CTRL_DOWN_MASK) != 0))
|
||||||
{
|
{
|
||||||
onCtrlS.run();
|
onCtrlS.run();
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -101,7 +101,7 @@ public class TabbedPane extends JPanel
|
||||||
exitButton.setComponentPopupMenu(rightClickMenu);
|
exitButton.setComponentPopupMenu(rightClickMenu);
|
||||||
exitButton.addMouseListener(new MouseClickedListener(e ->
|
exitButton.addMouseListener(new MouseClickedListener(e ->
|
||||||
{
|
{
|
||||||
if (e.getModifiers() != InputEvent.ALT_MASK || System.currentTimeMillis() - lastMouseClick < 100)
|
if (e.getModifiersEx() != InputEvent.ALT_DOWN_MASK || System.currentTimeMillis() - lastMouseClick < 100)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
lastMouseClick = System.currentTimeMillis();
|
lastMouseClick = System.currentTimeMillis();
|
||||||
|
|
|
@ -299,7 +299,7 @@ public class EZInjection extends Plugin
|
||||||
if(kit != null)
|
if(kit != null)
|
||||||
kit.setVisible(true);
|
kit.setVisible(true);
|
||||||
|
|
||||||
m2.invoke(classNode.getClass().newInstance(), (Object[]) new String[1]);
|
m2.invoke(classNode.getClass().getDeclaredConstructor().newInstance(), (Object[]) new String[1]);
|
||||||
|
|
||||||
print("Finished running " + invokeMethodInformation);
|
print("Finished running " + invokeMethodInformation);
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,7 +61,7 @@ public class CompiledJavaPluginLaunchStrategy implements PluginLaunchStrategy {
|
||||||
}
|
}
|
||||||
|
|
||||||
LoadingClassLoader cl = new LoadingClassLoader(pdata, set);
|
LoadingClassLoader cl = new LoadingClassLoader(pdata, set);
|
||||||
Plugin p = cl.pluginKlass.newInstance();
|
Plugin p = cl.pluginKlass.getDeclaredConstructor().newInstance();
|
||||||
LoadedPluginData npdata = new LoadedPluginData(pdata, cl, p);
|
LoadedPluginData npdata = new LoadedPluginData(pdata, cl, p);
|
||||||
loaded.add(npdata);
|
loaded.add(npdata);
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,6 @@ public class JavaPluginLaunchStrategy implements PluginLaunchStrategy
|
||||||
);
|
);
|
||||||
|
|
||||||
//create a new instance of the class
|
//create a new instance of the class
|
||||||
return (Plugin) clazz.newInstance();
|
return (Plugin) clazz.getDeclaredConstructor().newInstance();
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -84,6 +84,7 @@ public enum TranslatedStrings
|
||||||
PLEASE_SEND_THIS_ERROR_LOG_TO,
|
PLEASE_SEND_THIS_ERROR_LOG_TO,
|
||||||
PLEASE_SEND_RESOURCES,
|
PLEASE_SEND_RESOURCES,
|
||||||
ONE_PLUGIN_AT_A_TIME,
|
ONE_PLUGIN_AT_A_TIME,
|
||||||
|
ILLEGAL_ACCESS_ERROR,
|
||||||
|
|
||||||
|
|
||||||
YES,
|
YES,
|
||||||
|
|
|
@ -263,6 +263,7 @@
|
||||||
"PLEASE_SEND_THIS_ERROR_LOG_TO": "Please send this error log to",
|
"PLEASE_SEND_THIS_ERROR_LOG_TO": "Please send this error log to",
|
||||||
"PLEASE_SEND_RESOURCES": "If you hold appropriate legal rights to the relevant class/jar/apk file please include that as well.",
|
"PLEASE_SEND_RESOURCES": "If you hold appropriate legal rights to the relevant class/jar/apk file please include that as well.",
|
||||||
"ONE_PLUGIN_AT_A_TIME": "There is currently another plugin running right now, please wait for that to finish executing.",
|
"ONE_PLUGIN_AT_A_TIME": "There is currently another plugin running right now, please wait for that to finish executing.",
|
||||||
|
"ILLEGAL_ACCESS_ERROR": "Please use Java 15 or older to do this.",
|
||||||
|
|
||||||
|
|
||||||
"FILES": "Files",
|
"FILES": "Files",
|
||||||
|
|
|
@ -255,5 +255,6 @@
|
||||||
"CLOSE_TAB": "Tab schließen",
|
"CLOSE_TAB": "Tab schließen",
|
||||||
"PLEASE_SEND_THIS_ERROR_LOG_TO": "Bitte senden Sie dieses Fehlerprotokoll an",
|
"PLEASE_SEND_THIS_ERROR_LOG_TO": "Bitte senden Sie dieses Fehlerprotokoll an",
|
||||||
"PLEASE_SEND_RESOURCES": "Wenn Sie entsprechende gesetzliche Rechte an der jeweiligen Klasse besitzen",
|
"PLEASE_SEND_RESOURCES": "Wenn Sie entsprechende gesetzliche Rechte an der jeweiligen Klasse besitzen",
|
||||||
"MIN_SDK_VERSION": "Minimale SDK-Version"
|
"MIN_SDK_VERSION": "Minimale SDK-Version",
|
||||||
|
"ILLEGAL_ACCESS_ERROR": "Bitte benutzen Sie Java 15 oder älter, um dies zu tun."
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue