从源代码在 Android 上构建 Telegram 应用程序

Building the Telegram application on Android from source

提问人:IrenKlim 提问时间:3/18/2023 最后编辑:cokeman19IrenKlim 更新时间:9/26/2023 访问量:507

问:

这是我第一次从源代码编译应用程序,我正在恢复适用于 Android 的 Telegram 5.3.0 版本。

我是否正确理解该版本需要 gradle 版本 4.8 而不是其他版本,以及不高于 8 的 JDK 版本?另外,我没有 reseale.keystore 文件,我可以从较新版本的源代码中获取此文件,还是单独创建此文件?

项目结构:

enter image description here

构建 android-gradle-plugin 电报

评论

0赞 Ken Wolf 3/18/2023
我假设您必须使用自己的密钥创建并签名它

答:

1赞 Sergei Kozelko 3/20/2023 #1

TLDR:Gradle 包装器已经设置好了,所以你可以使用它使用的任何版本。JDK 8 保证可以工作,其他版本可能会也可能不会工作。您需要创建自己的 release.keystore,它用于对应用程序进行签名,共享会带来严重的安全风险。

注意:我能找到的最接近的 Telegram 来源版本是 5.3.1,所以我将使用它作为参考。

该版本的 Telegram 是使用 Gradle 4.4 和 Android Gradle 插件 3.1.4 设置的。查看 Gradle-AGP 兼容性 AGP 3.1.4 需要 Gradle 4.4+。所以 4.4 和 4.10.2(最后一个 4.x 版本)之间的版本。更高版本 (5.x+) 可能有效,但不能保证。

AGP 3.1.4 的另一个考虑点是 Android Studio 兼容性。北极狐 |2020.3.1 是支持 AGP 3.1 的最后一个版本,因此使用新的 Studio 版本将需要 AGP,并且可能需要升级 Gradle 和 JDK。

现在关于 JDK。从 Android Studio 2.2.0 开始,它与 JDK 8 捆绑在一起,直到 Android Studio 4.2.0 切换到 JDK 11 时也是如此。此外,Gradle 4.4 最高支持 JDK 9 和 Gradle 4.7 - 最高支持 JDK 10(兼容性文档)。因此,除了使用 JDK 8 之外,您真的没有太多选择。

最后是 .文档中有一个很好的部分,说明为什么它应该保密。基本上,它存储用于对应用程序进行签名的密钥。因此,任何有权访问密钥库的人(例如恶意行为者)都可以创建不同的应用程序,操作系统将将其视为对现有版本的更新。这就是为什么 Telegram 的密钥库不是公开的,您需要创建自己的密钥库。release.keystore

评论

0赞 IrenKlim 4/9/2023
你好。您能否建议在这个项目中应该使用哪种 NDK?
0赞 Sergei Kozelko 4/18/2023
@IrenKlim不幸的是,我对 NDK 没有太多经验,但 r19 可能是一个不错的选择,因为它大约在同一时间发布