跳到主要内容

移动端自编译(可选)

Tailchat 移动端的源码位于 client/mobile. 技术栈为 react-native

你可以直接在官网中下载已经编译好的通用版本: https://tailchat.msgbyte.com/downloads,或者自行通过源码编译

本节内容主要就是讲解如何对 Tailchat 的移动端进行编译。

准备开发环境

你可以在 https://reactnative.dev/docs/environment-setup 看到完整的开发环境准备操作,这里就不再赘述。

安装依赖

cd client/mobile
yarn

环境检查

yarn doctor

准备环境变量

cp .env.example .env

.env 文件中我们来配置所需的环境变量用于编译

TAILCHAT_UPLOAD_STORE_FILE=
TAILCHAT_UPLOAD_STORE_PASSWORD=
TAILCHAT_UPLOAD_KEY_ALIAS=
TAILCHAT_UPLOAD_KEY_PASSWORD=

GETUI_APPID=
GETUI_APPKEY=
GETUI_APPSECRET=
GETUI_HUAWEI_APP_ID=

证书签名

如果仅用于测试,则可以跳过本节内容,Tailchat 会为你使用公开测试证书进行签名

Android

如果需要使用你自己的证书进行签名,你需要填入以下内容:

TAILCHAT_UPLOAD_STORE_FILE=
TAILCHAT_UPLOAD_STORE_PASSWORD=
TAILCHAT_UPLOAD_KEY_ALIAS=
TAILCHAT_UPLOAD_KEY_PASSWORD=

需要依次填入: 证书文件名、密码、别名、别名密码 证书文件需要放在client/mobile/android/app目录下,一般是 *.keystore 文件

至于具体如何生成,你可以使用 Android Studio 或者 keytool 工具来生成,这个有很多公开资料就不在此赘述了

iOS

TODO

推送

Tailchat 通过集成个推作为中转来实现安卓多厂商的消息推送

你可以在 getui 的应用配置中获得所有所需要的配置

其中 GETUI_APPID, GETUI_APPKEY, GETUI_APPSECRET 依次填入

在服务端需要对应配置 GETUI_APPID, GETUI_APPKEY, GETUI_MASTERSECRET 来使自部署的推送服务能正确发送推送

厂商推送

厂商推送可以按需打开或者关闭

需要修改源码如下:

  • client/mobile/android/app/build.gradlemanifestPlaceholders 部分 和 dependencies 部分
  • .env 环境变量配置

编译

安卓

cd android
./gradlew assembleRelease

iOS

iOS 编译需要通过 xcode 进行操作

因为缺少设备无法截图,请按照网络上公开资料进行操作即可

常见问题

如果出现以下类型的报错:

error Failed to install the app. Make sure you have the Android development environment set up: https://reactnative.dev/docs/environment-setup.
Error: Command failed: gradlew.bat app:installDebug -PreactNativeDevServerPort=8081

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.
> Could not resolve all dependencies for configuration ':app:debugRuntimeClasspath'.
> Could not create task ':app:generateDebugLintModel'.
> java.lang.NullPointerException (no error message)

* 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 27s

可能是因为你的环境变量有缺失, 你可以保留值为空,但该条目必须存在

如:

GETUI_APPID=xxxxxxxxxxxx
GETUI_APPKEY=yyyyyyyyy
GETUI_APPSECRET=zzzzzzzzzz
GETUI_HUAWEI_APP_ID=

而不是

GETUI_APPID=xxxxxxxxxxxx
GETUI_APPKEY=yyyyyyyyy
GETUI_APPSECRET=zzzzzzzzzz

我能自己编译后发布到应用商店么

可以,但是请修改应用的名称、包名、图标等信息防止与官方应用冲突