Skip to content

Commit 8cb3b62

Browse files
committed
fix output class file names on windows
1 parent f85a4d3 commit 8cb3b62

File tree

3 files changed

+14
-6
lines changed

3 files changed

+14
-6
lines changed

README.md

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,23 @@ Also, this tool does not particulary obfuscates your code, it just transpiles it
4444

4545
### General usage:
4646
```
47-
Usage: native-obfuscator [-hV] [-b=<blackListFile>] [-l=<librariesDirectory>]
48-
[--plain-lib-name=<libraryName>] [-w=<whiteListFile>]
49-
<jarFile> <outputDirectory>
47+
Usage: native-obfuscator [-ahV] [-b=<blackListFile>] [-l=<librariesDirectory>]
48+
[-p=<platform>] [--plain-lib-name=<libraryName>]
49+
[-w=<whiteListFile>] <jarFile> <outputDirectory>
5050
Transpiles .jar file into .cpp files and generates output .jar file
5151
<jarFile> Jar file to transpile
5252
<outputDirectory> Output directory
53+
-a, --annotations Use annotations to ignore/include native obfuscation
5354
-b, --black-list=<blackListFile>
5455
File with list of blacklist classes/methods for
5556
transpilation
5657
-h, --help Show this help message and exit.
5758
-l, --libraries=<librariesDirectory>
5859
Directory for dependent libraries
60+
-p, --platform=<platform>
61+
Target platform: hotspot - standard standalone
62+
HotSpot JRE, std_java - java standard (as for
63+
Android)
5964
--plain-lib-name=<libraryName>
6065
Plain library name for LoaderPlain
6166
-V, --version Print version information and exit.

obfuscator/src/main/java/by/radioegor146/NativeObfuscator.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@ public void process(Path inputJarPath, Path outputDir, List<Path> inputLibs,
146146

147147
staticClassProvider = new InterfaceStaticClassProvider(nativeDir);
148148

149+
Integer[] classIndexReference = new Integer[]{0};
150+
149151
jar.stream().forEach(entry -> {
150152
if (entry.getName().equals(JarFile.MANIFEST_NAME)) return;
151153

@@ -213,7 +215,8 @@ public void process(Path inputJarPath, Path outputDir, List<Path> inputLibs,
213215
cachedMethods.clear();
214216
cachedFields.clear();
215217

216-
try (ClassSourceBuilder cppBuilder = new ClassSourceBuilder(cppOutput, classNode.name, stringPool)) {
218+
try (ClassSourceBuilder cppBuilder =
219+
new ClassSourceBuilder(cppOutput, classNode.name, classIndexReference[0]++, stringPool)) {
217220
StringBuilder instructions = new StringBuilder();
218221

219222
for (int i = 0; i < classNode.methods.size(); i++) {

obfuscator/src/main/java/by/radioegor146/source/ClassSourceBuilder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ public class ClassSourceBuilder implements AutoCloseable {
2323

2424
private final StringPool stringPool;
2525

26-
public ClassSourceBuilder(Path cppOutputDir, String className, StringPool stringPool) throws IOException {
26+
public ClassSourceBuilder(Path cppOutputDir, String className, int classIndex, StringPool stringPool) throws IOException {
2727
this.className = className;
2828
this.stringPool = stringPool;
29-
filename = Util.escapeCppNameString(className.replace('/', '_'));
29+
filename = String.format("%s_%d", Util.escapeCppNameString(className.replace('/', '_')), classIndex);
3030

3131
cppFile = cppOutputDir.resolve(filename.concat(".cpp"));
3232
hppFile = cppOutputDir.resolve(filename.concat(".hpp"));

0 commit comments

Comments
 (0)