确定 Android 应用程序中语句的执行顺序?
Posted
技术标签:
【中文标题】确定 Android 应用程序中语句的执行顺序?【英文标题】:Determine the sequence of execution of statements in an Android app? 【发布时间】:2021-04-27 17:36:32 【问题描述】:我必须对 android 应用进行逆向工程才能了解其代码的工作原理。我使用 jadx v1.1.0 来查看应用程序组件(源代码等),但这个应用程序只允许我查看源代码。我不知道如何调试代码,或者弄清楚代码的执行顺序。我不知道这个 Android 应用的头部和尾部是什么。
我能做些什么来解决这种情况?
【问题讨论】:
【参考方案1】:在尝试阅读 Android 应用程序之前,您肯定需要做一些研究。不过,需要进行多少研究取决于您对 Java 语言的熟悉程度。如果您已经熟悉语法,那么您可以直接跳到 Android 组件生命周期(这是假设您的目标只是了解应用程序中发生的事情,而不是学习如何编写 Android 应用程序)。
我将从这组 Medium 文章开始。作者简单地解释了Android组件的各种生命周期及其回调方法,做得很好:
https://medium.com/androiddevelopers/the-android-lifecycle-cheat-sheet-part-i-single-activities-e49fd3d202ab https://medium.com/androiddevelopers/the-android-lifecycle-cheat-sheet-part-ii-multiple-activities-a411fd139f24 https://medium.com/androiddevelopers/the-android-lifecycle-cheat-sheet-part-iii-fragments-afc87d4f37fd如果您可以了解 Android 组件的生命周期及其相关的回调方法,您应该能够大致了解发生了什么。查找名称中带有“Activity”或“Fragment”字样的 Java 文件,我将从那里开始。在这些文件中,查找遵循onCreate
、onResume
、onDestroy
等命名约定的回调方法。如果您阅读了上述文章,您就会大致了解它们的顺序调用,您可以找出应用程序的执行顺序。
从那里,有很多方法可以分支。我有一种感觉,这会给你一个足够好的开始,让你有足够的知识知道从那里研究什么。
【讨论】:
【参考方案2】:您需要更多地了解 Android 平台,以便为记录基本事件序列奠定基础,但根据应用程序的复杂性,这可能会变得相当困难。
我建议查看 manifest 文件,这将帮助您确定哪些(如果适用)活动是启动器,以及定义任何权限、服务和接收器。还要寻找一个扩展Application 的类。这将是您在启动时的第一个执行点。另请查看 Android 文档和示例,以了解典型的应用程序结构。
可以将此源代码迁移到存根的 Android 项目中以对其进行调试,但这需要时间和耐心。
【讨论】:
以上是关于确定 Android 应用程序中语句的执行顺序?的主要内容,如果未能解决你的问题,请参考以下文章