Skip to content

Commit

Permalink
GUI进度bug修复
Browse files Browse the repository at this point in the history
  • Loading branch information
iamyours committed Jul 22, 2020
1 parent 5c3761e commit b0ea321
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 23 deletions.
4 changes: 2 additions & 2 deletions config/config.properties
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@ keyAlias=test
keyPassword=qqqqqq

# apk path
apkFile=config/tnews.apk
outFile=tnews-out.apk
apkFile=/Users/xxx/Downloads/tianmao.apk
outFile=/Users/xxx/Downloads/tianmao-out.apk
2 changes: 2 additions & 0 deletions src/ApkCrack.java
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,8 @@ private void addNetConfig(String outFile) throws Exception {
StreamResult consoleResult = new StreamResult(tmp);
transformer.transform(domSource, consoleResult);
File out = new File(outFile);
File parent = out.getParentFile();
if (!parent.exists()) parent.mkdirs();
if (out.exists()) out.delete();
tmp.renameTo(out);
}
Expand Down
21 changes: 19 additions & 2 deletions src/ApkProcessDialog.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
Expand All @@ -11,6 +12,7 @@ public class ApkProcessDialog extends JDialog {
private JTextArea detailLabel;
private JProgressBar progressBar;
private JScrollPane scrollPane;
private Document document;

public void setApkFile(String apkFile) {
this.apkFile = apkFile;
Expand All @@ -34,6 +36,8 @@ public ApkProcessDialog(Frame owner) {
detailLabel = new JTextArea("");
detailLabel.setLineWrap(true);
detailLabel.setWrapStyleWord(true);
document = new DefaultStyledDocument();
detailLabel.setDocument(document);
scrollPane.setViewportView(detailLabel);
panel.add(top, BorderLayout.NORTH);
panel.add(scrollPane, BorderLayout.CENTER);
Expand Down Expand Up @@ -67,21 +71,34 @@ public void start() {
apkCrack.setDebuggable(true);
setVisible(true);
processThread = new Thread(() -> {
ProgressUtil.init();
apkCrack.start();
});
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
processThread.start();
}

private StringBuilder sb = new StringBuilder();

private void setProgressHandler() {
ProgressUtil.setMsgHandler(new ProgressUtil.ProgressHandler() {
@Override
public void progress(String msg1, String msg2, float progress) {

SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
if (msg1 != null) {
String oldText = detailLabel.getText();
detailLabel.setText(oldText + "\n" + msg1);
SimpleAttributeSet attrs = new SimpleAttributeSet();
try {
document.insertString(document.getLength(), msg1 + "\n", attrs);
} catch (BadLocationException e) {
e.printStackTrace();
}
}
if (msg2 != null) {
mainLabel.setText(msg2);
Expand Down
2 changes: 1 addition & 1 deletion src/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
Manifest-Version: 1.0
Main-Class: Main
Main-Class: MainUI

3 changes: 2 additions & 1 deletion src/Main.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
public class Main {

public static void main(String[] args) {
new ApkCrack().start();
ProgressUtil.init();
new ApkCrack().start();
}
}
66 changes: 49 additions & 17 deletions src/ProgressUtil.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import brut.androlib.Androlib;
import brut.androlib.res.AndrolibResources;

import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.logging.Handler;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
Expand Down Expand Up @@ -51,29 +53,45 @@ public interface ProgressHandler {
void progress(String msg1, String msg2, float progress);
}

public static void setMsgHandler(ProgressHandler progressHandler) {
private static ProgressHandler progressHandler;

private static ProgressHandler getHandler() {
return progressHandler;
}

private static Executor executor = Executors.newSingleThreadExecutor();


public static void init() {
for (Class cls : LoggerClasses) {
Logger logger = Logger.getLogger(cls.getName());
logger.addHandler(new Handler() {
@Override
public void publish(LogRecord record) {
String msg = record.getMessage();
String msg2 = null;
float progress = 0f;

for (int i = 0; i < detailMsgs.length; i++) {
if (msg.startsWith(detailMsgs[i])) {
progress = (i + 1f) / detailMsgs.length;
break;
}
}
for (String m : msgs) {
if (msg.startsWith(m)) {
msg2 = msg;
break;
System.out.println(record.getMessage());
executor.execute(new Runnable() {
@Override
public void run() {
if (getHandler() == null) return;
String msg = record.getMessage();
String msg2 = null;
float progress = 0f;

for (int i = 0; i < detailMsgs.length; i++) {
if (msg.startsWith(detailMsgs[i])) {
progress = (i + 1f) / detailMsgs.length;
break;
}
}
for (String m : msgs) {
if (msg.startsWith(m)) {
msg2 = msg;
break;
}
}
getHandler().progress(msg, msg2, progress);
}
}
progressHandler.progress(msg, msg2, progress);
});
}

@Override
Expand All @@ -88,4 +106,18 @@ public void close() throws SecurityException {
});
}
}

public static void setMsgHandler(ProgressHandler h) {
progressHandler = h;
}

public static void main(String[] args) {
setMsgHandler(new ProgressHandler() {
@Override
public void progress(String msg1, String msg2, float progress) {
System.out.println(msg1 + "," + msg2 + "," + progress);
}
});
Logger.getLogger(Androlib.class.getName()).info("test");
}
}

0 comments on commit b0ea321

Please sign in to comment.