|
|
|
@ -0,0 +1,155 @@
|
|
|
|
|
---
|
|
|
|
|
sidebar_position: 12
|
|
|
|
|
title: Mobile Self Compile (optional)
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
The source code of `Tailchat` mobile terminal is located in `client/mobile`. The technology stack is `react-native`
|
|
|
|
|
|
|
|
|
|
You can download the compiled general version directly from the official website: [https://tailchat.msgbyte.com/downloads](https://tailchat.msgbyte.com/downloads), or compile it yourself from the source code
|
|
|
|
|
|
|
|
|
|
This section mainly explains how to compile the mobile version of `Tailchat`.
|
|
|
|
|
|
|
|
|
|
## Prepare the development environment
|
|
|
|
|
|
|
|
|
|
You can see the complete development environment preparation operation at [https://reactnative.dev/docs/environment-setup](https://reactnative.dev/docs/environment-setup), so I won’t go into details here.
|
|
|
|
|
|
|
|
|
|
### Install dependencies
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
cd client/mobile
|
|
|
|
|
yarn
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Environment check
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
yarn doctor
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Prepare environment variables
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
cp.env.example.env
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
In the `.env` file we configure the required environment variables for compilation
|
|
|
|
|
|
|
|
|
|
```ini
|
|
|
|
|
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=
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Certificate signing
|
|
|
|
|
|
|
|
|
|
If you are only using it for testing, you can skip this section and Tailchat will sign it for you using a public test certificate.
|
|
|
|
|
|
|
|
|
|
### Android
|
|
|
|
|
|
|
|
|
|
If you need to use your own certificate for signing, you need to fill in the following:
|
|
|
|
|
|
|
|
|
|
```ini
|
|
|
|
|
TAILCHAT_UPLOAD_STORE_FILE=
|
|
|
|
|
TAILCHAT_UPLOAD_STORE_PASSWORD=
|
|
|
|
|
TAILCHAT_UPLOAD_KEY_ALIAS=
|
|
|
|
|
TAILCHAT_UPLOAD_KEY_PASSWORD=
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Need to fill in: certificate file name, password, alias, alias password
|
|
|
|
|
The certificate file needs to be placed in the `client/mobile/android/app` directory, usually a `*.keystore` file
|
|
|
|
|
|
|
|
|
|
> As for how to generate it, you can use `Android Studio` or `keytool` tool to generate it.
|
|
|
|
|
|
|
|
|
|
### iOS
|
|
|
|
|
|
|
|
|
|
TODO
|
|
|
|
|
|
|
|
|
|
## Push
|
|
|
|
|
|
|
|
|
|
`Tailchat` implements Android multi-vendor message push by integrating personal tweets as a relay
|
|
|
|
|
|
|
|
|
|
You can get all the required configuration in the application configuration of `getui`
|
|
|
|
|
|
|
|
|
|
Among them `GETUI_APPID`, `GETUI_APPKEY`, `GETUI_APPSECRET` are filled in in order
|
|
|
|
|
|
|
|
|
|
Corresponding configuration is required on the server side `GETUI_APPID`, `GETUI_APPKEY`, `GETUI_MASTERSECRET` so that the self-deployed push service can send push messages correctly
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
### Manufacturer Push
|
|
|
|
|
|
|
|
|
|
Manufacturer push can be turned on or off as needed
|
|
|
|
|
|
|
|
|
|
The source code needs to be modified as follows:
|
|
|
|
|
- `manifestPlaceholders` section and `dependencies` section of `client/mobile/android/app/build.gradle`
|
|
|
|
|
- `.env` environment variable configuration
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Compile
|
|
|
|
|
|
|
|
|
|
### Android
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
cd android
|
|
|
|
|
./gradlew assembleRelease
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### iOS
|
|
|
|
|
|
|
|
|
|
iOS compilation needs to be done through `xcode`
|
|
|
|
|
|
|
|
|
|
> Screenshot cannot be taken due to lack of equipment, please follow the public information on the Internet.
|
|
|
|
|
|
|
|
|
|
### FAQ
|
|
|
|
|
|
|
|
|
|
If the following types of errors occur:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
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
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
It may be because your environment variable is missing, you can leave the value empty, but the entry must exist
|
|
|
|
|
|
|
|
|
|
like:
|
|
|
|
|
```ini
|
|
|
|
|
GETUI_APPID=xxxxxxxxxxxx
|
|
|
|
|
GETUI_APPKEY=yyyyyyyyy
|
|
|
|
|
GETUI_APPSECRET=zzzzzzzzzz
|
|
|
|
|
GETUI_HUAWEI_APP_ID=
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
instead of
|
|
|
|
|
|
|
|
|
|
```ini
|
|
|
|
|
GETUI_APPID=xxxxxxxxxxxx
|
|
|
|
|
GETUI_APPKEY=yyyyyyyyy
|
|
|
|
|
GETUI_APPSECRET=zzzzzzzzzz
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### Can I compile it myself and publish it to the app store?
|
|
|
|
|
|
|
|
|
|
Yes, but please modify the application name, package name, icon and other information to prevent conflicts with official applications.
|