关于Android Studio4以上版本不能attach和项目
2021-08-12 本文已影响0人
吉凶以情迁
image.png
image.png
研究的结果是失败的,虽然找到了一些痕迹。
在搜字符串的时候搜到了一点和这相关的东西。
![image.png]C6YZ83B%BP%FMXMI`KH8A.png
*/
public class AndroidProcessChooserDialog extends DialogWrapper {
static final /* synthetic */ boolean $assertionsDisabled = (!AndroidProcessChooserDialog.class.desiredAssertionStatus());
@NonNls
private static final String DEBUGGABLE_DEVICE_PROPERTY = "DEBUGGABLE_DEVICE";
@NonNls
private static final String DEBUGGABLE_PROCESS_PROPERTY = "DEBUGGABLE_PROCESS";
@NonNls
private static final String DEBUGGER_ID_PROPERTY = "DEBUGGER_ID";
@NonNls
private static final String SHOW_ALL_PROCESSES_PROPERTY = "SHOW_ALL_PROCESSES";
private final MyProcessTreeCellRenderer myCellRenderer;
private final AndroidDebugBridge.IClientChangeListener myClientChangeListener;
private JPanel myContentPanel;
private JLabel myDebuggerLabel;
private JComboBox<RunConfiguration> myDebuggerRunConfigCombo;
private JLabel myDebuggerRunConfigLabel;
private JComboBox<AndroidDebugger> myDebuggerTypeCombo;
private final AndroidDebugBridge.IDeviceChangeListener myDeviceChangeListener;
private String myLastSelectedDevice;
private String myLastSelectedProcess;
private Tree myProcessTree;
private final Project myProject;
private AndroidDebugger mySelectedAndroidDebugger;
private Client mySelectedClient;
private RunConfiguration mySelectedRunConfiguration;
private JBCheckBox myShowAllProcessesCheckBox;
private final boolean myShowDebuggerSelection;
private final MergingUpdateQueue myUpdatesQueue = new MergingUpdateQueue("AndroidProcessChooserDialogUpdatingQueue", (int) LayerSpacingSliderActionKt.MAX_LAYER_SPACING, true, MergingUpdateQueue.ANY_COMPONENT, getDisposable());
private /* synthetic */ void $$$setupUI$$$() {
JPanel jPanel = new JPanel();
this.myContentPanel = jPanel;
jPanel.setLayout(new GridLayoutManager(5, 2, new Insets(0, 0, 0, 0), -1, -1, false, false));
JBLabel jBLabel = new JBLabel();
jBLabel.setText("Select a process to attach to:");
jBLabel.setDisplayedMnemonic('S');
jBLabel.setDisplayedMnemonicIndex(0);
jPanel.add(jBLabel, new GridConstraints(0, 0, 1, 2, 8, 0, 0, 0, (Dimension) null, (Dimension) null, (Dimension) null));
JBScrollPane jBScrollPane = new JBScrollPane();
jPanel.add(jBScrollPane, new GridConstraints(4, 0, 1, 2, 0, 3, 3, 3, (Dimension) null, new Dimension(250, 300), (Dimension) null));
Tree tree = new Tree();
this.myProcessTree = tree;
tree.setRootVisible(false);
tree.setShowsRootHandles(true);
jBScrollPane.setViewportView(tree);
JBCheckBox jBCheckBox = new JBCheckBox();
this.myShowAllProcessesCheckBox = jBCheckBox;
jBCheckBox.setText("Show all processes");
jBCheckBox.setMnemonic('A');
jBCheckBox.setDisplayedMnemonicIndex(5);
jPanel.add(jBCheckBox, new GridConstraints(1, 0, 1, 2, 8, 0, 0, 0, (Dimension) null, (Dimension) null, (Dimension) null));
JLabel jLabel = new JLabel();
this.myDebuggerRunConfigLabel = jLabel;
jLabel.setText("Use Android Debugger Settings from:");
jPanel.add(jLabel, new GridConstraints(2, 0, 1, 1, 8, 0, 0, 0, (Dimension) null, (Dimension) null, (Dimension) null));
JComboBox<RunConfiguration> jComboBox = new JComboBox<>();
this.myDebuggerRunConfigCombo = jComboBox;
jPanel.add(jComboBox, new GridConstraints(2, 1, 1, 1, 8, 1, 2, 0, (Dimension) null, (Dimension) null, (Dimension) null));
JLabel jLabel2 = new JLabel();
this.myDebuggerLabel = jLabel2;
jLabel2.setText("Debug Type:");
jPanel.add(jLabel2, new GridConstraints(3, 0, 1, 1, 8, 0, 0, 0, (Dimension) null, (Dimension) null, (Dimension) null));
JComboBox<AndroidDebugger> jComboBox2 = new JComboBox<>();
this.myDebuggerTypeCombo = jComboBox2;
jComboBox2.setEnabled(true);
jPanel.add(jComboBox2, new GridConstraints(3, 1, 1, 1, 8, 1, 2, 0, (Dimension) null, (Dimension) null, (Dimension) null));
jBLabel.setLabelFor(jBScrollPane);
jLabel2.setLabelFor(jComboBox2);
}
public /* synthetic */ JComponent $$$getRootComponent$$$() {
return this.myContentPanel;
}
目前找不到什么方法,我不会hook window的java字符串之类的东西,接下来靠各位分析了,我目前只研究到这个类,这个类在.gradle里面的一个 android.jar里面。