查看现有的Android应用程序,我有完整的源代码,我想知道如何确定哪个适配器在运行的应用程序中处理来自UI的特定屏幕的事件。
有许多布局(XML)文件和一大堆(数量极低)的适配器。到目前为止,猜测,重写和设置调试点并没有引导我使用适配器。 (坦率地说,我不确定我甚至可以为屏幕找到正确的布局文件我正在努力工作!)
我非常熟悉Web开发和PHP,并且给定了一个应用程序,有很多方法可以找到进入“控制器”代码的方法。也非常了解Java,并且到目前为止已经为应用程序制作了mod,但现在已经卡住......有人可以指点反向工程Android应用吗?
答案 0 :(得分:2)
上次我这样做是在一年前,当Android安全性很糟糕时(而不是很多程序),所以我使用了eclipse反编译器和dex2jar。其实我很惊讶 - 你怎么能得到完整的代码?
使用eclipse的好处是你可以回溯调用者的功能。
事情是 - 我不认为你是在适配器之后。如果屏幕是一个列表,你实际上是在ListView
(包含适配器)之后。也许适配器甚至可能包含对listview本身的引用。所以,尝试找到视图而不是适配器
如果它是一个listView,那么,实际上,在其中查找名为“xxxx_row.xml”的东西,其中包含单词“row”,因为这是listview视图的标准约定。
答案 1 :(得分:2)
这适用于大多数Android应用。
通常,每个屏幕都是由Activity类的实例构建的。
检查项目根目录中的AndroidManifest.xml。查找包含这样的intent过滤器的活动声明:
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
这是应用程序的“入口”点,不是严格正确但足够接近此任务。实际上,Android会创建Application类的内部单例实例,可能会扩展但通常不会。 Grep for“extends Application”或“:Application”知道。
查找与活动名称同名的类文件,在本例中为SampleAppMainActivity.
打开此类文件并找到onCreate()。这是Android在实例化活动时调用的第一种方法。
查找setContentView()。它将引用一个布局,可以在res / layout或其中的子文件夹中找到,就像这样。 R.layout.sampleappmainlayout。文件本身就是XML。此文件定义活动屏幕中使用的UI元素(它可能包括合并其他布局)。
如果有多个活动,请在此活动中查找Intent
类的实例的创建,通常附加到按钮或菜单点击监听器。
从第2步开始递归:)
其他答案涉及适配器的细节。或许不是吗? Android使用适配器来处理数据检索并将这些数据绑定到UI元素。他们不“回应UI事件”。您是在询问MVC模型中的视图控制器吗?
祝你好运。P.S。无论您的客户支付给您什么,这还不够。我猜你是如何登陆这场演出的,但是这样。就是这样。
答案 2 :(得分:-1)
操作系统Windows的说明:
dex2jar Calculator.apk
,如果在同一文件夹中显示所有成功文件 Calculator.apk.dex2jar.jar < / LI>
jd-gui
并打开上一步的文件。File-Save All Sources
并保存文件。apktool d Calculator.apk Calculator
,其中Calculator.apk包名称,Calculator-文件夹进行反编译。