完成了穿山甲资源包打包工具
修复了从Eclipse转移导致UI乱码的问题
This commit is contained in:
parent
e9e5ba609b
commit
c58b890c61
@ -128,8 +128,8 @@
|
|||||||
],
|
],
|
||||||
"random": [
|
"random": [
|
||||||
"com",
|
"com",
|
||||||
"wq",
|
"opx",
|
||||||
"rx"
|
"bh"
|
||||||
],
|
],
|
||||||
"rename": {
|
"rename": {
|
||||||
"MyActivity": "Activity",
|
"MyActivity": "Activity",
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
"switch": "1",
|
"switch": "1",
|
||||||
"input": "/media/yutou/_dde_data/AndroidStudio_Data/buildTools/com.zip",
|
"input": "/media/yutou/_dde_data/AndroidStudio_Data/buildTools/com.zip",
|
||||||
"out": "/media/yutou/_dde_data/AndroidStudio_Data/buildTools/",
|
"out": "/media/yutou/_dde_data/AndroidStudio_Data/buildTools/",
|
||||||
"dx": "/media/yutou/_dde_data/AndroidStudio_Data/buildTools/dx.jar",
|
"dx": "dx.jar",
|
||||||
"array": [
|
"array": [
|
||||||
"rd_rx",
|
"rd_rx",
|
||||||
"qy_rx",
|
"qy_rx",
|
||||||
|
@ -29,7 +29,7 @@ import java.io.File;
|
|||||||
public class AndroidKey extends JFrame{
|
public class AndroidKey extends JFrame{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private JTextField md5;
|
private JTextField md5;
|
||||||
@ -66,7 +66,7 @@ public class AndroidKey extends JFrame{
|
|||||||
secretKey.put("sha1", "3F:B3:26:07:13:84:BF:12:1A:41:E7:04:4E:63:7D:4F:F4:ED:FA:FA");
|
secretKey.put("sha1", "3F:B3:26:07:13:84:BF:12:1A:41:E7:04:4E:63:7D:4F:F4:ED:FA:FA");
|
||||||
secretKey.put("sha256", "C5:5C:4F:F7:5A:C3:5C:5A:A9:B5:8C:29:ED:AD:CE:CB:9E:62:DF:9C:12:94:39:3B:88:CF:5C:3F:0E:B6:96:29");
|
secretKey.put("sha256", "C5:5C:4F:F7:5A:C3:5C:5A:A9:B5:8C:29:ED:AD:CE:CB:9E:62:DF:9C:12:94:39:3B:88:CF:5C:3F:0E:B6:96:29");
|
||||||
keys.add(secretKey);
|
keys.add(secretKey);
|
||||||
|
|
||||||
}
|
}
|
||||||
private JList<String> list;
|
private JList<String> list;
|
||||||
private void initView() {
|
private void initView() {
|
||||||
@ -78,8 +78,8 @@ public class AndroidKey extends JFrame{
|
|||||||
}
|
}
|
||||||
setSize(849, 536);
|
setSize(849, 536);
|
||||||
getContentPane().setLayout(null);
|
getContentPane().setLayout(null);
|
||||||
|
|
||||||
list = new JList<String>();
|
list = new JList<String>();
|
||||||
list.addListSelectionListener(new ListSelectionListener() {
|
list.addListSelectionListener(new ListSelectionListener() {
|
||||||
public void valueChanged(ListSelectionEvent e) {
|
public void valueChanged(ListSelectionEvent e) {
|
||||||
Map<String,String> map=keys.get(list.getSelectedIndex());
|
Map<String,String> map=keys.get(list.getSelectedIndex());
|
||||||
@ -92,7 +92,7 @@ public class AndroidKey extends JFrame{
|
|||||||
});
|
});
|
||||||
list.setModel(new AbstractListModel<String>() {
|
list.setModel(new AbstractListModel<String>() {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
String[] values = new String[] {"amw.keystroe.jks", "langtian.jks", "my.keystore"};
|
String[] values = new String[] {"amw.keystroe.jks", "langtian.jks", "my.keystore"};
|
||||||
@ -105,34 +105,34 @@ public class AndroidKey extends JFrame{
|
|||||||
});
|
});
|
||||||
list.setBounds(35, 87, 167, 167);
|
list.setBounds(35, 87, 167, 167);
|
||||||
getContentPane().add(list);
|
getContentPane().add(list);
|
||||||
|
|
||||||
JLabel lblMd = new JLabel("MD5:");
|
JLabel lblMd = new JLabel("MD5:");
|
||||||
lblMd.setBounds(269, 100, 72, 18);
|
lblMd.setBounds(269, 100, 72, 18);
|
||||||
getContentPane().add(lblMd);
|
getContentPane().add(lblMd);
|
||||||
|
|
||||||
JLabel lblSha = new JLabel("SHA1:");
|
JLabel lblSha = new JLabel("SHA1:");
|
||||||
lblSha.setBounds(262, 131, 72, 18);
|
lblSha.setBounds(262, 131, 72, 18);
|
||||||
getContentPane().add(lblSha);
|
getContentPane().add(lblSha);
|
||||||
|
|
||||||
JLabel lblSha_1 = new JLabel("SHA256:");
|
JLabel lblSha_1 = new JLabel("SHA256:");
|
||||||
lblSha_1.setBounds(245, 162, 72, 18);
|
lblSha_1.setBounds(245, 162, 72, 18);
|
||||||
getContentPane().add(lblSha_1);
|
getContentPane().add(lblSha_1);
|
||||||
|
|
||||||
md5 = new JTextField();
|
md5 = new JTextField();
|
||||||
md5.setBounds(315, 99, 466, 24);
|
md5.setBounds(315, 99, 466, 24);
|
||||||
getContentPane().add(md5);
|
getContentPane().add(md5);
|
||||||
md5.setColumns(10);
|
md5.setColumns(10);
|
||||||
|
|
||||||
sha1 = new JTextField();
|
sha1 = new JTextField();
|
||||||
sha1.setBounds(315, 132, 466, 24);
|
sha1.setBounds(315, 132, 466, 24);
|
||||||
getContentPane().add(sha1);
|
getContentPane().add(sha1);
|
||||||
sha1.setColumns(10);
|
sha1.setColumns(10);
|
||||||
|
|
||||||
sha256 = new JTextField();
|
sha256 = new JTextField();
|
||||||
sha256.setBounds(317, 170, 464, 24);
|
sha256.setBounds(317, 170, 464, 24);
|
||||||
getContentPane().add(sha256);
|
getContentPane().add(sha256);
|
||||||
sha256.setColumns(10);
|
sha256.setColumns(10);
|
||||||
|
|
||||||
JButton btnSelectrsa = new JButton("\u9009\u62E9RSA\u6587\u4EF6");
|
JButton btnSelectrsa = new JButton("\u9009\u62E9RSA\u6587\u4EF6");
|
||||||
btnSelectrsa.addMouseListener(new MouseAdapter() {
|
btnSelectrsa.addMouseListener(new MouseAdapter() {
|
||||||
@Override
|
@Override
|
||||||
@ -146,7 +146,7 @@ public class AndroidKey extends JFrame{
|
|||||||
});
|
});
|
||||||
btnSelectrsa.setBounds(254, 225, 140, 27);
|
btnSelectrsa.setBounds(254, 225, 140, 27);
|
||||||
getContentPane().add(btnSelectrsa);
|
getContentPane().add(btnSelectrsa);
|
||||||
|
|
||||||
JButton btnSelectkey = new JButton("\u9009\u62E9\u79D8\u94A5\u6587\u4EF6");
|
JButton btnSelectkey = new JButton("\u9009\u62E9\u79D8\u94A5\u6587\u4EF6");
|
||||||
btnSelectkey.addMouseListener(new MouseAdapter() {
|
btnSelectkey.addMouseListener(new MouseAdapter() {
|
||||||
File rsa;
|
File rsa;
|
||||||
@ -155,8 +155,8 @@ public class AndroidKey extends JFrame{
|
|||||||
JFileChooser chooser=new JFileChooser(new File("").getAbsolutePath());
|
JFileChooser chooser=new JFileChooser(new File("").getAbsolutePath());
|
||||||
chooser.showOpenDialog(null);
|
chooser.showOpenDialog(null);
|
||||||
rsa=chooser.getSelectedFile();
|
rsa=chooser.getSelectedFile();
|
||||||
new EditToDalog("ĚáĘž", "ÇëĘäČëĂÜÔż", null, new SmaliApkToolsPath() {
|
new EditToDalog("提示", "请输入密钥", null, new SmaliApkToolsPath() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void smaliPath(String path) {
|
public void smaliPath(String path) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
@ -164,17 +164,17 @@ public class AndroidKey extends JFrame{
|
|||||||
textPane.setText(data);
|
textPane.setText(data);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
btnSelectkey.setBounds(450, 225, 148, 27);
|
btnSelectkey.setBounds(450, 225, 148, 27);
|
||||||
getContentPane().add(btnSelectkey);
|
getContentPane().add(btnSelectkey);
|
||||||
|
|
||||||
textPane = new JTextPane();
|
textPane = new JTextPane();
|
||||||
JScrollPane scrollBar = new JScrollPane(textPane);
|
JScrollPane scrollBar = new JScrollPane(textPane);
|
||||||
scrollBar.setBounds(35, 289, 750, 187);
|
scrollBar.setBounds(35, 289, 750, 187);
|
||||||
getContentPane().add(scrollBar);
|
getContentPane().add(scrollBar);
|
||||||
setVisible(true);
|
setVisible(true);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ public class ApkSignUi extends JFrame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private JTextField txtPass;
|
private JTextField txtPass;
|
||||||
@ -27,9 +27,9 @@ public class ApkSignUi extends JFrame {
|
|||||||
private ApkSignTools tools;
|
private ApkSignTools tools;
|
||||||
private JLabel lblApkpath ;
|
private JLabel lblApkpath ;
|
||||||
private JLabel lblSginpath;
|
private JLabel lblSginpath;
|
||||||
|
|
||||||
public ApkSignUi() {
|
public ApkSignUi() {
|
||||||
setTitle("\u7B7E\u540D\u5DE5\u5177");
|
setTitle("\u7B7E\u540D\u5DE5\u5177v1.1");
|
||||||
setResizable(false);
|
setResizable(false);
|
||||||
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||||
// TODO Auto-generated constructor stub
|
// TODO Auto-generated constructor stub
|
||||||
@ -46,17 +46,17 @@ public class ApkSignUi extends JFrame {
|
|||||||
if(file!=null&&file.exists()) {
|
if(file!=null&&file.exists()) {
|
||||||
tools.setApkFile(file);
|
tools.setApkFile(file);
|
||||||
lblApkpath.setText(file.getAbsolutePath());
|
lblApkpath.setText(file.getAbsolutePath());
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
btnapk.setBounds(36, 28, 105, 27);
|
btnapk.setBounds(36, 28, 105, 27);
|
||||||
getContentPane().add(btnapk);
|
getContentPane().add(btnapk);
|
||||||
|
|
||||||
|
|
||||||
lblApkpath.setBounds(46, 67, 289, 17);
|
lblApkpath.setBounds(46, 67, 289, 17);
|
||||||
getContentPane().add(lblApkpath);
|
getContentPane().add(lblApkpath);
|
||||||
|
|
||||||
JButton button = new JButton("\u9009\u62E9\u7B7E\u540D");
|
JButton button = new JButton("\u9009\u62E9\u7B7E\u540D");
|
||||||
button.addActionListener(new ActionListener() {
|
button.addActionListener(new ActionListener() {
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
@ -71,7 +71,7 @@ public class ApkSignUi extends JFrame {
|
|||||||
});
|
});
|
||||||
button.setBounds(36, 96, 105, 27);
|
button.setBounds(36, 96, 105, 27);
|
||||||
getContentPane().add(button);
|
getContentPane().add(button);
|
||||||
|
|
||||||
JButton button_1 = new JButton("\u4F7F\u7528\u9ED8\u8BA4\u7B7E\u540D");
|
JButton button_1 = new JButton("\u4F7F\u7528\u9ED8\u8BA4\u7B7E\u540D");
|
||||||
button_1.addActionListener(new ActionListener() {
|
button_1.addActionListener(new ActionListener() {
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
@ -85,29 +85,29 @@ public class ApkSignUi extends JFrame {
|
|||||||
});
|
});
|
||||||
button_1.setBounds(220, 96, 130, 27);
|
button_1.setBounds(220, 96, 130, 27);
|
||||||
getContentPane().add(button_1);
|
getContentPane().add(button_1);
|
||||||
|
|
||||||
lblSginpath = new JLabel("sginPath");
|
lblSginpath = new JLabel("sginPath");
|
||||||
lblSginpath.setBounds(46, 142, 260, 17);
|
lblSginpath.setBounds(46, 142, 260, 17);
|
||||||
getContentPane().add(lblSginpath);
|
getContentPane().add(lblSginpath);
|
||||||
|
|
||||||
txtPass = new JTextField();
|
txtPass = new JTextField();
|
||||||
txtPass.setText("\u5BC6\u7801");
|
txtPass.setText("\u5BC6\u7801");
|
||||||
txtPass.setBounds(27, 173, 114, 21);
|
txtPass.setBounds(27, 173, 114, 21);
|
||||||
getContentPane().add(txtPass);
|
getContentPane().add(txtPass);
|
||||||
txtPass.setColumns(10);
|
txtPass.setColumns(10);
|
||||||
|
|
||||||
txtSpass = new JTextField();
|
txtSpass = new JTextField();
|
||||||
txtSpass.setText("\u522B\u540D\u5BC6\u7801");
|
txtSpass.setText("\u522B\u540D\u5BC6\u7801");
|
||||||
txtSpass.setBounds(27, 206, 114, 21);
|
txtSpass.setBounds(27, 206, 114, 21);
|
||||||
getContentPane().add(txtSpass);
|
getContentPane().add(txtSpass);
|
||||||
txtSpass.setColumns(10);
|
txtSpass.setColumns(10);
|
||||||
|
|
||||||
txtName = new JTextField();
|
txtName = new JTextField();
|
||||||
txtName.setText("\u522B\u540D");
|
txtName.setText("\u522B\u540D");
|
||||||
txtName.setBounds(27, 239, 114, 21);
|
txtName.setBounds(27, 239, 114, 21);
|
||||||
getContentPane().add(txtName);
|
getContentPane().add(txtName);
|
||||||
txtName.setColumns(10);
|
txtName.setColumns(10);
|
||||||
|
|
||||||
JButton btnSign = new JButton("\u7B7E\u540D");
|
JButton btnSign = new JButton("\u7B7E\u540D");
|
||||||
btnSign.addActionListener(new ActionListener() {
|
btnSign.addActionListener(new ActionListener() {
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
@ -115,10 +115,13 @@ public class ApkSignUi extends JFrame {
|
|||||||
tools.setKeyStorePassword(txtSpass.getText());
|
tools.setKeyStorePassword(txtSpass.getText());
|
||||||
tools.setSignKey(txtPass.getText());
|
tools.setSignKey(txtPass.getText());
|
||||||
if(tools.chack()) {
|
if(tools.chack()) {
|
||||||
tools.sign();
|
if(tools.sign()) {
|
||||||
new TextToDalog("成功", "签名完成");
|
new TextToDalog("成功", "签名完成");
|
||||||
|
}else{
|
||||||
|
new TextToDalog("失败", "签名异常");
|
||||||
|
}
|
||||||
}else {
|
}else {
|
||||||
new TextToDalog("错误", "APK文件或签名文件不存在");
|
new TextToDalog("错误", "APK文件或签名文件不存在");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -503,6 +503,16 @@ public class AppMain extends JFrame {
|
|||||||
});
|
});
|
||||||
menu.add(mntmsdk_1);
|
menu.add(mntmsdk_1);
|
||||||
|
|
||||||
|
JMenuItem csj=new JMenuItem("穿山甲资源包");
|
||||||
|
csj.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
ChuanShanJiaUi.main(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
menu.add(csj);
|
||||||
|
|
||||||
|
|
||||||
mnBasetools = new JMenu("Base64\u5DE5\u5177");
|
mnBasetools = new JMenu("Base64\u5DE5\u5177");
|
||||||
menuBar.add(mnBasetools);
|
menuBar.add(mnBasetools);
|
||||||
|
|
||||||
|
110
src/com/qy/ui/ChuanShanJiaUi.form
Normal file
110
src/com/qy/ui/ChuanShanJiaUi.form
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="com.qy.ui.ChuanShanJiaUi">
|
||||||
|
<grid id="27dc6" binding="mainPanel" layout-manager="BorderLayout" hgap="0" vgap="0">
|
||||||
|
<constraints>
|
||||||
|
<xy x="20" y="20" width="526" height="434"/>
|
||||||
|
</constraints>
|
||||||
|
<properties>
|
||||||
|
<enabled value="true"/>
|
||||||
|
</properties>
|
||||||
|
<border type="none"/>
|
||||||
|
<children>
|
||||||
|
<grid id="af63e" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||||
|
<margin top="0" left="0" bottom="0" right="0"/>
|
||||||
|
<constraints border-constraint="North"/>
|
||||||
|
<properties/>
|
||||||
|
<border type="none"/>
|
||||||
|
<children/>
|
||||||
|
</grid>
|
||||||
|
<grid id="406e6" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||||
|
<margin top="0" left="0" bottom="0" right="0"/>
|
||||||
|
<constraints border-constraint="West"/>
|
||||||
|
<properties/>
|
||||||
|
<border type="none"/>
|
||||||
|
<children/>
|
||||||
|
</grid>
|
||||||
|
<grid id="748d4" layout-manager="GridLayoutManager" row-count="1" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||||
|
<margin top="0" left="0" bottom="0" right="0"/>
|
||||||
|
<constraints border-constraint="South"/>
|
||||||
|
<properties>
|
||||||
|
<minimumSize width="50" height="24"/>
|
||||||
|
</properties>
|
||||||
|
<border type="none"/>
|
||||||
|
<children>
|
||||||
|
<scrollpane id="23ab9">
|
||||||
|
<constraints>
|
||||||
|
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="7" hsize-policy="7" anchor="0" fill="3" indent="0" use-parent-layout="false">
|
||||||
|
<minimum-size width="50" height="-1"/>
|
||||||
|
</grid>
|
||||||
|
</constraints>
|
||||||
|
<properties>
|
||||||
|
<horizontalScrollBarPolicy value="30"/>
|
||||||
|
<verticalScrollBarPolicy value="20"/>
|
||||||
|
</properties>
|
||||||
|
<border type="none"/>
|
||||||
|
<children>
|
||||||
|
<component id="7fc43" class="javax.swing.JTextArea" binding="log">
|
||||||
|
<constraints/>
|
||||||
|
<properties>
|
||||||
|
<text value="log "/>
|
||||||
|
<visible value="true"/>
|
||||||
|
</properties>
|
||||||
|
</component>
|
||||||
|
</children>
|
||||||
|
</scrollpane>
|
||||||
|
<vspacer id="1bf42">
|
||||||
|
<constraints>
|
||||||
|
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="0" indent="0" use-parent-layout="false">
|
||||||
|
<minimum-size width="1" height="180"/>
|
||||||
|
</grid>
|
||||||
|
</constraints>
|
||||||
|
</vspacer>
|
||||||
|
</children>
|
||||||
|
</grid>
|
||||||
|
<grid id="f1705" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||||
|
<margin top="0" left="0" bottom="0" right="0"/>
|
||||||
|
<constraints border-constraint="East"/>
|
||||||
|
<properties/>
|
||||||
|
<border type="none"/>
|
||||||
|
<children/>
|
||||||
|
</grid>
|
||||||
|
<grid id="d0747" layout-manager="GridBagLayout">
|
||||||
|
<constraints border-constraint="Center"/>
|
||||||
|
<properties/>
|
||||||
|
<border type="none"/>
|
||||||
|
<children>
|
||||||
|
<component id="94888" class="javax.swing.JLabel">
|
||||||
|
<constraints>
|
||||||
|
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||||
|
<gridbag weightx="0.0" weighty="0.0"/>
|
||||||
|
</constraints>
|
||||||
|
<properties>
|
||||||
|
<text value="选择目标APK包"/>
|
||||||
|
</properties>
|
||||||
|
</component>
|
||||||
|
<hspacer id="6e701">
|
||||||
|
<constraints>
|
||||||
|
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||||
|
<gridbag weightx="0.0" weighty="0.0"/>
|
||||||
|
</constraints>
|
||||||
|
</hspacer>
|
||||||
|
<vspacer id="bcdeb">
|
||||||
|
<constraints>
|
||||||
|
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
|
||||||
|
<gridbag weightx="0.0" weighty="0.0"/>
|
||||||
|
</constraints>
|
||||||
|
</vspacer>
|
||||||
|
<component id="4ba45" class="javax.swing.JButton" binding="selectButton">
|
||||||
|
<constraints>
|
||||||
|
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||||
|
<gridbag weightx="0.0" weighty="0.0"/>
|
||||||
|
</constraints>
|
||||||
|
<properties>
|
||||||
|
<text value="选择"/>
|
||||||
|
</properties>
|
||||||
|
</component>
|
||||||
|
</children>
|
||||||
|
</grid>
|
||||||
|
</children>
|
||||||
|
</grid>
|
||||||
|
</form>
|
108
src/com/qy/ui/ChuanShanJiaUi.java
Normal file
108
src/com/qy/ui/ChuanShanJiaUi.java
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
package com.qy.ui;
|
||||||
|
|
||||||
|
import com.qy.Interfaces.SmaliApkToolsPath;
|
||||||
|
import com.qy.utils.CsjTools;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.io.File;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
public class ChuanShanJiaUi {
|
||||||
|
private JPanel mainPanel;
|
||||||
|
private JButton selectButton;
|
||||||
|
private JTextArea log;
|
||||||
|
|
||||||
|
public ChuanShanJiaUi() {
|
||||||
|
selectButton.addActionListener(new ActionListener() {
|
||||||
|
File apkFile,csjDemo;
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
JFileChooser jfile=new JFileChooser(new File("").getAbsolutePath());
|
||||||
|
jfile.showOpenDialog(null);
|
||||||
|
apkFile=jfile.getSelectedFile();
|
||||||
|
if(apkFile!=null){
|
||||||
|
append("已选择文件:"+apkFile.getAbsolutePath());
|
||||||
|
File csjPath=new File("input"+File.separator+"csjDemo"+File.separator);
|
||||||
|
if(csjPath.exists()){
|
||||||
|
File[] fs=csjPath.listFiles();
|
||||||
|
if(fs==null||fs.length==0){
|
||||||
|
append("没有找到穿山甲demo,请将穿山甲demo放置在 input"+File.separator+"csjDemo文件夹中");
|
||||||
|
}else{
|
||||||
|
selectButton.setEnabled(false);
|
||||||
|
append("穿山甲Demo选择为 "+fs[0].getName());
|
||||||
|
csjDemo=fs[0];
|
||||||
|
new Thread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
CsjTools tools=new CsjTools();
|
||||||
|
tools.build(csjDemo.getAbsolutePath(), apkFile.getAbsolutePath(), new SmaliApkToolsPath() {
|
||||||
|
@Override
|
||||||
|
public void smaliPath(String path) {
|
||||||
|
append(path);
|
||||||
|
if(path.startsWith("已出包")) {
|
||||||
|
new EditToDalog("成功", "打包完成,请输入版本号", "5600", new SmaliApkToolsPath() {
|
||||||
|
@Override
|
||||||
|
public void smaliPath(String out) {
|
||||||
|
System.out.println(">>" + out);
|
||||||
|
tools.out(path.replace("已出包", ""),
|
||||||
|
new File("csj").getAbsolutePath() + File.separator + "csc",
|
||||||
|
Integer.parseInt(out));
|
||||||
|
append("加密包位置:" + new File("csj").getAbsolutePath() + File.separator + "csc");
|
||||||
|
selectButton.setEnabled(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).start();
|
||||||
|
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
append("没有找到穿山甲demo,请将穿山甲demo放置在 input"+File.separator+"csjDemo文件夹中");
|
||||||
|
csjDemo.mkdirs();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
private void append(String log){
|
||||||
|
this.log.append("["+new SimpleDateFormat("HH:mm:ss").format(new Date()) +"]"+log+"\n");
|
||||||
|
}
|
||||||
|
private void show(){
|
||||||
|
try {
|
||||||
|
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
||||||
|
} catch (Exception e) {
|
||||||
|
// TODO: handle exception
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
JFrame frame = new JFrame("穿山甲资源包生成v1.0");
|
||||||
|
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||||
|
frame.setContentPane(new ChuanShanJiaUi().mainPanel);
|
||||||
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
frame.pack();
|
||||||
|
frame.setSize(420,400);
|
||||||
|
frame.setVisible(true);
|
||||||
|
}
|
||||||
|
public static void main(String[] args) {
|
||||||
|
try {
|
||||||
|
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
||||||
|
} catch (Exception e) {
|
||||||
|
// TODO: handle exception
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
JFrame frame = new JFrame("穿山甲资源包生成v1.0");
|
||||||
|
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||||
|
frame.setContentPane(new ChuanShanJiaUi().mainPanel);
|
||||||
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
frame.pack();
|
||||||
|
frame.setSize(420,400);
|
||||||
|
frame.setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -26,7 +26,7 @@ import java.awt.event.ActionEvent;
|
|||||||
|
|
||||||
public class ModifySdkUi extends JFrame{
|
public class ModifySdkUi extends JFrame{
|
||||||
private JList<String> list;
|
private JList<String> list;
|
||||||
private File sdkFile;
|
private File sdkFile=new File("D:\\IdeaProjects\\android_sdk_tools\\classes.jar");
|
||||||
private Map<Integer, Boolean> userEncrypt;
|
private Map<Integer, Boolean> userEncrypt;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -137,4 +137,8 @@ public class ModifySdkUi extends JFrame{
|
|||||||
}
|
}
|
||||||
list.setListData(vector);
|
list.setListData(vector);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
new ModifySdkUi();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,27 +41,27 @@ public class OneWayTools {
|
|||||||
+ File.separator + "sdk" + File.separator + "b" + File.separator + "c.smali");
|
+ File.separator + "sdk" + File.separator + "b" + File.separator + "c.smali");
|
||||||
if (!activity.exists()) {
|
if (!activity.exists()) {
|
||||||
System.out.println(activity.getAbsolutePath());
|
System.out.println(activity.getAbsolutePath());
|
||||||
new TextToDalog("警告", "Unit.smali文件不存在!");
|
new TextToDalog("警告", "Unit.smali文件不存在!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!provider.exists()) {
|
if (!provider.exists()) {
|
||||||
new TextToDalog("警告", "c.smali文件不存在!");
|
new TextToDalog("警告", "c.smali文件不存在!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
updateActivity(activity.getAbsolutePath());
|
updateActivity(activity.getAbsolutePath());
|
||||||
updateProvider(provider.getAbsolutePath());
|
updateProvider(provider.getAbsolutePath());
|
||||||
SmaliUtils smali = new SmaliUtils();
|
SmaliUtils smali = new SmaliUtils();
|
||||||
smali.setPath(path);
|
smali.setPath(path);
|
||||||
smali.bale(path, path+File.separator+onejar.getName());
|
smali.bale(path, path+File.separator+onejar.getName());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateActivity(String path) {
|
private void updateActivity(String path) {
|
||||||
try {
|
try {
|
||||||
File file = new File(path);
|
File file = new File(path);
|
||||||
BufferedReader reader = new BufferedReader(new FileReader(file));
|
BufferedReader reader = new BufferedReader(new FileReader(file));
|
||||||
|
|
||||||
String tmp, str = "";
|
String tmp, str = "";
|
||||||
boolean write = false;
|
boolean write = false;
|
||||||
while ((tmp = reader.readLine()) != null) {
|
while ((tmp = reader.readLine()) != null) {
|
||||||
@ -82,10 +82,10 @@ public class OneWayTools {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// TODO: handle exception
|
// TODO: handle exception
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
new TextToDalog("错误", "处理unit.smali文件失败:" + e.getMessage());
|
new TextToDalog("错误", "处理unit.smali文件失败:" + e.getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
new TextToDalog("警告", "Unit.smali文件没有包含指定代码,请手动检查");
|
new TextToDalog("警告", "Unit.smali文件没有包含指定代码,请手动检查");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateProvider(String path) {
|
private void updateProvider(String path) {
|
||||||
@ -93,7 +93,7 @@ public class OneWayTools {
|
|||||||
List<String> list = new ArrayList<>();
|
List<String> list = new ArrayList<>();
|
||||||
File file = new File(path);
|
File file = new File(path);
|
||||||
BufferedReader reader = new BufferedReader(new FileReader(file));
|
BufferedReader reader = new BufferedReader(new FileReader(file));
|
||||||
|
|
||||||
String tmp, str = "";
|
String tmp, str = "";
|
||||||
boolean write = false;
|
boolean write = false;
|
||||||
int index = 0;
|
int index = 0;
|
||||||
@ -112,7 +112,7 @@ public class OneWayTools {
|
|||||||
str += string + "\n";
|
str += string + "\n";
|
||||||
}
|
}
|
||||||
reader.close();
|
reader.close();
|
||||||
|
|
||||||
if (write) {
|
if (write) {
|
||||||
FileWriter writer = new FileWriter(file);
|
FileWriter writer = new FileWriter(file);
|
||||||
writer.write(str);
|
writer.write(str);
|
||||||
@ -123,9 +123,9 @@ public class OneWayTools {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// TODO: handle exception
|
// TODO: handle exception
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
new TextToDalog("错误", "处理c.smali文件失败:" + e.getMessage());
|
new TextToDalog("错误", "处理c.smali文件失败:" + e.getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
new TextToDalog("警告", "c.smali文件没有包含指定代码,请手动检查");
|
new TextToDalog("警告", "c.smali文件没有包含指定代码,请手动检查");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,10 +23,10 @@ import javax.swing.SwingConstants;
|
|||||||
public class SMSToolsUi extends JFrame {
|
public class SMSToolsUi extends JFrame {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新日志 v1.0: 初始版,默认热包版本 v2.22
|
* 更新日志 v1.0: 初始版,默认热包版本 v2.22
|
||||||
* v1.1 修复Eclipse无法使用的问题
|
* v1.1 修复Eclipse无法使用的问题
|
||||||
* v1.2 新增对话框回调 热更包更新至2.24
|
* v1.2 新增对话框回调 热更包更新至2.24
|
||||||
* v1.3 修复Eclipse无法打包的问题 ,自带jdk降低到1.7版本,采用jar.exe打包sdk
|
* v1.3 修复Eclipse无法打包的问题 ,自带jdk降低到1.7版本,采用jar.exe打包sdk
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private JButton btnNewButton;
|
private JButton btnNewButton;
|
||||||
@ -62,7 +62,7 @@ public class SMSToolsUi extends JFrame {
|
|||||||
public void mouseClicked(MouseEvent e) {
|
public void mouseClicked(MouseEvent e) {
|
||||||
path = btnNewButton.getText();
|
path = btnNewButton.getText();
|
||||||
btnNewButton.setEnabled(false);
|
btnNewButton.setEnabled(false);
|
||||||
btnNewButton.setText("正在编译SDK,请稍后...");
|
btnNewButton.setText("正在编译SDK,请稍后...");
|
||||||
new Timer().schedule(new TimerTask() {
|
new Timer().schedule(new TimerTask() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -71,7 +71,7 @@ public class SMSToolsUi extends JFrame {
|
|||||||
SDKTools.start(new File("").getAbsolutePath());
|
SDKTools.start(new File("").getAbsolutePath());
|
||||||
btnNewButton.setText(path);
|
btnNewButton.setText(path);
|
||||||
btnNewButton.setEnabled(true);
|
btnNewButton.setEnabled(true);
|
||||||
new TextToDalog("提示", "计费SDK生成成功,请选择保存位置", new DalogAbs() {
|
new TextToDalog("提示", "计费SDK生成成功,请选择保存位置", new DalogAbs() {
|
||||||
File sdk;
|
File sdk;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -83,16 +83,16 @@ public class SMSToolsUi extends JFrame {
|
|||||||
sdk = chooser.getSelectedFile();
|
sdk = chooser.getSelectedFile();
|
||||||
if (sdk != null) {
|
if (sdk != null) {
|
||||||
File sdk_ = new File(
|
File sdk_ = new File(
|
||||||
sdk.getAbsolutePath() + "/" + "计费sdk" + SDKTools.version + ".zip");
|
sdk.getAbsolutePath() + "/" + "计费sdk" + SDKTools.version + ".zip");
|
||||||
SDKTools.buildSDK(sdk_);
|
SDKTools.buildSDK(sdk_);
|
||||||
new TextToDalog("完成", "任务已完成", new DalogAbs() {
|
new TextToDalog("完成", "任务已完成", new DalogAbs() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess() {
|
public void onSuccess() {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
try {
|
try {
|
||||||
Desktop.getDesktop().open(sdk);
|
Desktop.getDesktop().open(sdk);
|
||||||
System.out.println("\n本窗口可以关掉了");
|
System.out.println("\n本窗口可以关掉了");
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
// TODO Auto-generated catch block
|
// TODO Auto-generated catch block
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@ -101,7 +101,7 @@ public class SMSToolsUi extends JFrame {
|
|||||||
});
|
});
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
new TextToDalog("错误", "已放弃本次任务");
|
new TextToDalog("错误", "已放弃本次任务");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -32,7 +32,7 @@ import com.qy.utils.SmaliUtils;
|
|||||||
|
|
||||||
public class SmaliUi extends JFrame {
|
public class SmaliUi extends JFrame {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private JTextField jarPath, savePath, smaliPath;
|
private JTextField jarPath, savePath, smaliPath;
|
||||||
@ -160,8 +160,8 @@ public class SmaliUi extends JFrame {
|
|||||||
public void mouseClicked(MouseEvent e) {
|
public void mouseClicked(MouseEvent e) {
|
||||||
int index = list.getSelectedIndex();
|
int index = list.getSelectedIndex();
|
||||||
if (index > 0) {
|
if (index > 0) {
|
||||||
file = fileList.get(index);
|
file = fileList.get(index);
|
||||||
new EditToDalog("重命名", "希望将文件(夹) " + file.getName() + " 重命名为?", file.getName(),
|
new EditToDalog("重命名", "希望将文件(夹) " + file.getName() + " 重命名为?", file.getName(),
|
||||||
new SmaliApkToolsPath() {
|
new SmaliApkToolsPath() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -170,7 +170,7 @@ public class SmaliUi extends JFrame {
|
|||||||
if (path.trim().length() != 0 && !file.getName().equals(path)) {
|
if (path.trim().length() != 0 && !file.getName().equals(path)) {
|
||||||
File toFile = new File(file.getParentFile().getAbsolutePath() + File.separator + path);
|
File toFile = new File(file.getParentFile().getAbsolutePath() + File.separator + path);
|
||||||
file.renameTo(toFile);
|
file.renameTo(toFile);
|
||||||
lblInfo.setText("重命名:" + toFile.getName());
|
lblInfo.setText("重命名:" + toFile.getName());
|
||||||
changeList();
|
changeList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -194,7 +194,7 @@ public class SmaliUi extends JFrame {
|
|||||||
File path = chooser.getSelectedFile();
|
File path = chooser.getSelectedFile();
|
||||||
File file = fileList.get(index);
|
File file = fileList.get(index);
|
||||||
file.renameTo(new File(path.getAbsolutePath() + File.separator + file.getName()));
|
file.renameTo(new File(path.getAbsolutePath() + File.separator + file.getName()));
|
||||||
lblInfo.setText("移动:" + file.getAbsolutePath());
|
lblInfo.setText("移动:" + file.getAbsolutePath());
|
||||||
changeList();
|
changeList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -271,14 +271,14 @@ public class SmaliUi extends JFrame {
|
|||||||
button.addMouseListener(new MouseAdapter() {
|
button.addMouseListener(new MouseAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void mouseClicked(MouseEvent e) {
|
public void mouseClicked(MouseEvent e) {
|
||||||
lblInfo.setText("开始拆包");
|
lblInfo.setText("开始拆包");
|
||||||
timer.schedule(new TimerTask() {
|
timer.schedule(new TimerTask() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
if(jarPath.getText().trim().length()==0) {
|
if(jarPath.getText().trim().length()==0) {
|
||||||
new TextToDalog("警告", "没有选择目标文件");
|
new TextToDalog("警告", "没有选择目标文件");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
utils.unPack(jarPath.getText(), new SmaliApkToolsPath() {
|
utils.unPack(jarPath.getText(), new SmaliApkToolsPath() {
|
||||||
@ -288,7 +288,7 @@ public class SmaliUi extends JFrame {
|
|||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
smaliPath.setText(path);
|
smaliPath.setText(path);
|
||||||
smaliHome = path;
|
smaliHome = path;
|
||||||
lblInfo.setText("拆包完成");
|
lblInfo.setText("拆包完成");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -308,23 +308,23 @@ public class SmaliUi extends JFrame {
|
|||||||
smaliPath.setText(smaliHome);
|
smaliPath.setText(smaliHome);
|
||||||
if(savePath.getText().trim().length()==0) {
|
if(savePath.getText().trim().length()==0) {
|
||||||
savePath.setText(smaliHome);
|
savePath.setText(smaliHome);
|
||||||
lblInfo.setText("没有填写保存路径,默认保存在当前目录");
|
lblInfo.setText("没有填写保存路径,默认保存在当前目录");
|
||||||
new TextToDalog("警告", "没有填写保存路径,默认保存在当前目录");
|
new TextToDalog("警告", "没有填写保存路径,默认保存在当前目录");
|
||||||
}
|
}
|
||||||
if(jarPath.getText().trim().length()==0) {
|
if(jarPath.getText().trim().length()==0) {
|
||||||
path="dex.zip";
|
path="dex.zip";
|
||||||
new TextToDalog("警告", "没有填写保存文件名,默认为dex.zip");
|
new TextToDalog("警告", "没有填写保存文件名,默认为dex.zip");
|
||||||
}else {
|
}else {
|
||||||
path=new File(jarPath.getText()).getName();
|
path=new File(jarPath.getText()).getName();
|
||||||
}
|
}
|
||||||
lblInfo.setText("开始打包");
|
lblInfo.setText("开始打包");
|
||||||
timer.schedule(new TimerTask() {
|
timer.schedule(new TimerTask() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
utils.bale(smaliPath.getText(), savePath.getText() + File.separator+path);
|
utils.bale(smaliPath.getText(), savePath.getText() + File.separator+path);
|
||||||
lblInfo.setText("打包完成,保存路径为:" + savePath.getText());
|
lblInfo.setText("打包完成,保存路径为:" + savePath.getText());
|
||||||
}
|
}
|
||||||
}, 100);
|
}, 100);
|
||||||
}
|
}
|
||||||
@ -346,7 +346,7 @@ public class SmaliUi extends JFrame {
|
|||||||
path = file.getParentFile().getAbsolutePath();
|
path = file.getParentFile().getAbsolutePath();
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
lblInfo.setText("已打开");
|
lblInfo.setText("已打开");
|
||||||
Desktop.getDesktop().open(new File(path));
|
Desktop.getDesktop().open(new File(path));
|
||||||
} catch (IOException e1) {
|
} catch (IOException e1) {
|
||||||
// TODO Auto-generated catch block
|
// TODO Auto-generated catch block
|
||||||
@ -371,7 +371,7 @@ public class SmaliUi extends JFrame {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lblInfo.setText("开始根据目录结构修改smali 请等待...");
|
lblInfo.setText("开始根据目录结构修改smali 请等待...");
|
||||||
utils.setPath(smaliPath.getText());
|
utils.setPath(smaliPath.getText());
|
||||||
timer.schedule(new TimerTask() {
|
timer.schedule(new TimerTask() {
|
||||||
|
|
||||||
@ -379,7 +379,7 @@ public class SmaliUi extends JFrame {
|
|||||||
public void run() {
|
public void run() {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
utils.start();
|
utils.start();
|
||||||
lblInfo.setText("完成");
|
lblInfo.setText("完成");
|
||||||
}
|
}
|
||||||
}, 100);
|
}, 100);
|
||||||
}
|
}
|
||||||
@ -409,11 +409,11 @@ public class SmaliUi extends JFrame {
|
|||||||
chckbxSavesmalipath.setSelected(true);
|
chckbxSavesmalipath.setSelected(true);
|
||||||
chckbxSavesmalipath.setBounds(562, 9, 196, 37);
|
chckbxSavesmalipath.setBounds(562, 9, 196, 37);
|
||||||
getContentPane().add(chckbxSavesmalipath);
|
getContentPane().add(chckbxSavesmalipath);
|
||||||
|
|
||||||
JSeparator separator = new JSeparator();
|
JSeparator separator = new JSeparator();
|
||||||
separator.setBounds(394, 220, 453, 2);
|
separator.setBounds(394, 220, 453, 2);
|
||||||
getContentPane().add(separator);
|
getContentPane().add(separator);
|
||||||
|
|
||||||
JSeparator separator_1 = new JSeparator();
|
JSeparator separator_1 = new JSeparator();
|
||||||
separator_1.setBounds(45, 92, 805, 2);
|
separator_1.setBounds(45, 92, 805, 2);
|
||||||
getContentPane().add(separator_1);
|
getContentPane().add(separator_1);
|
||||||
@ -427,7 +427,7 @@ public class SmaliUi extends JFrame {
|
|||||||
File[] files = file.listFiles();
|
File[] files = file.listFiles();
|
||||||
vector.clear();
|
vector.clear();
|
||||||
fileList.clear();
|
fileList.clear();
|
||||||
vector.add("返回上层");
|
vector.add("返回上层");
|
||||||
fileList.add(file.getParentFile());
|
fileList.add(file.getParentFile());
|
||||||
for (File f : files) {
|
for (File f : files) {
|
||||||
if (!f.isHidden()) {
|
if (!f.isHidden()) {
|
||||||
@ -436,10 +436,10 @@ public class SmaliUi extends JFrame {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
list.setListData(vector);
|
list.setListData(vector);
|
||||||
lblInfo.setText("刷新界面");
|
lblInfo.setText("刷新界面");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// TODO: handle exception
|
// TODO: handle exception
|
||||||
lblInfo.setText("刷新失败");
|
lblInfo.setText("刷新失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -24,15 +24,17 @@ public class ApkSignTools {
|
|||||||
public ApkSignTools() {
|
public ApkSignTools() {
|
||||||
// TODO Auto-generated constructor stub
|
// TODO Auto-generated constructor stub
|
||||||
}
|
}
|
||||||
public void sign() {
|
public boolean sign() {
|
||||||
String exec="jarsigner -verbose -keystore " + signFile.getAbsolutePath() + " -keypass " + signKey
|
String exec="jarsigner -verbose -keystore \"" + signFile.getAbsolutePath() + "\" -keypass " + signKey
|
||||||
+ " -storepass " + keyStorePassword + " -signedjar " + apkFile.getAbsolutePath()+"_sign.apk" + " " + apkFile.getAbsolutePath() + " " + name;
|
+ " -storepass " + keyStorePassword + " -signedjar \"" + apkFile.getAbsolutePath()+"_sign.apk" + "\" \"" + apkFile.getAbsolutePath() + "\" " + name;
|
||||||
System.out.println(exec);
|
System.out.println(exec);
|
||||||
try {
|
try {
|
||||||
Runtime.getRuntime().exec(exec);
|
Runtime.getRuntime().exec(exec).waitFor();
|
||||||
} catch (IOException e) {
|
return true;
|
||||||
|
} catch (Exception e) {
|
||||||
// TODO Auto-generated catch block
|
// TODO Auto-generated catch block
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public File getSignFile() {
|
public File getSignFile() {
|
||||||
|
@ -146,6 +146,7 @@ public class AutoRandomAdSDK {
|
|||||||
for (int i = 0; i < clazzs.length(); i++) {
|
for (int i = 0; i < clazzs.length(); i++) {
|
||||||
File clz = new File(rootPath + File.separator + "smali" + File.separator
|
File clz = new File(rootPath + File.separator + "smali" + File.separator
|
||||||
+ clazzs.getString(i).replace(".", File.separator) + ".smali");
|
+ clazzs.getString(i).replace(".", File.separator) + ".smali");
|
||||||
|
|
||||||
if (clz.exists()) {
|
if (clz.exists()) {
|
||||||
adClass.put(clazzs.getString(i), clz);
|
adClass.put(clazzs.getString(i), clz);
|
||||||
}
|
}
|
||||||
@ -172,7 +173,7 @@ public class AutoRandomAdSDK {
|
|||||||
String newManifest = path
|
String newManifest = path
|
||||||
.replace(sdk.getAbsolutePath() + ".out" + File.separator + "smali" + File.separator, "");
|
.replace(sdk.getAbsolutePath() + ".out" + File.separator + "smali" + File.separator, "");
|
||||||
try {
|
try {
|
||||||
newManifest = newManifest.replaceAll(File.separator, ".") + "." + adClass.get(key).getName();
|
newManifest = newManifest.replace(File.separator, ".") + "." + adClass.get(key).getName();
|
||||||
array.put(manifest.getString(i).replace(key, newManifest.replace(".smali", "")));
|
array.put(manifest.getString(i).replace(key, newManifest.replace(".smali", "")));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// TODO: handle exception
|
// TODO: handle exception
|
||||||
@ -218,7 +219,7 @@ public class AutoRandomAdSDK {
|
|||||||
|
|
||||||
|
|
||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
JSONArray array = config.getJSONArray("filter");
|
JSONArray array = config.isNull("filter")?null:config.getJSONArray("filter");
|
||||||
if (array != null) {
|
if (array != null) {
|
||||||
List<String> list = new ArrayList<>();
|
List<String> list = new ArrayList<>();
|
||||||
for (int i = 0; i < array.length(); i++) {
|
for (int i = 0; i < array.length(); i++) {
|
||||||
@ -282,7 +283,16 @@ public class AutoRandomAdSDK {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private void show(File file){
|
||||||
|
for (File listFile : file.listFiles()) {
|
||||||
|
if(listFile.isDirectory()){
|
||||||
|
show(listFile);
|
||||||
|
}else{
|
||||||
|
System.out.println(">?"+listFile.getAbsolutePath());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
private void out() {
|
private void out() {
|
||||||
if (!isPackage) {
|
if (!isPackage) {
|
||||||
if (inter != null) {
|
if (inter != null) {
|
||||||
@ -299,6 +309,11 @@ public class AutoRandomAdSDK {
|
|||||||
path = sdk.getAbsolutePath() + ".out";
|
path = sdk.getAbsolutePath() + ".out";
|
||||||
name = sdk.getName();
|
name = sdk.getName();
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
|
Thread.sleep(2000);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
smalitools.bale(path,
|
smalitools.bale(path,
|
||||||
path + File.separator + name, new SmaliApkToolsPath() {
|
path + File.separator + name, new SmaliApkToolsPath() {
|
||||||
|
|
||||||
@ -306,6 +321,7 @@ public class AutoRandomAdSDK {
|
|||||||
public void smaliPath(String path) {
|
public void smaliPath(String path) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
try {
|
try {
|
||||||
|
Thread.sleep(2000);
|
||||||
outManifest();
|
outManifest();
|
||||||
File lt;
|
File lt;
|
||||||
File nLt = null;
|
File nLt = null;
|
||||||
@ -317,13 +333,22 @@ public class AutoRandomAdSDK {
|
|||||||
lt = new File(sdk.getAbsolutePath() + ".out" + File.separator + "dexTmp.jar");
|
lt = new File(sdk.getAbsolutePath() + ".out" + File.separator + "dexTmp.jar");
|
||||||
} else {
|
} else {
|
||||||
System.out.println(sdk.getAbsolutePath() + ".out" + File.separator + sdk.getName());
|
System.out.println(sdk.getAbsolutePath() + ".out" + File.separator + sdk.getName());
|
||||||
Process process = Runtime.getRuntime().exec(config.getString("dex2jar") + " " + sdk.getAbsolutePath() + ".out" + File.separator + sdk.getName());
|
|
||||||
|
String exec=config.getString("dex2jar") + " " + sdk.getAbsolutePath() + ".out" + File.separator + sdk.getName();
|
||||||
|
System.out.println("exec:"+exec);
|
||||||
|
Process process = Runtime.getRuntime().exec(exec);
|
||||||
|
process.waitFor();
|
||||||
|
Thread.sleep(100);
|
||||||
|
process=Runtime.getRuntime().exec(exec);
|
||||||
process.waitFor();
|
process.waitFor();
|
||||||
lt = new File(sdk.getAbsolutePath().split(sdk.getName())[0], sdk.getName().replace(".jar", "-dex2jar.jar"));
|
lt = new File(sdk.getAbsolutePath().split(sdk.getName())[0], sdk.getName().replace(".jar", "-dex2jar.jar"));
|
||||||
}
|
}
|
||||||
System.out.println(">>>:" + lt.getAbsolutePath());
|
System.out.println(">>>:" + lt.getAbsolutePath());
|
||||||
if (lt.exists()) {
|
if (lt.exists()) {
|
||||||
nLt = new File(config.getString("ltName"));
|
nLt = new File(config.getString("ltName"));
|
||||||
|
if(nLt.exists()){
|
||||||
|
nLt.delete();
|
||||||
|
}
|
||||||
lt.renameTo(nLt);
|
lt.renameTo(nLt);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -351,16 +376,13 @@ public class AutoRandomAdSDK {
|
|||||||
File filePath = new File(file.getAbsolutePath().replace(file.getName(), ""));
|
File filePath = new File(file.getAbsolutePath().replace(file.getName(), ""));
|
||||||
|
|
||||||
for (File fs : filePath.listFiles()) {
|
for (File fs : filePath.listFiles()) {
|
||||||
|
System.out.println(fs.getAbsolutePath().replace(new File("").getAbsolutePath(),""));
|
||||||
if(fs.isDirectory()){
|
if(fs.isDirectory()){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(!fs.getName().startsWith(fileName)){
|
if(!fs.getName().startsWith(fileName)){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (fs.getName().equals("BuildConfig.smali")) {
|
|
||||||
fs.delete();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
String nName = getNewName(fs.getName());
|
String nName = getNewName(fs.getName());
|
||||||
if (fs.getName().startsWith(fileName + "$")) {
|
if (fs.getName().startsWith(fileName + "$")) {
|
||||||
|
|
||||||
@ -383,6 +405,7 @@ public class AutoRandomAdSDK {
|
|||||||
|
|
||||||
file.delete();
|
file.delete();
|
||||||
}
|
}
|
||||||
|
System.out.println("配置:"+config.getBoolean("isAllPackage"));
|
||||||
if (config.getBoolean("isAllPackage")) {
|
if (config.getBoolean("isAllPackage")) {
|
||||||
String tmp = nowAdClass.keySet().iterator().next();
|
String tmp = nowAdClass.keySet().iterator().next();
|
||||||
File path = new File((nowAdClass.get(tmp)).getAbsolutePath());
|
File path = new File((nowAdClass.get(tmp)).getAbsolutePath());
|
||||||
@ -418,6 +441,7 @@ public class AutoRandomAdSDK {
|
|||||||
|
|
||||||
private void allpackage(File file, String packge) {
|
private void allpackage(File file, String packge) {
|
||||||
for (File tmp : file.listFiles()) {
|
for (File tmp : file.listFiles()) {
|
||||||
|
|
||||||
String pack = tmp.getAbsolutePath().replace(rootPath + File.separator + "smali" + File.separator, "");
|
String pack = tmp.getAbsolutePath().replace(rootPath + File.separator + "smali" + File.separator, "");
|
||||||
if (!packge.contains(pack) && tmp.isDirectory()) {
|
if (!packge.contains(pack) && tmp.isDirectory()) {
|
||||||
movesdk(tmp, File.separator + "smali" + File.separator + packge);
|
movesdk(tmp, File.separator + "smali" + File.separator + packge);
|
||||||
@ -431,14 +455,19 @@ public class AutoRandomAdSDK {
|
|||||||
|
|
||||||
private void movesdk(File path, String toPath) {
|
private void movesdk(File path, String toPath) {
|
||||||
for (File file : path.listFiles()) {
|
for (File file : path.listFiles()) {
|
||||||
|
if (file.getName().equals("BuildConfig.smali")) {
|
||||||
|
file.delete();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (file.isDirectory()) {
|
if (file.isDirectory()) {
|
||||||
String tmp = toPath + File.separator + file.getName();
|
String tmp = toPath + File.separator + file.getName();
|
||||||
//System.out.println("创建文件夹:"+tmp);
|
//System.out.println("创建文件夹:"+tmp);
|
||||||
new File(rootPath + File.separator + tmp).mkdirs();
|
new File(rootPath + File.separator + tmp).mkdirs();
|
||||||
movesdk(file, tmp);
|
movesdk(file, tmp);
|
||||||
} else {
|
} else {
|
||||||
// System.out.println("移动文件:"+file.getAbsolutePath().replace(rootPath, "")+" 到"+toPath);
|
boolean data=file.renameTo(new File(rootPath + File.separator + toPath, file.getName()));
|
||||||
file.renameTo(new File(rootPath + File.separator + toPath, file.getName()));
|
// System.out.println("移动文件:"+file.getAbsolutePath().replace(rootPath, "")+" 到"+(rootPath + File.separator + toPath)+" "+data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -77,6 +77,7 @@ public class CsjTools {
|
|||||||
reader.close();
|
reader.close();
|
||||||
String apkPackage = getXMLValue("package", tmp);
|
String apkPackage = getXMLValue("package", tmp);
|
||||||
System.out.println(apkPackage);
|
System.out.println(apkPackage);
|
||||||
|
_log.smaliPath("获取到APK包名:"+apkPackage);
|
||||||
reader = new BufferedReader(new FileReader(demoManifest));
|
reader = new BufferedReader(new FileReader(demoManifest));
|
||||||
tmp = reader.readLine();
|
tmp = reader.readLine();
|
||||||
String manifest = tmp.replace(getXMLValue("package", tmp), apkPackage) + "\n";
|
String manifest = tmp.replace(getXMLValue("package", tmp), apkPackage) + "\n";
|
||||||
@ -93,7 +94,7 @@ public class CsjTools {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void out(String srcFile, String encryptFile, int version) {
|
public void out(String srcFile, String encryptFile, int version) {
|
||||||
EncryptJar encryptJar = new EncryptJar();
|
EncryptJar encryptJar = new EncryptJar();
|
||||||
encryptJar.encrypt(new File(srcFile), encryptFile, 13, version);
|
encryptJar.encrypt(new File(srcFile), encryptFile, 13, version);
|
||||||
|
|
||||||
@ -168,8 +169,9 @@ public class CsjTools {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void start(SmaliApkToolsPath toolsPath) {
|
private void start() {
|
||||||
System.out.println("开始制作资源包");
|
_log.smaliPath("开始制作资源包");
|
||||||
|
|
||||||
commandFile();
|
commandFile();
|
||||||
String apkXML = loadXml(apk_res + File.separator + "public.xml");
|
String apkXML = loadXml(apk_res + File.separator + "public.xml");
|
||||||
String demoXML = loadXml(csj_res + File.separator + "public.xml");
|
String demoXML = loadXml(csj_res + File.separator + "public.xml");
|
||||||
@ -206,24 +208,39 @@ public class CsjTools {
|
|||||||
new File("csj/").mkdirs();
|
new File("csj/").mkdirs();
|
||||||
}
|
}
|
||||||
SmaliUtils utils = new SmaliUtils();
|
SmaliUtils utils = new SmaliUtils();
|
||||||
|
_log.smaliPath("资源包制作完成,开始打包为apk");
|
||||||
utils.bale(csj_Path, csjRes.getAbsolutePath(), new SmaliApkToolsPath() {
|
utils.bale(csj_Path, csjRes.getAbsolutePath(), new SmaliApkToolsPath() {
|
||||||
@Override
|
@Override
|
||||||
public void smaliPath(String path) {
|
public void smaliPath(String path) {
|
||||||
toolsPath.smaliPath("已出包" + csjRes.getAbsolutePath());
|
_log.smaliPath("已出包" + csjRes.getAbsolutePath());
|
||||||
System.out.println("耗时:"+(System.currentTimeMillis()-time)/1000+" 秒");
|
_log.smaliPath("耗时:" + (System.currentTimeMillis() - time) / 1000 + " 秒");
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private long time;
|
private long time;
|
||||||
|
private boolean unPackageCSJ = false;
|
||||||
|
private SmaliApkToolsPath _log;
|
||||||
|
|
||||||
public void build(String csjPath, String apkPath, SmaliApkToolsPath log) {
|
public void build(String csjPath, String apkPath, SmaliApkToolsPath log) {
|
||||||
time=System.currentTimeMillis();
|
time = System.currentTimeMillis();
|
||||||
|
_log=log;
|
||||||
|
unPackageCSJ=false;
|
||||||
|
File csjFile = new File(csjPath);
|
||||||
|
if (new File(csjFile.getName().replace(".apk", "")).exists()) {
|
||||||
|
System.out.println(">?>>"+new File(csjFile.getName().replace(".apk", "")).getAbsolutePath());
|
||||||
|
unPackageCSJ = true;
|
||||||
|
}
|
||||||
SmaliUtils utils = new SmaliUtils();
|
SmaliUtils utils = new SmaliUtils();
|
||||||
Tools.deleteFiles(new File("").getAbsolutePath()+File.separator+new File(csjPath).getName().replace(".apk",File.separator));
|
// Tools.deleteFiles(new File("").getAbsolutePath() + File.separator + new File(csjPath).getName().replace(".apk", File.separator));
|
||||||
Tools.deleteFiles(new File("").getAbsolutePath()+File.separator+new File(apkPath).getName().replace(".apk",File.separator));
|
Tools.deleteFiles(new File("").getAbsolutePath() + File.separator + new File(apkPath).getName().replace(".apk", File.separator));
|
||||||
new Thread(new Runnable() {
|
new Thread(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
log.smaliPath("开始反编译目标APK");
|
_log.smaliPath("开始反编译目标APK");
|
||||||
|
|
||||||
|
|
||||||
utils.unPack(apkPath, new SmaliApkToolsPath() {
|
utils.unPack(apkPath, new SmaliApkToolsPath() {
|
||||||
@Override
|
@Override
|
||||||
public void smaliPath(String path) {
|
public void smaliPath(String path) {
|
||||||
@ -232,35 +249,42 @@ public class CsjTools {
|
|||||||
System.out.println(path);
|
System.out.println(path);
|
||||||
apk_Path = path;
|
apk_Path = path;
|
||||||
apk_res = apk_Path + File.separator + "res" + File.separator + "values";
|
apk_res = apk_Path + File.separator + "res" + File.separator + "values";
|
||||||
runStart(log);
|
runStart();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
log.smaliPath("开始反编译穿山甲Demo");
|
|
||||||
utils.unPack(csjPath, new SmaliApkToolsPath() {
|
|
||||||
@Override
|
|
||||||
public void smaliPath(String path) {
|
|
||||||
log.smaliPath("穿山甲Demo反编译完成:" + path);
|
|
||||||
System.out.println(path);
|
|
||||||
csj_Path = path;
|
|
||||||
csj_res = csj_Path + File.separator + "res" + File.separator + "values";
|
|
||||||
log.smaliPath("开始修改穿山甲清单");
|
|
||||||
new Thread(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
new AutoRandomAdSDK().startNotUnPackage(path, new SmaliApkToolsPath() {
|
|
||||||
@Override
|
|
||||||
public void smaliPath(String path) {
|
|
||||||
System.out.println("-------" + path);
|
|
||||||
csjManifest = true;
|
|
||||||
runStart(log);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}).start();
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
if (unPackageCSJ) {
|
||||||
|
_log.smaliPath("穿山甲demo已存在,不再反编译");
|
||||||
|
csjManifest = true;
|
||||||
|
runStart();
|
||||||
|
} else {
|
||||||
|
_log.smaliPath("开始反编译穿山甲Demo");
|
||||||
|
utils.unPack(csjPath, new SmaliApkToolsPath() {
|
||||||
|
@Override
|
||||||
|
public void smaliPath(String path) {
|
||||||
|
_log.smaliPath("穿山甲Demo反编译完成:" + path);
|
||||||
|
System.out.println(path);
|
||||||
|
csj_Path = path;
|
||||||
|
csj_res = csj_Path + File.separator + "res" + File.separator + "values";
|
||||||
|
_log.smaliPath("开始修改穿山甲");
|
||||||
|
new Thread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
new AutoRandomAdSDK().startNotUnPackage(path, new SmaliApkToolsPath() {
|
||||||
|
@Override
|
||||||
|
public void smaliPath(String path) {
|
||||||
|
_log.smaliPath("穿山甲修改完成");
|
||||||
|
System.out.println("-------" + path);
|
||||||
|
csjManifest = true;
|
||||||
|
runStart();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).start();
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}).start();
|
}).start();
|
||||||
|
|
||||||
@ -269,9 +293,9 @@ public class CsjTools {
|
|||||||
boolean csjManifest = false;
|
boolean csjManifest = false;
|
||||||
boolean apkUnPackage = false;
|
boolean apkUnPackage = false;
|
||||||
|
|
||||||
private void runStart(SmaliApkToolsPath log) {
|
private void runStart() {
|
||||||
if (apkUnPackage && csjManifest) {
|
if (apkUnPackage && csjManifest) {
|
||||||
start(log);
|
start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user