1
0
mirror of https://github.com/MGislv/NekoX.git synced 2024-07-02 10:33:36 +00:00

Refind build scripts

This commit is contained in:
世界 2020-07-27 04:49:42 +00:00
parent 5e8de25641
commit 3654e6ad97
No known key found for this signature in database
GPG Key ID: CD109927C34A63C4
16 changed files with 131 additions and 75 deletions

View File

@ -25,8 +25,11 @@ jobs:
java-version: 1.8 java-version: 1.8
- name: Run Gradle Build - name: Run Gradle Build
run: | run: |
export LOCAL_PROPERTIES="${{ secrets.LOCAL_PROPERTIES }}"
sudo bash <<EOF
export LOCAL_PROPERTIES="${{ secrets.LOCAL_PROPERTIES }}" export LOCAL_PROPERTIES="${{ secrets.LOCAL_PROPERTIES }}"
./gradlew assembleFullRelease ./gradlew assembleFullRelease
EOF
echo ::set-env name=APK_FILE::$(find TMessagesProj/build/outputs/apk -name "*arm64-v8a*.apk") echo ::set-env name=APK_FILE::$(find TMessagesProj/build/outputs/apk -name "*arm64-v8a*.apk")
echo ::set-env name=APK_FILE_ARMV7::$(find TMessagesProj/build/outputs/apk -name "*armeabi*.apk") echo ::set-env name=APK_FILE_ARMV7::$(find TMessagesProj/build/outputs/apk -name "*armeabi*.apk")
echo ::set-env name=APK_FILE_X86::$(find TMessagesProj/build/outputs/apk -name "*x86-*.apk") echo ::set-env name=APK_FILE_X86::$(find TMessagesProj/build/outputs/apk -name "*x86-*.apk")
@ -43,6 +46,18 @@ jobs:
to: ${{ secrets.CANARY_CHANNEL }} to: ${{ secrets.CANARY_CHANNEL }}
token: ${{ secrets.TELEGRAM_TOKEN }} token: ${{ secrets.TELEGRAM_TOKEN }}
document: ${{ env.APK_FILE_ARMV7 }} document: ${{ env.APK_FILE_ARMV7 }}
- name: Upload Canary Apk ( x86 )
uses: appleboy/telegram-action@master
with:
to: ${{ secrets.CANARY_CHANNEL }}
token: ${{ secrets.TELEGRAM_TOKEN }}
document: ${{ env.APK_FILE_X86 }}
- name: Upload Canary Apk ( x64 )
uses: appleboy/telegram-action@master
with:
to: ${{ secrets.CANARY_CHANNEL }}
token: ${{ secrets.TELEGRAM_TOKEN }}
document: ${{ env.APK_FILE_X64 }}
nativeBuild: nativeBuild:
name: Native Build name: Native Build
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -70,25 +85,13 @@ jobs:
- name: Build native libraries - name: Build native libraries
run: | run: |
cd TMessagesProj/jni
while : while :
do do
sudo apt-get install -y ninja-build && break sudo apt-get install -y ninja-build && break
sleep 5 sleep 5
done done
export NDK=$ANDROID_HOME/ndk-bundle bash bin/native_libs.sh
export NINJA_PATH=/usr/bin/ninja
export PATH=`echo $ANDROID_HOME/cmake/*/bin`:$PATH
[ -d "ffmpeg/build" ] || ./build_ffmpeg_clang.sh
./patch_ffmpeg.sh
./patch_boringssl.sh
[ -d "boringssl/build" ] || ./build_boringssl.sh
- name: assemble - name: assemble
run: | run: |

View File

@ -73,7 +73,9 @@ We regret that [Nekogram](https://github.com/Nekogram/Nekogram-issue-tracker) is
- Scan the qrcode (any link, can add a proxy). - Scan the qrcode (any link, can add a proxy).
- The ( vemss / vmess1 / ss / ssr / rb ) proxy link in the message can be clicked. - The ( vemss / vmess1 / ss / ssr / rb ) proxy link in the message can be clicked.
- Allow auto disable proxy when VPN is enabled - Allow auto disable proxy when VPN is enabled
- Proxy automatic switcher
- Add stickers without sticker pack - Add stickers without sticker pack
- Allow disable vibration
- Sticker set list backup / restore / share - Sticker set list backup / restore / share
- Full InstantView translation support - Full InstantView translation support
- Translation support for selected text on input and in messages - Translation support for selected text on input and in messages
@ -81,6 +83,7 @@ We regret that [Nekogram](https://github.com/Nekogram/Nekogram-issue-tracker) is
- Dialog sorting is optional "Unread and can be prioritized for reminding" etc. - Dialog sorting is optional "Unread and can be prioritized for reminding" etc.
- Allow to skip "regret within five seconds" - Allow to skip "regret within five seconds"
- Unblock all users support - Unblock all users support
- OpenKaychain client ( sign / verify / decrypt / import )
- Google Cloud Translate / Yandex.Translate support - Google Cloud Translate / Yandex.Translate support
- Custom cache directory (supports external storage) - Custom cache directory (supports external storage)
- Custom AppId and Hash (optional NekoX / Andorid / Android X or Manual input) - Custom AppId and Hash (optional NekoX / Andorid / Android X or Manual input)
@ -117,7 +120,7 @@ The default debug key is used, and placing yours is not needed.
The difference between release and other build types is that it adds fcm and firebase crash analysis, if you don't like them, use releaseNoGcm. The difference between release and other build types is that it adds fcm and firebase crash analysis, if you don't like them, use releaseNoGcm.
To compile the release version, please place your keysotre at TMessageProj/release.jks, and fill in KEYSTORE_PASS, ALIAS_NAME, ALIAS_PASS in local.properties, environment variables are also recommended To compile the release version, please place your keysotre at TMessageProj/release.keystore, and fill in KEYSTORE_PASS, ALIAS_NAME, ALIAS_PASS in local.properties, environment variables are also recommended
If you don't use NekoX's APP_ID and APP_HASH, you need to register a physical firebase app and replace google-services.json to ensure fcm works If you don't use NekoX's APP_ID and APP_HASH, you need to register a physical firebase app and replace google-services.json to ensure fcm works
@ -127,14 +130,19 @@ If you don't use NekoX's APP_ID and APP_HASH, you need to register a physical fi
OK, a version without firebase cloud messaging and precompiled native libraries, maybe this makes you feel more free, or your phone does not have Google services. OK, a version without firebase cloud messaging and precompiled native libraries, maybe this makes you feel more free, or your phone does not have Google services.
To compile the foss version, please refer to [build script](./update_jni.sh). To compile the foss version, please refer to [scripts](./bin).
### Build Variants ### Build Variants
Available variant list: Available variant list:
`Full` `Full`
`Mini` ( without ss/ssr/v2ray ) `Mini` ( without ss/ssr/v2ray proxies )
`AppleEmoji`
`NotoEmoji`
`FacebookEmoji`
`NoEmoji`
## Localization ## Localization

View File

@ -50,7 +50,7 @@ configurations {
def okHttpVersion = '4.8.0' def okHttpVersion = '4.8.0'
def fcmVersion = '20.2.3' def fcmVersion = '20.2.3'
def crashlyticsVersion = '17.1.1' def crashlyticsVersion = '17.1.1'
def playCoreVersion = '1.7.3' def playCoreVersion = '1.8.0'
buildscript { buildscript {
@ -61,7 +61,7 @@ buildscript {
} }
dependencies { dependencies {
classpath 'cn.hutool:hutool-all:5.3.9' classpath 'cn.hutool:hutool-all:5.3.10'
} }
} }
@ -267,7 +267,6 @@ android {
debuggable true debuggable true
jniDebuggable true jniDebuggable true
multiDexEnabled true multiDexEnabled true
signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
} }
@ -278,16 +277,15 @@ android {
minifyEnabled true minifyEnabled true
shrinkResources true shrinkResources true
matchingFallbacks = ['debug'] matchingFallbacks = ['debug']
signingConfig signingConfigs.release
} }
release { release {
initWith releaseNoGcm initWith releaseNoGcm
matchingFallbacks = ['debug']
} }
foss { foss {
initWith release initWith release
matchingFallbacks = ['debug']
} }
} }

View File

@ -1,4 +1,3 @@
APP_PLATFORM := android-16 APP_PLATFORM := android-16
NDK_TOOLCHAIN_VERSION := clang NDK_TOOLCHAIN_VERSION := clang
APP_SHORT_COMMANDS := true APP_STL := c++_static
APP_STL := c++_static

@ -1 +1 @@
Subproject commit d3b963cc41824a3c5b2758ac896fb23e20a87875 Subproject commit 799fc4d732fc2515911b75fe816da2bbd20221d9

View File

@ -1,3 +1,3 @@
# Pre-compiled binary libraries. # Pre-compiled binary libraries.
About compilation, please refer to [here](https://github.com/NekoX-Dev/NekoX/blob/master/update_jni.sh) About compilation, please refer to [scripts](https://github.com/NekoX-Dev/NekoX/blob/master/bin).

View File

@ -640,9 +640,9 @@ public class SharedConfig {
} }
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { if (Build.VERSION.SDK_INT < 23) {
throw new RuntimeException(LocaleController.getString("MinApi21Required", R.string.MinApi21Required)); throw new RuntimeException(LocaleController.getString("MinApi23Required", R.string.MinApi23Required));
} }

View File

@ -665,8 +665,10 @@ public class ProxyListActivity extends BaseFragment implements NotificationCente
if (!BuildVars.isMini) { if (!BuildVars.isMini) {
addItem.addSubItem(menu_add_input_vmess, LocaleController.getString("AddProxyVmess", R.string.AddProxyVmess)).setOnClickListener((v) -> presentFragment(new VmessSettingsActivity())); addItem.addSubItem(menu_add_input_vmess, LocaleController.getString("AddProxyVmess", R.string.AddProxyVmess)).setOnClickListener((v) -> presentFragment(new VmessSettingsActivity()));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (Build.VERSION.SDK_INT > 23) {
addItem.addSubItem(menu_add_input_ss, LocaleController.getString("AddProxySS", R.string.AddProxySS)).setOnClickListener((v) -> presentFragment(new ShadowsocksSettingsActivity())); addItem.addSubItem(menu_add_input_ss, LocaleController.getString("AddProxySS", R.string.AddProxySS)).setOnClickListener((v) -> presentFragment(new ShadowsocksSettingsActivity()));
}
if (Build.VERSION.SDK_INT >= 21) {
addItem.addSubItem(menu_add_input_ssr, LocaleController.getString("AddProxySSR", R.string.AddProxySSR)).setOnClickListener((v) -> presentFragment(new ShadowsocksRSettingsActivity())); addItem.addSubItem(menu_add_input_ssr, LocaleController.getString("AddProxySSR", R.string.AddProxySSR)).setOnClickListener((v) -> presentFragment(new ShadowsocksRSettingsActivity()));
} }
// addItem.addSubItem(menu_add_input_rb, LocaleController.getString("AddProxyRB", R.string.AddProxyRB)).setOnClickListener((v) -> presentFragment(new RelayBatonSettingsActivity())); // addItem.addSubItem(menu_add_input_rb, LocaleController.getString("AddProxyRB", R.string.AddProxyRB)).setOnClickListener((v) -> presentFragment(new RelayBatonSettingsActivity()));

View File

@ -1,3 +1,3 @@
# Pre-compiled binary libraries. # Pre-compiled binary libraries.
About compilation, please refer to [here](https://github.com/NekoX-Dev/NekoX/blob/master/update_jni.sh) About compilation, please refer to [scripts](https://github.com/NekoX-Dev/NekoX/blob/master/bin).

View File

@ -201,6 +201,8 @@
<string name="DeleteUnavailableServerConfirm">Are you sure you want to **delete unavailable servers**?</string> <string name="DeleteUnavailableServerConfirm">Are you sure you want to **delete unavailable servers**?</string>
<string name="MinApi21Required">Sorry, you need at least Android 5 (API21).</string> <string name="MinApi21Required">Sorry, you need at least Android 5 (API21).</string>
<string name="MinApi23Required">Sorry, you need at least Android 6 (API23).</string>
<string name="MiniVersionAlert">Sorry, mini version not support this type of proxy, please switch version in settings.</string> <string name="MiniVersionAlert">Sorry, mini version not support this type of proxy, please switch version in settings.</string>
<string name="ImportProxyFromClipboard">Import From Clipboard</string> <string name="ImportProxyFromClipboard">Import From Clipboard</string>

View File

@ -1,48 +1,83 @@
#!/bin/bash #!/bin/bash
rm -f TMessagesProj/libs/*.aar if [ ! -x "$(command -v go)" ]; then
./gradlew ss-rust:assembleRelease # if [ ! -x "$(command -v gvm)" ]; then
#
# apt install -y bison
#
# bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
#
# source "$HOME/.bashrc"
#
# fi
#
# gvm install go1.14 -B
# gvm use go1.14 --default
cp ss-rust/build/outputs/aar/* TMessagesProj/libs echo "install golang please!"
./gradlew ssr-libev:assembleRelease exit 1
cp ssr-libev/build/outputs/aar/* TMessagesProj/libs fi
cd TMessagesProj/libs if [ ! -x "$(command -v rustc)" ]; then
go get -v golang.org/x/mobile/cmd/... # curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
v2rayCore="$(go env GOPATH)/src/v2ray.com/core" # rustup target install armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android
rm -rf "$v2rayCore"
mkdir -p "$v2rayCore"
git clone https://github.com/v2fly/v2ray-core.git "$v2rayCore"
go get -d github.com/2dust/AndroidLibV2rayLite
gomobile init echo "install rust please!"
gomobile bind -v -ldflags='-s -w' github.com/2dust/AndroidLibV2rayLite
rm *-sources.jar
cd ../.. exit 1
./gradlew TMessagesProj:externalNativeBuildFullFoss fi
OUT=TMessagesProj/build/intermediates/ndkBuild/fullFoss/obj/local if [ ! -f "$ANDROID_HOME/ndk-bundle/source.properties" ]; then
DIR=TMessagesProj/src/main/libs
rm -rf $DIR/armeabi-v7a export ANDROID_NDK_HOME=$ANDROID_HOME/ndk/21.3.6528147
mkdir -p $DIR/armeabi-v7a
cp $OUT/armeabi-v7a/*.so $DIR/armeabi-v7a
rm -rf $DIR/arm64-v8a fi
mkdir -p $DIR/arm64-v8a
cp $OUT/arm64-v8a/*.so $DIR/arm64-v8a
rm -rf $DIR/x86
mkdir -p $DIR/x86
cp $OUT/x86/*.so $DIR/x86
rm -rf $DIR/x86_64 rm -rf TMessagesProj/libs/*.aar
mkdir -p $DIR/x86_64 ./gradlew ss-rust:assembleRelease --stacktrace &&
cp $OUT/x86_64/*.so $DIR/x86_64 cp ss-rust/build/outputs/aar/* TMessagesProj/libs &&
./gradlew ssr-libev:assembleRelease &&
cp ssr-libev/build/outputs/aar/* TMessagesProj/libs &&
cd TMessagesProj/libs &&
go get -v golang.org/x/mobile/cmd/... &&
v2rayCore="$(go env GOPATH)/src/v2ray.com/core" &&
rm -rf "$v2rayCore" &&
mkdir -p "$v2rayCore" &&
git clone https://github.com/v2fly/v2ray-core.git "$v2rayCore" &&
go get -d github.com/2dust/AndroidLibV2rayLite &&
gomobile init &&
gomobile bind -v -ldflags='-s -w' github.com/2dust/AndroidLibV2rayLite &&
rm *-sources.jar &&
cd ../.. &&
./gradlew TMessagesProj:externalNativeBuildFullFoss &&
OUT=TMessagesProj/build/intermediates/ndkBuild/fullFoss/obj/local &&
DIR=TMessagesProj/src/main/libs &&
rm -rf $DIR/armeabi-v7a &&
mkdir -p $DIR/armeabi-v7a &&
cp $OUT/armeabi-v7a/*.so $DIR/armeabi-v7a &&
rm -rf $DIR/arm64-v8a &&
mkdir -p $DIR/arm64-v8a &&
cp $OUT/arm64-v8a/*.so $DIR/arm64-v8a &&
rm -rf $DIR/x86 &&
mkdir -p $DIR/x86 &&
cp $OUT/x86/*.so $DIR/x86 &&
rm -rf $DIR/x86_64 &&
mkdir -p $DIR/x86_64 &&
cp $OUT/x86_64/*.so $DIR/x86_64

View File

@ -21,6 +21,7 @@ if [ ! -x "$(command -v go)" ]; then
fi fi
if [ ! -x "$(command -v ninja)" ]; then if [ ! -x "$(command -v ninja)" ]; then
# apt install -y ninja-build # apt install -y ninja-build
@ -31,11 +32,11 @@ if [ ! -x "$(command -v ninja)" ]; then
fi fi
if [ ! -x "$(command -v clang)" ]; then if [ ! -x "$(command -v cmake)" ]; then
# apt install -y clang # apt install -y cmake
echo "install clang please!" echo "install cmake please!"
exit 1 exit 1
@ -59,12 +60,18 @@ cd TMessagesProj/jni || exit 1
git submodule update --init --recursive git submodule update --init --recursive
[ -d "ffmpeg/build" ] || ./build_ffmpeg_clang.sh cd ffmpeg
git reset --hard
rm -rf ffmpeg/toolchain-android git clean -fdx
cd ..
./build_ffmpeg_clang.sh
./patch_ffmpeg.sh ./patch_ffmpeg.sh
./patch_boringssl.sh cd boringssl
git reset --hard
git clean -fdx
cd ..
[ -d "boringssl/build" ] || ./build_boringssl.sh ./patch_boringssl.sh
./build_boringssl.sh

View File

@ -1,3 +1,3 @@
#!/bin/bash #!/bin/bash
./gradlew TMessagesProj:publishFullBlobEmojiRelease ./gradlew TMessagesProj:publishFullRelease

View File

@ -1,7 +1,7 @@
apply plugin: 'com.android.library' apply plugin: 'com.android.library'
android { android {
compileSdkVersion 28 compileSdkVersion 30
defaultConfig { defaultConfig {
versionCode 9 versionCode 9
@ -13,4 +13,5 @@ android {
lintOptions { lintOptions {
abortOnError false abortOnError false
} }
buildToolsVersion '30.0.1'
} }

View File

@ -9,11 +9,12 @@ android {
ndkVersion = rootProject.extra.get("ndkVersion").toString() ndkVersion = rootProject.extra.get("ndkVersion").toString()
compileSdkVersion(29) compileSdkVersion(30)
defaultConfig { defaultConfig {
minSdkVersion(21) minSdkVersion(23)
targetSdkVersion(28) targetSdkVersion(30)
} }
buildToolsVersion = "30.0.1"
} }

View File

@ -3,8 +3,8 @@ plugins {
} }
android { android {
compileSdkVersion 29 compileSdkVersion 30
buildToolsVersion "29.0.3" buildToolsVersion '30.0.1'
ndkVersion rootProject.ext.ndkVersion ndkVersion rootProject.ext.ndkVersion
defaultConfig { defaultConfig {