android app两种调试方法

方法一:

1、使用apktool的-d选项反编译apk文件

java  -jar  apktool.jar  d  -d  target.apk  -o  output

2、在AndroidManifest的application节点中添加 android:debuggable="true"

3、在入口点的类的onCreate中添加如下代码等待调试

invoke-static{}, Landroid/os/Debug;->waitForDebugger()V

4、回编译apk

java  -jar  apktool.jar  b  -d  output  -o  newTarget.apk

5、对apk进行签名

java -jar signapk.jar testkey.x509.pem testkey.pk8 newTarget.apk signed.apk

6、将签名后的apk安装到手机或者模拟器上

adb install signed.apk

7、将1中的smali代码导入到Android Studio中

file→open→output目录→下断点

8、打开Monitor查找相应的进程

运行→monitor 或者Tools ->Android ->Android Device Monitor

9、配置远程调试选项

Run→Editor Configurations→Defaults→Remote,点击+号新增一个,Host为localhost,Port为8700

10、打开apk,点击绿色的小虫子就可以开始调试了

方法二:无需修改原apk文件

1、用 Android killer等工具反编译apk文件

2、将smali代码入到Android Studio中,安装smaliidea插件

File→Settings→Plugins→Install plugin from disk…→Restart

3、配置远程调试选项,打开monitor

4、使用adb以debug方式启动apk

adb shell am start -D -n package/activitiyname

5、下断点开始调试,在watch中添加寄存器

时间: 2024-10-11 00:56:17

android app两种调试方法的相关文章

Android APP 两种用程序拨号的方式

想在APP中添加一个拨号功能该怎样做呢?Android提供了两种方式,一种是ACTION_CALL方式直接拨打,另一种是ACTION_DIAL方式打开系统的拨号界面. 下面我们来做个小例子 首先需要在AndroidManifest.xml中添加一个使用权限,这个容易忘哈哈. <uses-permission android:name="android.permission.CALL_PHONE" /> 然后搭一个简单的界面测试一下,下面是布局文件代码 <?xml ve

【原】ios打包ipa的两种实用方法(.app转.ipa)

总结一下,目前.app包转为.ipa包的方法有以下几种: 1.Apple推荐的方式,即实用xcode的archive功能 Xcode菜单栏->Product->Archive->三选一,一般选后两个. 局限性:个人开发一般采用这种方法,但是当一个证书多人使用时就稍显麻烦.一般多人开发时都是采用provisioning profile+P12文件来进行真机调试.上述方法在最后导出ipa包时需要输入appleID,这时还要向团队的其他人要.采用provisioning profile+P12

Android—— 线程 thread 两种实现方法!(转)

原文地址:http://blog.csdn.net/boyupeng/article/details/6208072 这篇文章中有三点需要提前说明一下, 一: 在android中有两种实现线程thread的方法: 一种是,扩展java.lang.Thread类 另一种是,实现Runnable接口 二:Thread类代表线程类,它的两个最主要的方法是: run()——包含线程运行时所执行的代码 Start()——用于启动线程 三: Handler 机制,它是Runnable和Activity交互的

Android的两种菜单

Android子菜单和选项菜单与上下文菜单的实现 菜单在Android开发中必不可少,可是要怎么实现各种菜单呢?是不是很头疼呢?下面我就来介绍一下: 1. 选项菜单和子菜单的实现 选项菜单:最常规的菜单,Android中把它叫做option menu.选项菜单最多只能显示6个菜单项,超过6个时,第6个菜单项会被系统替换为一个叫“更多”的子菜单,原来显示不下的菜单项都作为“更多”菜单的子菜单项. 子菜单:Android中点击了子菜单将弹出悬浮窗口显示子菜单项.子菜单不支持嵌套,即子菜单中不能再包括

angular2系列教程(十)两种启动方法、两个路由服务、引用类型和单例模式的妙用

今天我们要讲的是ng2的路由系统. 例子 例子是官网的例子,包含一个“危机中心”和“英雄列表”,都在一个app中,通过路由来控制切换视图.还包含了promise的用法,服务的用法等多个知识点. 源代码: https://github.com/lewis617/angular2-tutorial/tree/gh-pages/router 运行方法: 在根目录下运行: http-server 引入库文件设置base href 路由并不在ng2中,需要我们额外引入,另外我们需要设置base href,

android使用两种方式注册receiver

1. package com.example.myreceiver; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.content.IntentFilter; import android.view.Menu; import android.view.View; public class MainActivity extends Activi

C#中的两种debug方法介绍

第一种:需要把调试方法改成debug 代码用 #if DEBUG 包裹 using System; using System.Collections.Generic; using System.Text; using System.IO; namespace SplitPackage { public static class EnvConfig { static EnvConfig() { #if DEBUG ToolsPath = @"D:\workspace\shopstyle\tool&

基于Apache+Tomcat负载均衡的两种实现方法

Apache+Tomcat实现负载均衡的两种实现方法 如果我们将工作在不同平台的apache能够实现彼此间的高效通信,因此它需要一种底层机制来实现--叫做apr Apr的主要目的就是为了其能够让apache工作在不同的平台上,但在linux上安装apache的时候通常都是默认安装的 [[email protected] ~]#rpm -qi aprName                 :apr                                        Relocation

OGG的Director web hang住的两种解决方法

OGG的Director web hang住的两种解决方法: OGG的Director web hang住的解释:是指web界面能登陆进去,但是看得刷新日期是很久之前的日期,并且该日期不变化. OGG的Director web hang住 的情况之一: 参考如下的mos文章: Director web displaying "Error 500-Internal Server Error". Domain log has Cannot open paging store. (Doc I