Android Telegram 编译运行(第一次搞安卓项目)

论坛 期权论坛 脚本     
匿名技术用户   2021-1-7 02:42   270   0

对于一个非Android 开发者来说,遇到几个问题,从网上找了些资料,大概汇总下

  • 环境
  1. Windows 10
  2. JDK1.8
  3. NDK 21.1.6352462
  4. SDK 29
  5. BuildTools 29.0.3
  6. Android Studio 4.0
  • 源码下载

GIT地址:https://github.com/DrKLO/Telegram.git

按照GITHUB上面的步骤,大概有以下几个:

  1. Download the Telegram source code from https://github.com/DrKLO/Telegram ( git clone https://github.com/DrKLO/Telegram.git )
  2. Copy your release.keystore into TMessagesProj/config,这一步怎么生成,网上很多文章,可以参考 Android Studio签名打包的两种方式,生成文件后重命名为release.keystore并放到TMessagesProj/config这个目录下
  3. Fill out RELEASE_KEY_PASSWORD, RELEASE_KEY_ALIAS, RELEASE_STORE_PASSWORD in gradle.properties to access your release.keystore,在gradle.properties配置文件中配置这几个键,值为上一步生成的对应的值
  4. Go to https://console.firebase.google.com/, create two android apps with application IDs org.telegram.messenger and org.telegram.messenger.beta, turn on firebase messaging and download google-services.json, which should be copied to the same folder as TMessagesProj. 在Firebase上创建两个应用分别为org.telegram.messenger和org.telegram.messenger.beta,这两个值可以自己定义,不一定用这两个,创建之后,用org.telegram.messenger生成的google-services.json放到TMessagesProj目录下
  5. Fill out values in TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java – there’s a link for each of the variables showing where and which data to obtain. 在这个类里面修改APP_ID以及APP_HASH两个值,这两个值需要从这里注册(https://my.telegram.org/apps)网站打不开需要科学上网。
  6. 最后编译运行,下面是我遇到编译的时候出的问题,可以先大概过下,编译的是时候注意把build.gradle中的熟悉buildTypes的HA,release先注释掉,不然后面编译需要很久,我们先只编译debug的看看,另外需要注释掉这段代码applicationIdSuffix ".beta"

下面是我遇到的几个报错点

  • 报错1
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':TMessagesProj:assembleAfatDebugTgVoipDex'.
> A problem occurred starting process 'command 'C:\Users\Taylor\AppData\Local\Android\Sdk/build-tools/29.0.3/dx''

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 2m 8s
16 actionable tasks: 16 executed

修改,这行代码最后少了一个.bat,这个构建脚本感觉是针对linux上面写的

def dxUtilPath = "${sdkDirectory.path}/build-tools/${buildToolsVersion}/dx.bat"
  • 报错2
FAILURE: Build failed with an exception.

* Where:
Build file 'F:\Telegram\TMessagesProj\build.gradle' line: 354

* What went wrong:
Execution failed for task ':TMessagesProj:assembleAfatDebugTgVoipDex'.
> Process 'command 'E:\Program Files\Java\jdk1.8.0_152\jre\bin\javac'' finished with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 13s
16 actionable tasks: 2 executed, 14 up-to-date

修改,在build.gradle找到方法findJavaHome(),修改如下:

private static File findJavaHome() {
    //String javaPath = System.getProperty("java.home")  //原代码
    String javaPath = "E:\\Program Files\\Java\\jdk1.8.0_152"  //修改后代码
    if (javaPath != null) {
        File javaBase = new File(javaPath)
        if (javaBase.exists()) {
            if (javaBase.getName().equalsIgnoreCase("jre") && new File(javaBase.getParentFile(), "bin/java").exists()) {
                return javaBase.getParentFile()
            } else {
                return javaBase
            }
        } else {
            return null
        }
    } else {
        return null
    }
}
  • 报错3(编译JNI的时候要保证电脑配置高呀,不然卡死,我的电脑配置16G内存,编译的时候CPU一直是100%,内存达到10G以上)

后面基本上是JNI的编译错误了,从网上看到的文章是项目路径不能太长,我之前试过把项目放到好几个层级下,编译JNI确实失败了,后面我直接把项目放到E:\\Telegram下面了

另外以下几个文件都在文件的首行添加代码:LOCAL_SHORT_COMMANDS := true

TMessagesProj/jni/libtgvoip3/Android.mk
TMessagesProj/jni/libtgvoip/Android.mk
TMessagesProj/jni/Android.mk
TMessagesProj/jni/Application.mk

编译是个漫长的过程,请耐心等待,最后编译通过(感觉编译了有一个多小时......),

大家可以发评论多交流交流

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP