【问题标题】:Is there a way to tell what technology was used to build an Android app?有没有办法知道使用什么技术来构建 Android 应用程序?
【发布时间】:2018-01-03 08:55:42
【问题描述】:

我下载并安装了一个 Android 应用程序,我还提取了 APK,

apk 文件中是否有某种方法可以告诉您使用什么编程语言编写程序?

有什么工具可以帮助解决这个问题吗?

哪些语言可以确定,哪些不能?

【问题讨论】:

  • 许多(全部?)jvm 语言都带来了它们的 stdlib 扩展。例如,如果您看到 kotlin.* 命名空间的用法,则很有可能这里使用了 kotlin。

标签: android apk


【解决方案1】:

通常大多数 android 应用程序都是使用以下技术构建的:---

  1. React Native 应用程序
  2. Cordova 应用程序
  3. 本机 java/kotlin 应用程序

要确定技术,需要先使用this link反编译应用程序

然后寻找“资产”文件夹。通常,资产文件夹应该出现在应用程序层次结构的最顶部。

那么你可以通过以下预测来判断应用技术:--

  1. 如果资产文件夹存在并且有任何扩展名为“.bundle”的文件(主要是文件名是“index.android.bundle”),那么应用程序是使用 React Native 构建的。

  2. 如果 assets 文件夹包含文件夹名称“www”并且“assets/www”包含以下文件/文件夹结构,则它是一个 cordova 应用程序。

  3. 如果邻居 1 或 2 为真,则可以使用本机代码编写应用程序,即使用 java/kotlin

【讨论】:

  • 如果为真,则不是 1 或 2 :( 但我几乎不相信该应用程序是使用本机代码编写的 :(
  • 1和2都不对,assets文件夹是空的!
【解决方案2】:

您可以进行逆向工程:(https://www.apkdecompilers.com/http://www.javadecompilers.com/apk)反编译 apk 并查看代码及其编程语言。

【讨论】:

  • 反编译 apk 大多数时候会将语言转换为 java.. 也许总是..即使它是 react native 或 kotlin。
【解决方案3】:

获取具体技术的方法不是很准确,但是通过adb可以查看应用的Activity名称。

通常当您打开不同的活动或页面时,使用本机技术时,活动名称会有所不同,如下所示(Playstore 应用):

而在 Ionic 等混合应用程序中,它通常捆绑为一个,因此唯一的活动将是 MainActivity... 就像使用颤振制作的 Hamilton 应用程序一样:

【讨论】:

  • 我没听懂,你是什么意思?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 2010-11-05
相关资源
最近更新 更多