Compare commits
No commits in common. "develop_sky" and "v1.0.80" have entirely different histories.
develop_sk
...
v1.0.80
@ -1,251 +0,0 @@
|
||||
name: Flutter CI - Basic Setup
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master_sky
|
||||
pull_request:
|
||||
branches:
|
||||
- master_sky
|
||||
|
||||
jobs:
|
||||
# 基础设置任务:检出代码、提取版本号
|
||||
basic-setup:
|
||||
name: 🔧 Basic Setup
|
||||
runs-on: sky
|
||||
steps:
|
||||
# 1. 检出代码
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
# 2. 提取版本号
|
||||
- name: Extract Version
|
||||
id: version
|
||||
run: |
|
||||
# 获取最新的tag(按版本号排序,匹配vX.X.X_sky格式)
|
||||
LATEST_TAG=$(git tag --list "v*.*.*_sky" --sort=-version:refname | head -1)
|
||||
|
||||
# 如果没有找到tag,使用默认值
|
||||
if [ -z "$LATEST_TAG" ]; then
|
||||
LATEST_TAG="v1.0.0_sky"
|
||||
echo "📌 No tags found, using default: $LATEST_TAG"
|
||||
else
|
||||
echo "📌 Latest tag found: $LATEST_TAG"
|
||||
fi
|
||||
|
||||
# 提取基础版本号(去除_sky后缀)
|
||||
BASE_VERSION=$(echo "$LATEST_TAG" | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+' | head -1)
|
||||
[ -z "$BASE_VERSION" ] && BASE_VERSION="v1.0.0"
|
||||
echo "📌 Base version: $BASE_VERSION"
|
||||
|
||||
# 解析版本号各部分
|
||||
MAJOR=$(echo $BASE_VERSION | cut -d'.' -f1 | sed 's/v//')
|
||||
MINOR=$(echo $BASE_VERSION | cut -d'.' -f2)
|
||||
PATCH=$(echo $BASE_VERSION | cut -d'.' -f3)
|
||||
echo "📌 Version components: Major=$MAJOR, Minor=$MINOR, Patch=$PATCH"
|
||||
|
||||
# 计算下一个版本号
|
||||
echo "📊 Calculating next version..."
|
||||
|
||||
# 获取当前提交与最新tag之间的所有提交消息
|
||||
COMMIT_MESSAGES=$(git log --oneline --format=%s $LATEST_TAG..HEAD 2>/dev/null || echo "")
|
||||
|
||||
# 统计需要递增的提交次数(过滤重复的提交消息)
|
||||
INCREMENT_COUNT=0
|
||||
if [ -n "$COMMIT_MESSAGES" ]; then
|
||||
# 使用awk过滤重复的提交消息并计数
|
||||
UNIQUE_MESSAGES=$(echo "$COMMIT_MESSAGES" | awk '!seen[$0]++')
|
||||
INCREMENT_COUNT=$(echo "$UNIQUE_MESSAGES" | wc -l)
|
||||
echo "📝 Found $INCREMENT_COUNT unique commit(s) since last tag"
|
||||
else
|
||||
echo "📝 No new commits since last tag"
|
||||
fi
|
||||
|
||||
# 计算新的版本号
|
||||
NEW_PATCH=$((PATCH + INCREMENT_COUNT))
|
||||
NEW_MINOR=$MINOR
|
||||
NEW_MAJOR=$MAJOR
|
||||
|
||||
# 处理版本号进位逻辑
|
||||
if [ $NEW_PATCH -ge 1000 ]; then
|
||||
NEW_MINOR=$((NEW_MINOR + NEW_PATCH / 1000))
|
||||
NEW_PATCH=$((NEW_PATCH % 1000))
|
||||
echo "🔄 Patch version overflow, incrementing minor version"
|
||||
fi
|
||||
|
||||
if [ $NEW_MINOR -ge 10 ]; then
|
||||
NEW_MAJOR=$((NEW_MAJOR + NEW_MINOR / 10))
|
||||
NEW_MINOR=$((NEW_MINOR % 10))
|
||||
echo "🔄 Minor version overflow, incrementing major version"
|
||||
fi
|
||||
|
||||
# 生成下一个版本号
|
||||
NEXT_VERSION="v${NEW_MAJOR}.${NEW_MINOR}.${NEW_PATCH}"
|
||||
NEXT_TAG="${NEXT_VERSION}_sky"
|
||||
|
||||
echo "🚀 Next version: $NEXT_VERSION"
|
||||
echo "🏷️ Next tag: $NEXT_TAG"
|
||||
echo "📈 Increment count: $INCREMENT_COUNT"
|
||||
|
||||
# 设置输出变量供后续任务使用(Gitea Actions格式)
|
||||
echo "NEXT_VERSION=$NEXT_VERSION" >> $GITEA_OUTPUT
|
||||
echo "NEXT_TAG=$NEXT_TAG" >> $GITEA_OUTPUT
|
||||
echo "INCREMENT_COUNT=$INCREMENT_COUNT" >> $GITEA_OUTPUT
|
||||
|
||||
# 输出版本信息
|
||||
echo "✅ Version extraction completed"
|
||||
# 5. 任务完成通知
|
||||
- name: Task Completion
|
||||
run: |
|
||||
echo "🎉 Basic CI setup completed successfully!"
|
||||
echo ""
|
||||
echo "📋 Tasks executed:"
|
||||
echo " ✅ Code checkout"
|
||||
echo " ✅ Version extraction"
|
||||
echo ""
|
||||
echo "🚀 Next steps: Building Flutter artifacts..."
|
||||
|
||||
# 构建Flutter制品任务
|
||||
build-artifacts:
|
||||
name: 🏗️ Build Flutter Artifacts
|
||||
runs-on: sky
|
||||
needs: basic-setup
|
||||
steps:
|
||||
# 1. 检出代码
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
# 4. 构建APK文件
|
||||
- name: Build APK
|
||||
run: |
|
||||
echo "🏗️ Building APK artifact..."
|
||||
|
||||
# 生成当前时间作为build-number(格式:YYYYMMDDHH)
|
||||
BUILD_NUMBER=$(date +%Y%m%d%H)
|
||||
echo "📅 Build number: $BUILD_NUMBER"
|
||||
|
||||
# 获取版本信息(从basic-setup任务传递)
|
||||
echo "🔍 Getting version info from basic-setup job..."
|
||||
|
||||
# 设置默认版本号,如果环境变量为空
|
||||
if [ -z "${{ needs.basic-setup.outputs.NEXT_VERSION }}" ]; then
|
||||
VERSION_FOR_FILENAME="1-0-0"
|
||||
echo "⚠️ Version not found, using default: $VERSION_FOR_FILENAME"
|
||||
else
|
||||
# 格式化版本号用于文件名
|
||||
VERSION_FOR_FILENAME=$(echo "${{ needs.basic-setup.outputs.NEXT_VERSION }}" | sed 's/v//g' | sed 's/\./-/g')
|
||||
echo "✅ Version found: $VERSION_FOR_FILENAME"
|
||||
fi
|
||||
|
||||
# 设置APK文件名
|
||||
APK_FILENAME="sky-star-lock-release-$VERSION_FOR_FILENAME.apk"
|
||||
echo "📁 APK filename: $APK_FILENAME"
|
||||
|
||||
# 构建APK,使用新的构建参数
|
||||
flutter build apk --no-tree-shake-icons --release --flavor sky -t lib/main_sky_full.dart --build-number=$BUILD_NUMBER --build-name="sky-star-lock-release-$VERSION_FOR_FILENAME.apk"
|
||||
|
||||
# 重命名APK文件
|
||||
mv build/app/outputs/flutter-apk/app-sky-release.apk "$APK_FILENAME"
|
||||
|
||||
echo "✅ APK build completed: $APK_FILENAME"
|
||||
|
||||
# 5. 构建AAB文件
|
||||
- name: Build AAB
|
||||
run: |
|
||||
echo "🏗️ Building AAB artifact..."
|
||||
|
||||
# 生成当前时间作为build-number(格式:YYYYMMDDHH)
|
||||
BUILD_NUMBER=$(date +%Y%m%d%H)
|
||||
echo "📅 Build number: $BUILD_NUMBER"
|
||||
|
||||
# 获取版本信息(从basic-setup任务传递)
|
||||
echo "🔍 Getting version info from basic-setup job..."
|
||||
|
||||
# 设置默认版本号,如果环境变量为空
|
||||
if [ -z "${{ needs.basic-setup.outputs.NEXT_VERSION }}" ]; then
|
||||
VERSION_FOR_FILENAME="1-0-0"
|
||||
echo "⚠️ Version not found, using default: $VERSION_FOR_FILENAME"
|
||||
else
|
||||
# 格式化版本号用于文件名
|
||||
VERSION_FOR_FILENAME=$(echo "${{ needs.basic-setup.outputs.NEXT_VERSION }}" | sed 's/v//g' | sed 's/\./-/g')
|
||||
echo "✅ Version found: $VERSION_FOR_FILENAME"
|
||||
fi
|
||||
|
||||
# 设置AAB文件名
|
||||
AAB_FILENAME="sky-star-lock-release-$VERSION_FOR_FILENAME.aab"
|
||||
echo "📁 AAB filename: $AAB_FILENAME"
|
||||
|
||||
# 构建AAB,使用新的构建参数
|
||||
flutter build appbundle --no-tree-shake-icons --release --flavor sky -t lib/main_sky_full.dart --build-number=$BUILD_NUMBER --build-name="sky-star-lock-release-$VERSION_FOR_FILENAME.aab"
|
||||
|
||||
# 重命名AAB文件
|
||||
mv build/app/outputs/bundle/skyRelease/app-sky-release.aab "$AAB_FILENAME"
|
||||
|
||||
echo "✅ AAB build completed: $AAB_FILENAME"
|
||||
|
||||
# 6. 构建iOS IPA文件(如果支持iOS构建)
|
||||
- name: Build iOS IPA
|
||||
if: runner.os == 'macos'
|
||||
run: |
|
||||
echo "🏗️ Building iOS IPA artifact..."
|
||||
|
||||
# 生成当前时间作为build-number(格式:YYYYMMDDHH)
|
||||
BUILD_NUMBER=$(date +%Y%m%d%H)
|
||||
echo "📅 Build number: $BUILD_NUMBER"
|
||||
|
||||
# 获取版本信息(从basic-setup任务传递)
|
||||
echo "🔍 Getting version info from basic-setup job..."
|
||||
|
||||
# 设置默认版本号,如果环境变量为空
|
||||
if [ -z "${{ needs.basic-setup.outputs.NEXT_VERSION }}" ]; then
|
||||
VERSION_FOR_FILENAME="1-0-0"
|
||||
echo "⚠️ Version not found, using default: $VERSION_FOR_FILENAME"
|
||||
else
|
||||
# 格式化版本号用于文件名
|
||||
VERSION_FOR_FILENAME=$(echo "${{ needs.basic-setup.outputs.NEXT_VERSION }}" | sed 's/v//g' | sed 's/\./-/g')
|
||||
echo "✅ Version found: $VERSION_FOR_FILENAME"
|
||||
fi
|
||||
|
||||
# 设置IPA文件名
|
||||
IPA_FILENAME="sky-star-lock-release-$VERSION_FOR_FILENAME.ipa"
|
||||
echo "📁 IPA filename: $IPA_FILENAME"
|
||||
|
||||
# 配置iOS自动签名(CI环境使用自动签名)
|
||||
echo "🔧 Configuring iOS automatic code signing for CI environment..."
|
||||
|
||||
# 构建iOS IPA,使用自动签名模式
|
||||
flutter build ipa --no-tree-shake-icons --release --flavor sky -t lib/main_sky_full.dart --build-number=$BUILD_NUMBER --build-name="sky-star-lock-release-$VERSION_FOR_FILENAME.ipa" --codesign
|
||||
|
||||
# 重命名IPA文件
|
||||
mv build/ios/ipa/*.ipa "$IPA_FILENAME"
|
||||
|
||||
echo "✅ iOS IPA build completed: $IPA_FILENAME"
|
||||
|
||||
# 7. 上传制品
|
||||
- name: Upload Artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: flutter-artifacts-release
|
||||
path: |
|
||||
sky-star-lock-release-*.apk
|
||||
sky-star-lock-release-*.aab
|
||||
sky-star-lock-release-*.ipa
|
||||
retention-days: 30
|
||||
|
||||
# 8. 构建完成通知
|
||||
- name: Build Completion
|
||||
run: |
|
||||
echo "🎉 Flutter artifacts build completed successfully!"
|
||||
echo ""
|
||||
echo "📦 Artifacts generated:"
|
||||
echo " ✅ APK: sky-star-lock-release-*.apk"
|
||||
echo " ✅ AAB: sky-star-lock-release-*.aab"
|
||||
if [ "${{ runner.os }}" == "macos" ]; then
|
||||
echo " ✅ IPA: sky-star-lock-release-*.ipa"
|
||||
fi
|
||||
echo ""
|
||||
echo "🏷️ Version: ${{ needs.basic-setup.outputs.NEXT_VERSION }}"
|
||||
echo "📁 Files available in artifacts section"
|
||||
134
.gitlab-ci.yml
@ -1,10 +1,9 @@
|
||||
stages:
|
||||
- test
|
||||
- generate_tag_or_version
|
||||
- generate_tag
|
||||
- build-artifacts
|
||||
- release-artifacts
|
||||
- notification
|
||||
- clean-up
|
||||
|
||||
variables:
|
||||
LC_ALL: "en_US.UTF-8"
|
||||
@ -16,37 +15,17 @@ variables:
|
||||
- macos
|
||||
- flutter
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == "develop_sky"
|
||||
- if: $CI_COMMIT_BRANCH == "release_sky"
|
||||
- if: $CI_COMMIT_BRANCH == "develop"
|
||||
- if: $CI_COMMIT_BRANCH == "release"
|
||||
- if: $CI_COMMIT_BRANCH =~ /feat_[a-zA-Z]+/
|
||||
- if: $CI_COMMIT_BRANCH == "canary_release_sky"
|
||||
- if: $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z]+\.[0-9]+)?(_sky)?$/
|
||||
- if: $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z]+\.[0-9]+)?$/
|
||||
|
||||
.notify_rule:
|
||||
.tag_rule:
|
||||
tags:
|
||||
- macos
|
||||
- flutter
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == "develop_sky"
|
||||
- if: $CI_COMMIT_BRANCH == "release_sky"
|
||||
- if: $CI_COMMIT_BRANCH =~ /feat_[a-zA-Z]+/
|
||||
|
||||
.generate_tag_rule:
|
||||
tags:
|
||||
- macos
|
||||
- flutter
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == "master_sky"
|
||||
|
||||
.generate_next_version_rule:
|
||||
tags:
|
||||
- macos
|
||||
- flutter
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == "develop_sky"
|
||||
- if: $CI_COMMIT_BRANCH == "release_sky"
|
||||
- if: $CI_COMMIT_BRANCH == "canary_release_sky"
|
||||
- if: $CI_COMMIT_BRANCH =~ /feat_[a-zA-Z]+/
|
||||
- if: $CI_COMMIT_BRANCH == "master"
|
||||
|
||||
.print_env:
|
||||
stage: test
|
||||
@ -60,43 +39,15 @@ variables:
|
||||
.setup_fastlane_android:
|
||||
extends: .build_rule
|
||||
before_script:
|
||||
- export PUB_HOSTED_URL=https://pub.flutter-io.cn
|
||||
- export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
|
||||
- ls -li
|
||||
- export NEXT_VERSION="$(cat app_new.version)"
|
||||
# - flutter pub get
|
||||
- export PATH="/opt/homebrew/bin:$PATH"
|
||||
- eval "$(rbenv init -)"
|
||||
- rbenv global 2.6.10 # 你实际用的 Ruby 版本
|
||||
- ruby -v
|
||||
- which ruby
|
||||
- gem env
|
||||
- bundle config mirror.https://rubygems.org https://mirrors.aliyun.com/rubygems/
|
||||
- bundle install --gemfile android/Gemfile --path vendor/bundle_android --quiet
|
||||
- flutter clean
|
||||
cache:
|
||||
paths:
|
||||
- app_new.version
|
||||
- flutter pub get
|
||||
- bundle install --gemfile android/Gemfile --quiet
|
||||
|
||||
|
||||
.setup_fastlane_ios:
|
||||
extends: .build_rule
|
||||
before_script:
|
||||
- export PUB_HOSTED_URL=https://pub.flutter-io.cn
|
||||
- export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
|
||||
- ls -li
|
||||
- export NEXT_VERSION="$(cat app_new.version)"
|
||||
- export PATH="/opt/homebrew/bin:$PATH"
|
||||
- eval "$(rbenv init -)"
|
||||
- rbenv global 2.6.10 # 你实际用的 Ruby 版本
|
||||
- ruby -v
|
||||
- which ruby
|
||||
- gem env
|
||||
- bundle config mirror.https://rubygems.org https://mirrors.aliyun.com/rubygems/
|
||||
- bundle install --gemfile ios/Gemfile --path vendor/bundle_ios --quiet
|
||||
- flutter clean
|
||||
cache:
|
||||
paths:
|
||||
- app_new.version
|
||||
- flutter pub get
|
||||
- bundle install --gemfile ios/Gemfile --quiet
|
||||
|
||||
test_lint_check:
|
||||
stage: test
|
||||
@ -107,26 +58,15 @@ test_lint_check:
|
||||
- macos
|
||||
- flutter
|
||||
|
||||
generate_git_tag:
|
||||
stage: generate_tag_or_version
|
||||
extends: .generate_tag_rule
|
||||
git_tag:
|
||||
stage: generate_tag
|
||||
extends: .tag_rule
|
||||
before_script:
|
||||
- bash pre_build.sh sky
|
||||
- project_url=$(echo $CI_PROJECT_URL | sed 's/http:\/\///')
|
||||
- echo "project_url:$project_url"
|
||||
- echo "CI_SERVER_FQDN:$CI_SERVER_FQDN/CI_PROJECT_ROOT_NAMESPACE:$CI_PROJECT_ROOT_NAMESPACE/CI_PROJECT_NAME:$CI_PROJECT_NAME"
|
||||
- git remote set-url origin git@$CI_SERVER_FQDN:$CI_PROJECT_ROOT_NAMESPACE/$CI_PROJECT_NAME.git
|
||||
- git remote set-url origin http://gitlab-ci-token:${GITLAB_ACCESS_TOKEN}@$project_url.git
|
||||
script:
|
||||
- bash tag_generator.sh generate_tag
|
||||
|
||||
generate_next_version:
|
||||
stage: generate_tag_or_version
|
||||
extends: .generate_next_version_rule
|
||||
script:
|
||||
- bash tag_generator.sh generate_version
|
||||
cache:
|
||||
paths:
|
||||
- app_new.version
|
||||
- bash tag_generator.sh
|
||||
|
||||
build_android:
|
||||
stage: build-artifacts
|
||||
@ -167,10 +107,16 @@ create-release:
|
||||
- export StarLock_VERSION=${CI_COMMIT_TAG#*-}
|
||||
- echo "Uploading StarLock-${StarLock_VERSION} packages to
|
||||
${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/StarLock-${StarLock_VERSION}-*"
|
||||
- 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-xhj-release-${CI_COMMIT_TAG}.apk
|
||||
"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-xhj-release-${CI_COMMIT_TAG}.apk"'
|
||||
- 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-xhj-release-${CI_COMMIT_TAG}.aab
|
||||
"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-xhj-release-${CI_COMMIT_TAG}.aab"'
|
||||
- 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-sky-release-${CI_COMMIT_TAG}.apk
|
||||
"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-sky-release-${CI_COMMIT_TAG}.apk"'
|
||||
- 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-sky-release-${CI_COMMIT_TAG}.aab
|
||||
"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-sky-release-${CI_COMMIT_TAG}.aab"'
|
||||
- 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-ipa/starlock-xhj-release-${CI_COMMIT_TAG}.ipa
|
||||
"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-xhj-release-${CI_COMMIT_TAG}.ipa"'
|
||||
- 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-ipa/starlock-sky-release-${CI_COMMIT_TAG}.ipa
|
||||
"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-sky-release-${CI_COMMIT_TAG}.ipa"'
|
||||
release:
|
||||
@ -180,39 +126,21 @@ create-release:
|
||||
ref: '$CI_COMMIT_TAG'
|
||||
assets:
|
||||
links:
|
||||
- name: 'xhj apk binary package'
|
||||
url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${CI_COMMIT_TAG}/starlock-xhj-release-${CI_COMMIT_TAG}.apk'
|
||||
link_type: 'package'
|
||||
- name: 'xhj bundle binary package'
|
||||
url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${CI_COMMIT_TAG}/starlock-xhj-release-${CI_COMMIT_TAG}.aab'
|
||||
link_type: 'package'
|
||||
- name: 'sky apk binary package'
|
||||
url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${CI_COMMIT_TAG}/starlock-sky-release-${CI_COMMIT_TAG}.apk'
|
||||
link_type: 'package'
|
||||
- name: 'sky bundle binary package'
|
||||
url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${CI_COMMIT_TAG}/starlock-sky-release-${CI_COMMIT_TAG}.aab'
|
||||
link_type: 'package'
|
||||
- name: 'xhj ipa binary package'
|
||||
url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${CI_COMMIT_TAG}/starlock-xhj-release-${CI_COMMIT_TAG}.ipa'
|
||||
link_type: 'package'
|
||||
- name: 'sky ipa binary package'
|
||||
url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${CI_COMMIT_TAG}/starlock-sky-release-${CI_COMMIT_TAG}.ipa'
|
||||
link_type: 'package'
|
||||
|
||||
notify_success:
|
||||
stage: notification
|
||||
extends: .notify_rule
|
||||
before_script:
|
||||
- printenv | while IFS='=' read -r key value; do echo "$key=$value"; done
|
||||
script:
|
||||
- bash notify.sh success
|
||||
allow_failure: true
|
||||
when: on_success
|
||||
|
||||
notify_failure:
|
||||
stage: notification
|
||||
extends: .notify_rule
|
||||
before_script:
|
||||
- printenv | while IFS='=' read -r key value; do echo "$key=$value"; done
|
||||
script:
|
||||
- bash notify.sh failure
|
||||
allow_failure: true
|
||||
when: on_failure
|
||||
|
||||
clean_up:
|
||||
stage: clean-up
|
||||
extends: .build_rule
|
||||
script:
|
||||
- git reset --hard
|
||||
when: always
|
||||
15
README.md
@ -1,5 +1,5 @@
|
||||
# 星锁APP
|
||||
测试ci
|
||||
|
||||
星云项目组旗下的智能锁应用,其中锁相关数据接入星云平台,业务数据接入星锁自有后台。
|
||||
|
||||
基于Flutter技术架构,支持Android和iOS平台。
|
||||
@ -61,7 +61,7 @@ keytool -list -v -keystore android/app/sky.jks
|
||||
```
|
||||
|
||||
输入密码(在android/app/build.gradle:38可以看到)
|
||||
测试ci
|
||||
|
||||
一般需要的是:证书指纹-SHA1 看起来像 95:6B:***********(共59个字符)
|
||||
|
||||
## 编译
|
||||
@ -171,14 +171,3 @@ java -jar android/bundletool.jar build-apks --bundle=build/app/outputs/bundle/sk
|
||||
```bash
|
||||
java -jar android/bundletool.jar install-apks --apks=build/app/outputs/bundle/skyRelease/app-sky-release.aab.apks
|
||||
```
|
||||
|
||||
## Jpush相关
|
||||
|
||||
极光推送,目前app这边只依赖极光的透传能力,推送能力通过截取极光拿到的各个厂商的推送token,然后将推送token上报到自己业务服务器直接调用各个厂商推送通道进行消息推送,所以对极光的flutter sdk进行了私有化定制改造,改造点如下:
|
||||
|
||||
* Android,iOS平台原生代码中截取jpush获取到的厂商推送token,将token回传到flutter业务应用层
|
||||
* Android通过Jpush统一集成的各个厂商推送sdk,统一获取到token
|
||||
* iOS通过原生token回调接口获取到token
|
||||
* flutter端,将获取到的厂商token,厂商标识上报到业务服务器
|
||||
|
||||
定制jpush_flutter:http://code-internal.star-lock.cn/StarlockTeam/jpush_flutter
|
||||
BIN
android/.DS_Store
vendored
Executable file
@ -1,6 +1,6 @@
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "fastlane"
|
||||
gem 'nkf', '0.2.0'
|
||||
|
||||
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
|
||||
eval_gemfile(plugins_path) if File.exist?(plugins_path)
|
||||
|
||||
@ -9,23 +9,21 @@ GEM
|
||||
public_suffix (>= 2.0.2, < 7.0)
|
||||
artifactory (3.0.17)
|
||||
atomos (0.1.3)
|
||||
aws-eventstream (1.3.2)
|
||||
aws-partitions (1.1107.0)
|
||||
aws-sdk-core (3.224.0)
|
||||
aws-eventstream (1.3.0)
|
||||
aws-partitions (1.979.0)
|
||||
aws-sdk-core (3.209.1)
|
||||
aws-eventstream (~> 1, >= 1.3.0)
|
||||
aws-partitions (~> 1, >= 1.992.0)
|
||||
aws-partitions (~> 1, >= 1.651.0)
|
||||
aws-sigv4 (~> 1.9)
|
||||
base64
|
||||
jmespath (~> 1, >= 1.6.1)
|
||||
logger
|
||||
aws-sdk-kms (1.101.0)
|
||||
aws-sdk-core (~> 3, >= 3.216.0)
|
||||
aws-sdk-kms (1.94.0)
|
||||
aws-sdk-core (~> 3, >= 3.207.0)
|
||||
aws-sigv4 (~> 1.5)
|
||||
aws-sdk-s3 (1.186.1)
|
||||
aws-sdk-core (~> 3, >= 3.216.0)
|
||||
aws-sdk-s3 (1.166.0)
|
||||
aws-sdk-core (~> 3, >= 3.207.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.5)
|
||||
aws-sigv4 (1.11.0)
|
||||
aws-sigv4 (1.10.0)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
babosa (1.0.4)
|
||||
base64 (0.2.0)
|
||||
@ -35,7 +33,7 @@ GEM
|
||||
commander (4.6.0)
|
||||
highline (~> 2.0.0)
|
||||
declarative (0.0.20)
|
||||
digest-crc (0.7.0)
|
||||
digest-crc (0.6.5)
|
||||
rake (>= 12.0.0, < 14.0.0)
|
||||
domain_name (0.5.20190701)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
@ -61,8 +59,8 @@ GEM
|
||||
faraday-em_synchrony (1.0.0)
|
||||
faraday-excon (1.1.0)
|
||||
faraday-httpclient (1.0.1)
|
||||
faraday-multipart (1.1.0)
|
||||
multipart-post (~> 2.0)
|
||||
faraday-multipart (1.0.4)
|
||||
multipart-post (~> 2)
|
||||
faraday-net_http (1.0.2)
|
||||
faraday-net_http_persistent (1.2.0)
|
||||
faraday-patron (1.0.0)
|
||||
@ -70,8 +68,8 @@ GEM
|
||||
faraday-retry (1.0.3)
|
||||
faraday_middleware (1.2.1)
|
||||
faraday (~> 1.0)
|
||||
fastimage (2.4.0)
|
||||
fastlane (2.227.2)
|
||||
fastimage (2.3.1)
|
||||
fastlane (2.222.0)
|
||||
CFPropertyList (>= 2.3, < 4.0.0)
|
||||
addressable (>= 2.8, < 3.0.0)
|
||||
artifactory (~> 3.0)
|
||||
@ -87,7 +85,6 @@ GEM
|
||||
faraday-cookie_jar (~> 0.0.6)
|
||||
faraday_middleware (~> 1.0)
|
||||
fastimage (>= 2.1.0, < 3.0.0)
|
||||
fastlane-sirp (>= 1.0.0)
|
||||
gh_inspector (>= 1.1.2, < 2.0.0)
|
||||
google-apis-androidpublisher_v3 (~> 0.3)
|
||||
google-apis-playcustomapp_v1 (~> 0.1)
|
||||
@ -111,11 +108,9 @@ GEM
|
||||
tty-spinner (>= 0.8.0, < 1.0.0)
|
||||
word_wrap (~> 1.0.0)
|
||||
xcodeproj (>= 1.13.0, < 2.0.0)
|
||||
xcpretty (~> 0.4.1)
|
||||
xcpretty (~> 0.3.0)
|
||||
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
|
||||
fastlane-plugin-pgyer (0.2.9)
|
||||
fastlane-sirp (1.0.0)
|
||||
sysrandom (~> 1.0)
|
||||
gh_inspector (1.1.3)
|
||||
google-apis-androidpublisher_v3 (0.54.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
@ -154,26 +149,23 @@ GEM
|
||||
os (>= 0.9, < 2.0)
|
||||
signet (>= 0.16, < 2.a)
|
||||
highline (2.0.3)
|
||||
http-cookie (1.0.8)
|
||||
http-cookie (1.0.7)
|
||||
domain_name (~> 0.5)
|
||||
httpclient (2.9.0)
|
||||
mutex_m
|
||||
httpclient (2.8.3)
|
||||
jmespath (1.6.2)
|
||||
json (2.7.6)
|
||||
jwt (2.10.1)
|
||||
json (2.7.2)
|
||||
jwt (2.9.1)
|
||||
base64
|
||||
logger (1.7.0)
|
||||
mini_magick (4.13.2)
|
||||
mini_mime (1.1.5)
|
||||
multi_json (1.15.0)
|
||||
multipart-post (2.4.1)
|
||||
mutex_m (0.3.0)
|
||||
nanaimo (0.4.0)
|
||||
nanaimo (0.3.0)
|
||||
naturally (2.2.1)
|
||||
nkf (0.2.0)
|
||||
optparse (0.6.0)
|
||||
optparse (0.5.0)
|
||||
os (1.1.4)
|
||||
plist (3.7.2)
|
||||
plist (3.7.1)
|
||||
public_suffix (5.1.1)
|
||||
rake (13.2.1)
|
||||
representable (3.2.0)
|
||||
@ -181,10 +173,10 @@ GEM
|
||||
trailblazer-option (>= 0.1.1, < 0.2.0)
|
||||
uber (< 0.2.0)
|
||||
retriable (3.1.2)
|
||||
rexml (3.4.1)
|
||||
rouge (3.28.0)
|
||||
rexml (3.3.7)
|
||||
rouge (2.0.7)
|
||||
ruby2_keywords (0.0.5)
|
||||
rubyzip (2.4.1)
|
||||
rubyzip (2.3.2)
|
||||
security (0.1.5)
|
||||
signet (0.18.0)
|
||||
addressable (~> 2.8)
|
||||
@ -194,7 +186,6 @@ GEM
|
||||
simctl (1.6.10)
|
||||
CFPropertyList
|
||||
naturally
|
||||
sysrandom (1.0.5)
|
||||
terminal-notifier (2.0.0)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
@ -207,15 +198,15 @@ GEM
|
||||
unf (0.2.0)
|
||||
unicode-display_width (2.6.0)
|
||||
word_wrap (1.0.0)
|
||||
xcodeproj (1.27.0)
|
||||
xcodeproj (1.25.0)
|
||||
CFPropertyList (>= 2.3.3, < 4.0)
|
||||
atomos (~> 0.1.3)
|
||||
claide (>= 1.0.2, < 2.0)
|
||||
colored2 (~> 3.1)
|
||||
nanaimo (~> 0.4.0)
|
||||
rexml (>= 3.3.6, < 4.0)
|
||||
xcpretty (0.4.1)
|
||||
rouge (~> 3.28.0)
|
||||
nanaimo (~> 0.3.0)
|
||||
rexml (>= 3.3.2, < 4.0)
|
||||
xcpretty (0.3.0)
|
||||
rouge (~> 2.0.7)
|
||||
xcpretty-travis-formatter (1.0.1)
|
||||
xcpretty (~> 0.2, >= 0.0.7)
|
||||
|
||||
@ -225,7 +216,6 @@ PLATFORMS
|
||||
DEPENDENCIES
|
||||
fastlane
|
||||
fastlane-plugin-pgyer
|
||||
nkf (= 0.2.0)
|
||||
|
||||
BUNDLED WITH
|
||||
1.17.2
|
||||
|
||||
@ -23,9 +23,6 @@ if (flutterVersionName == null) {
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
//<com>
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
//</com>
|
||||
apply plugin: 'kotlin-android'
|
||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||
apply plugin: 'com.android.application'
|
||||
@ -78,13 +75,6 @@ android {
|
||||
keyAlias = 'upload'
|
||||
keyPassword 'xhj8872'
|
||||
}
|
||||
|
||||
xhj_bundle {
|
||||
storeFile file("xhj_bundle.jks")
|
||||
storePassword 'xhj8872'
|
||||
keyAlias = 'xhj'
|
||||
keyPassword 'xhj8872'
|
||||
}
|
||||
}
|
||||
|
||||
// ----- BEGIN flavorDimensions (autogenerated by flutter_flavorizr) -----
|
||||
@ -95,105 +85,62 @@ android {
|
||||
dimension "flavor-type"
|
||||
applicationId "com.starlock.lock.local"
|
||||
signingConfig signingConfigs.debug
|
||||
resValue "string", "app_name", "Star Lock"
|
||||
resValue "string", "app_name", "星锁-local"
|
||||
manifestPlaceholders.JPUSH_PKGNAME = "com.starlock.lock.local"
|
||||
}
|
||||
dev {
|
||||
dimension "flavor-type"
|
||||
applicationId "com.starlock.lock.dev"
|
||||
signingConfig signingConfigs.debug
|
||||
resValue "string", "app_name", "Star Lock"
|
||||
resValue "string", "app_name", "星锁-dev"
|
||||
manifestPlaceholders.JPUSH_PKGNAME = "com.starlock.lock.dev"
|
||||
}
|
||||
pre {
|
||||
dimension "flavor-type"
|
||||
applicationId "com.starlock.lock.pre"
|
||||
signingConfig signingConfigs.debug
|
||||
resValue "string", "app_name", "Star Lock-P"
|
||||
resValue "string", "app_name", "星锁"
|
||||
manifestPlaceholders.JPUSH_PKGNAME = "com.starlock.lock.pre"
|
||||
}
|
||||
sky {
|
||||
dimension "flavor-type"
|
||||
applicationId "com.skychip.lock"
|
||||
signingConfig signingConfigs.sky
|
||||
resValue "string", "app_name", "TTLock Pro"
|
||||
manifestPlaceholders = [
|
||||
JPUSH_PKGNAME : "com.skychip.lock",
|
||||
JPUSH_APPKEY : "7ff37d174c1a568a89e98dad",//--skyAppKey
|
||||
JPUSH_CHANNEL : "flutter_channel",
|
||||
XIAOMI_APPID : "MI-2882303761520287291",
|
||||
XIAOMI_APPKEY : "MI-5352028744291",
|
||||
OPPO_APPKEY : "OP-ccae67a4a8c1470a8350b0d6a89f8105",
|
||||
OPPO_APPID : "OP-31586713",
|
||||
OPPO_APPSECRET: "OP-2339389233094ca297de7b10213f7bd8",
|
||||
VIVO_APPKEY : "6a18657357d176364a91f50e4c9cd7c4",
|
||||
VIVO_APPID : "105724810",
|
||||
HONOR_APPID : "104437184",
|
||||
]
|
||||
resValue "string", "app_name", "锁通通"
|
||||
manifestPlaceholders.JPUSH_PKGNAME = "com.skychip.lock"
|
||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules-sky.pro'
|
||||
}
|
||||
sky_pre {
|
||||
dimension "flavor-type"
|
||||
applicationId "com.skychip.lock.pre"
|
||||
signingConfig signingConfigs.sky
|
||||
resValue "string", "app_name", "TTLock Pro-P"
|
||||
manifestPlaceholders.JPUSH_PKGNAME = "com.skychip.lock.pre"
|
||||
resValue "string", "app_name", "锁通通-P"
|
||||
}
|
||||
sky_dev {
|
||||
dimension "flavor-type"
|
||||
applicationId "com.skychip.lock.dev"
|
||||
signingConfig signingConfigs.sky
|
||||
resValue "string", "app_name", "TTLock Pro"
|
||||
manifestPlaceholders.JPUSH_PKGNAME = "com.skychip.lock.dev"
|
||||
resValue "string", "app_name", "锁通通-D"
|
||||
}
|
||||
xhj {
|
||||
dimension "flavor-type"
|
||||
applicationId "com.xhjcn.lock"
|
||||
signingConfig signingConfigs.xhj
|
||||
resValue "string", "app_name", "Star Lock"
|
||||
manifestPlaceholders = [
|
||||
JPUSH_PKGNAME : "com.xhjcn.lock",
|
||||
JPUSH_APPKEY : "251fc8074820d122b6de58d2",//--鑫泓佳AppKey
|
||||
JPUSH_CHANNEL : "flutter_channel",
|
||||
XIAOMI_APPID : "MI-2882303761520314939",
|
||||
XIAOMI_APPKEY : "MI-5312031456939",
|
||||
OPPO_APPKEY : "OP-47f668c9943248118502aa58d066393b",
|
||||
OPPO_APPID : "OP-31726001",
|
||||
OPPO_APPSECRET: "OP-05723986bba64183a71530b496922450",
|
||||
VIVO_APPKEY : "75fe8e570425b714e08d0390b14797cb",
|
||||
VIVO_APPID : "105752244",
|
||||
HONOR_APPID : "104458196",
|
||||
]
|
||||
resValue "string", "app_name", "星星锁"
|
||||
manifestPlaceholders.JPUSH_PKGNAME = "com.xhjcn.lock"
|
||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules-xhj.pro'
|
||||
}
|
||||
|
||||
xhj_bundle {
|
||||
dimension "flavor-type"
|
||||
applicationId "ltd.xhjcn.lock"
|
||||
|
||||
signingConfig signingConfigs.xhj_bundle
|
||||
resValue "string", "app_name", "Star Lock"
|
||||
manifestPlaceholders = [
|
||||
JPUSH_PKGNAME: "ltd.xhjcn.lock",
|
||||
JPUSH_APPKEY : "5ccdb9b8d3faaae66ba5d02e",
|
||||
JPUSH_CHANNEL: "flutter_channel",
|
||||
]
|
||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules-xhj.pro'
|
||||
}
|
||||
|
||||
xhj_pre {
|
||||
dimension "flavor-type"
|
||||
applicationId "com.xhjcn.lock.pre"
|
||||
signingConfig signingConfigs.xhj
|
||||
resValue "string", "app_name", "Star Lock-P"
|
||||
manifestPlaceholders.JPUSH_PKGNAME = "com.xhjcn.lock.pre"
|
||||
resValue "string", "app_name", "星星锁-P"
|
||||
}
|
||||
xhj_dev {
|
||||
dimension "flavor-type"
|
||||
applicationId "com.xhjcn.lock.dev"
|
||||
signingConfig signingConfigs.xhj
|
||||
resValue "string", "app_name", "Star Lock"
|
||||
manifestPlaceholders.JPUSH_PKGNAME = "com.xhjcn.lock.dev"
|
||||
resValue "string", "app_name", "星星锁-D"
|
||||
}
|
||||
}
|
||||
|
||||
@ -226,7 +173,7 @@ android {
|
||||
// You can update the following values to match your application needs.
|
||||
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
|
||||
minSdkVersion 25
|
||||
targetSdkVersion 35
|
||||
targetSdkVersion 34
|
||||
versionCode flutterVersionCode.toInteger()
|
||||
versionName flutterVersionName
|
||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||
@ -248,22 +195,22 @@ android {
|
||||
JPUSH_PKGNAME : "这里不重要,在口味配置",
|
||||
//JPush 上注册的包名对应的 Appkey.
|
||||
// JPUSH_APPKEY : "7ff37d174c1a568a89e98dad",//--skyAppKey
|
||||
JPUSH_APPKEY : "default",//--鑫泓佳AppKey
|
||||
JPUSH_CHANNEL : "default",
|
||||
JPUSH_APPKEY : "251fc8074820d122b6de58d2",//--鑫泓佳AppKey
|
||||
JPUSH_CHANNEL : "flutter_channel",
|
||||
|
||||
//若不集成厂商通道,可直接跳过以下配置
|
||||
//以下为sky的配置
|
||||
// XIAOMI_APPID : "MI-2882303761520287291",
|
||||
// XIAOMI_APPKEY : "MI-5352028744291",
|
||||
//以下均为鑫泓佳的配置
|
||||
XIAOMI_APPID : "default",
|
||||
XIAOMI_APPKEY : "default",
|
||||
OPPO_APPKEY : "default",
|
||||
OPPO_APPID : "default",
|
||||
OPPO_APPSECRET: "default",
|
||||
VIVO_APPKEY : "default",
|
||||
VIVO_APPID : "default",
|
||||
HONOR_APPID : "default",
|
||||
XIAOMI_APPID : "MI-2882303761520314939",
|
||||
XIAOMI_APPKEY : "MI-5312031456939",
|
||||
OPPO_APPKEY : "OP-47f668c9943248118502aa58d066393b",
|
||||
OPPO_APPID : "OP-31726001",
|
||||
OPPO_APPSECRET: "OP-05723986bba64183a71530b496922450",
|
||||
VIVO_APPKEY : "75fe8e570425b714e08d0390b14797cb",
|
||||
VIVO_APPID : "105752244",
|
||||
HONOR_APPID : "104458196",
|
||||
]
|
||||
splits {
|
||||
abi {
|
||||
@ -289,11 +236,7 @@ android {
|
||||
productFlavors.dev.signingConfig signingConfigs.debug
|
||||
productFlavors.pre.signingConfig signingConfigs.debug
|
||||
productFlavors.sky.signingConfig signingConfigs.sky
|
||||
productFlavors.sky_dev.signingConfig signingConfigs.sky
|
||||
productFlavors.sky_pre.signingConfig signingConfigs.sky
|
||||
productFlavors.xhj.signingConfig signingConfigs.xhj
|
||||
productFlavors.xhj_dev.signingConfig signingConfigs.xhj
|
||||
productFlavors.xhj_pre.signingConfig signingConfigs.xhj
|
||||
}
|
||||
release {
|
||||
// 高德地图导致release编译模式下应用闪退,根据:[高德地图在Debug模式下运行正常但是打Release包时则闪退解决办法](https://blog.csdn.net/weixin_39370093/article/details/109631210)
|
||||
@ -305,11 +248,7 @@ android {
|
||||
productFlavors.dev.signingConfig signingConfigs.debug
|
||||
productFlavors.pre.signingConfig signingConfigs.debug
|
||||
productFlavors.sky.signingConfig signingConfigs.sky
|
||||
productFlavors.sky_dev.signingConfig signingConfigs.sky
|
||||
productFlavors.sky_pre.signingConfig signingConfigs.sky
|
||||
productFlavors.xhj.signingConfig signingConfigs.xhj
|
||||
productFlavors.xhj_dev.signingConfig signingConfigs.xhj
|
||||
productFlavors.xhj_pre.signingConfig signingConfigs.xhj
|
||||
}
|
||||
}
|
||||
|
||||
@ -328,7 +267,7 @@ dependencies {
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||
// implementation('com.amap.api:location:5.6.0')
|
||||
// implementation('com.amap.api:3dmap:8.1.0')
|
||||
// implementation('com.amap.api:3dmap-location-search:latest.integration')
|
||||
implementation('com.amap.api:3dmap-location-search:latest.integration')
|
||||
|
||||
implementation 'cn.jiguang.sdk:jpush:5.2.3'
|
||||
// 接入华为厂商
|
||||
@ -351,21 +290,4 @@ dependencies {
|
||||
// implementation(name: 'HiPushSDK-7.0.61.303', ext: 'aar')
|
||||
//接入 VIVO 厂商
|
||||
implementation 'cn.jiguang.sdk.plugin:vivo:5.2.3'
|
||||
|
||||
// Umeng统计
|
||||
//<cn>
|
||||
implementation 'com.umeng.umsdk:common:9.7.9'
|
||||
implementation 'com.umeng.umsdk:asms:1.8.5'
|
||||
//</cn>
|
||||
//<com>
|
||||
// implementation 'cn.jiguang.sdk.plugin:fcm:5.2.3'
|
||||
// implementation 'com.google.firebase:firebase-messaging:23.0.5'
|
||||
//</com>
|
||||
|
||||
//FCM云消息与极光FCM插件
|
||||
implementation 'com.google.firebase:firebase-messaging:23.2.1'
|
||||
implementation 'cn.jiguang.sdk.plugin:fcm:5.2.2'
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -2,14 +2,14 @@
|
||||
"project_info": {
|
||||
"project_number": "281500445726",
|
||||
"project_id": "skychip2023-ecdff",
|
||||
"storage_bucket": "skychip2023-ecdff.firebasestorage.app"
|
||||
"storage_bucket": "skychip2023-ecdff.appspot.com"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:281500445726:android:468195b9cc68dd6cc4d20f",
|
||||
"mobilesdk_app_id": "1:281500445726:android:ddf52ac7b7f83cf5c4d20f",
|
||||
"android_client_info": {
|
||||
"package_name": "com.starlock.lock.local"
|
||||
"package_name": "com.skychip.lock"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
|
||||
@ -92,22 +92,6 @@
|
||||
-dontwarn cn.jiguang.**
|
||||
-keep class cn.jiguang.** { *; }
|
||||
|
||||
-dontwarn cn.com.chinatelecom.**
|
||||
-keep class cn.com.chinatelecom.** {*;}
|
||||
-dontwarn com.ct.**
|
||||
-keep class com.ct.** {*;}
|
||||
-dontwarn a.a.**
|
||||
-keep class a.a.** {*;}
|
||||
-dontwarn com.cmic.**
|
||||
-keep class com.cmic.** {*;}
|
||||
-dontwarn com.unicom.**
|
||||
-keep class com.unicom.** {*;}
|
||||
-dontwarn com.sdk.**
|
||||
-keep class com.sdk.** {*;}
|
||||
|
||||
-dontwarn com.sdk.**
|
||||
-keep class com.sdk.** {*;}
|
||||
|
||||
-dontwarn com.google.**
|
||||
-keep class com.google.gson.** {*;}
|
||||
-keep class com.google.protobuf.** {*;}
|
||||
@ -144,12 +128,4 @@
|
||||
}
|
||||
|
||||
-keep class com.tencent.mm.sdk.** { *; }
|
||||
-keep class com.tencent.mm.opensdk.** { *; }
|
||||
|
||||
-dontwarn com.tencent.bugly.**
|
||||
-keep public class com.tencent.bugly.**{*;}
|
||||
|
||||
-keep class com.umeng.** { *; }
|
||||
-keep class com.umeng.**$* { *; }
|
||||
-keep class com.umeng.message.** { *; }
|
||||
-keep class com.umeng.message.**$* { *; }
|
||||
-keep class com.tencent.mm.opensdk.** { *; }
|
||||
@ -92,22 +92,6 @@
|
||||
-dontwarn cn.jiguang.**
|
||||
-keep class cn.jiguang.** { *; }
|
||||
|
||||
-dontwarn cn.com.chinatelecom.**
|
||||
-keep class cn.com.chinatelecom.** {*;}
|
||||
-dontwarn com.ct.**
|
||||
-keep class com.ct.** {*;}
|
||||
-dontwarn a.a.**
|
||||
-keep class a.a.** {*;}
|
||||
-dontwarn com.cmic.**
|
||||
-keep class com.cmic.** {*;}
|
||||
-dontwarn com.unicom.**
|
||||
-keep class com.unicom.** {*;}
|
||||
-dontwarn com.sdk.**
|
||||
-keep class com.sdk.** {*;}
|
||||
|
||||
-dontwarn com.sdk.**
|
||||
-keep class com.sdk.** {*;}
|
||||
|
||||
-dontwarn com.google.**
|
||||
-keep class com.google.gson.** {*;}
|
||||
-keep class com.google.protobuf.** {*;}
|
||||
@ -144,12 +128,4 @@
|
||||
}
|
||||
|
||||
-keep class com.tencent.mm.sdk.** { *; }
|
||||
-keep class com.tencent.mm.opensdk.** { *; }
|
||||
|
||||
-dontwarn com.tencent.bugly.**
|
||||
-keep public class com.tencent.bugly.**{*;}
|
||||
|
||||
-keep class com.umeng.** { *; }
|
||||
-keep class com.umeng.**$* { *; }
|
||||
-keep class com.umeng.message.** { *; }
|
||||
-keep class com.umeng.message.**$* { *; }
|
||||
-keep class com.tencent.mm.opensdk.** { *; }
|
||||
28
android/app/proguard-rules.pro
vendored
@ -92,27 +92,6 @@
|
||||
-dontwarn cn.jiguang.**
|
||||
-keep class cn.jiguang.** { *; }
|
||||
|
||||
-dontwarn cn.jpush.**
|
||||
-keep class cn.jpush.** {*;}
|
||||
-dontwarn cn.jiguang.**
|
||||
-keep class cn.jiguang.** {*;}
|
||||
|
||||
-dontwarn cn.com.chinatelecom.**
|
||||
-keep class cn.com.chinatelecom.** {*;}
|
||||
-dontwarn com.ct.**
|
||||
-keep class com.ct.** {*;}
|
||||
-dontwarn a.a.**
|
||||
-keep class a.a.** {*;}
|
||||
-dontwarn com.cmic.**
|
||||
-keep class com.cmic.** {*;}
|
||||
-dontwarn com.unicom.**
|
||||
-keep class com.unicom.** {*;}
|
||||
-dontwarn com.sdk.**
|
||||
-keep class com.sdk.** {*;}
|
||||
|
||||
-dontwarn com.sdk.**
|
||||
-keep class com.sdk.** {*;}
|
||||
|
||||
-dontwarn com.google.**
|
||||
-keep class com.google.gson.** {*;}
|
||||
-keep class com.google.protobuf.** {*;}
|
||||
@ -149,9 +128,4 @@
|
||||
}
|
||||
|
||||
-keep class com.tencent.mm.sdk.** { *; }
|
||||
-keep class com.tencent.mm.opensdk.** { *; }
|
||||
|
||||
-keep class com.umeng.** { *; }
|
||||
-keep class com.umeng.**$* { *; }
|
||||
-keep class com.umeng.message.** { *; }
|
||||
-keep class com.umeng.message.**$* { *; }
|
||||
-keep class com.tencent.mm.opensdk.** { *; }
|
||||
@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">Star Lock</string>
|
||||
</resources>
|
||||
@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">星锁-dev</string>
|
||||
</resources>
|
||||
@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">Star Lock</string>
|
||||
</resources>
|
||||
@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">星锁</string>
|
||||
</resources>
|
||||
@ -1,6 +1,6 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="com.skychip.lock">
|
||||
package="com.example.star_lock">
|
||||
|
||||
<uses-permission
|
||||
android:name="android.permission.BLUETOOTH_SCAN"
|
||||
@ -8,10 +8,10 @@
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
||||
<!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="30" />-->
|
||||
<!-- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" android:maxSdkVersion="30" />-->
|
||||
<!--允许访问网络,必选权限-->
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<!--申请调用A-GPS模块-->
|
||||
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
|
||||
<!--允许获取精确位置,精准定位必选-->
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<!--允许获取粗略位置,粗略定位必选-->
|
||||
@ -29,13 +29,11 @@
|
||||
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
||||
<!--允许读设备日志,用于问题排查-->
|
||||
<uses-permission android:name="android.permission.READ_LOGS" />
|
||||
<!--联系人-->
|
||||
<uses-permission android:name="android.permission.READ_CONTACTS" />
|
||||
|
||||
<!--相机-->
|
||||
<uses-permission android:name="android.permission.CAMERA" />
|
||||
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32"/>
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
|
||||
@ -61,7 +59,7 @@
|
||||
<uses-permission android:name="com.hihonor.permission.sec.SDK_LAUNCHER" />
|
||||
|
||||
<application
|
||||
android:name=".App"
|
||||
android:name="android.app.Application"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:requestLegacyExternalStorage="true"
|
||||
@ -80,32 +78,50 @@
|
||||
<meta-data
|
||||
android:name="flutterEmbedding"
|
||||
android:value="2" />
|
||||
<meta-data android:name="com.google.firebase.messaging.default_notification_icon"
|
||||
android:resource="@mipmap/ic_launcher" />
|
||||
<meta-data
|
||||
android:name="com.google.firebase.messaging.default_notification_channel_id"
|
||||
android:value="1" /> <!-- 将您的通知渠道ID替换为您的实际ID -->
|
||||
<!-- <meta-data-->
|
||||
<!-- android:name="com.huawei.hms.client.appid"-->
|
||||
<!-- android:value="110798531" />-->
|
||||
<!-- <meta-data-->
|
||||
<!-- android:name="com.huawei.hms.client.cpid"-->
|
||||
<!-- android:value="1406555529261648640" />-->
|
||||
<!-- <meta-data-->
|
||||
<!-- android:name="OPPO_APPKEY"-->
|
||||
<!-- android:value="OP-47f668c9943248118502aa58d066393b" />-->
|
||||
<meta-data
|
||||
android:name="com.huawei.hms.client.appid"
|
||||
android:value="110798531" />
|
||||
<meta-data
|
||||
android:name="com.huawei.hms.client.cpid"
|
||||
android:value="1406555529261648640" />
|
||||
<meta-data
|
||||
android:name="OPPO_APPKEY"
|
||||
android:value="OP-47f668c9943248118502aa58d066393b" />
|
||||
|
||||
<!-- <meta-data-->
|
||||
<!-- android:name="OPPO_APPID"-->
|
||||
<!-- android:value="OP-31726001" />-->
|
||||
<meta-data
|
||||
android:name="OPPO_APPID"
|
||||
android:value="OP-31726001" />
|
||||
|
||||
<meta-data
|
||||
android:name="OPPO_APPSECRET"
|
||||
android:value="OP-05723986bba64183a71530b496922450" />
|
||||
|
||||
|
||||
<meta-data
|
||||
android:name="com.huawei.hms.client.appid"
|
||||
android:value="110798531" />
|
||||
<meta-data
|
||||
android:name="com.huawei.hms.client.cpid"
|
||||
android:value="1406555529261648640" />
|
||||
<meta-data
|
||||
android:name="OPPO_APPKEY"
|
||||
android:value="OP-47f668c9943248118502aa58d066393b" />
|
||||
|
||||
<meta-data
|
||||
android:name="OPPO_APPID"
|
||||
android:value="OP-31726001" />
|
||||
|
||||
<meta-data
|
||||
android:name="OPPO_APPSECRET"
|
||||
android:value="OP-05723986bba64183a71530b496922450" />
|
||||
|
||||
<!-- <meta-data-->
|
||||
<!-- android:name="OPPO_APPSECRET"-->
|
||||
<!-- android:value="OP-05723986bba64183a71530b496922450" />-->
|
||||
|
||||
<service
|
||||
android:name="com.huawei.hms.push.HmsMessageService"
|
||||
android:exported="true">
|
||||
android:name="com.huawei.hms.push.HmsMessageService"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="com.huawei.push.action.MESSAGING_EVENT" />
|
||||
</intent-filter>
|
||||
@ -113,8 +129,8 @@
|
||||
|
||||
|
||||
<receiver
|
||||
android:name="com.huawei.hms.support.api.push.PushReceiver"
|
||||
android:exported="true">
|
||||
android:name="com.huawei.hms.support.api.push.PushReceiver"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="com.huawei.android.push.intent.REGISTRATION" />
|
||||
<action android:name="com.huawei.android.push.intent.RECEIVE" />
|
||||
@ -147,7 +163,7 @@
|
||||
</intent-filter>
|
||||
</service> <!--兼容Q版本-->
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:name="com.skychip.lock.MainActivity"
|
||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||||
android:exported="true"
|
||||
android:hardwareAccelerated="true"
|
||||
@ -177,18 +193,6 @@
|
||||
</intent-filter>
|
||||
|
||||
</activity>
|
||||
<meta-data
|
||||
android:name="BUGLY_ENABLE_DEBUG"
|
||||
android:value="true" />
|
||||
|
||||
<!-- 添加 Umeng SDK 的服务 -->
|
||||
<service android:name="com.umeng.message.UmengIntentService" android:exported="false"/>
|
||||
<receiver android:name="com.umeng.message.NotificationProxyBroadcastReceiver" android:exported="true" android:permission="android.permission.BROADCAST_PACKAGE_REMOVED">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.PACKAGE_REMOVED"/>
|
||||
<data android:scheme="package"/>
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
</application>
|
||||
|
||||
|
||||
|
||||
@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<umeng_config>
|
||||
<appkey>671244cf80464b33f6df9648</appkey>
|
||||
<channel>Product</channel>
|
||||
</umeng_config>
|
||||
@ -1,14 +0,0 @@
|
||||
package com.skychip.lock
|
||||
|
||||
import io.flutter.app.FlutterApplication
|
||||
import android.util.Log
|
||||
import cn.jiguang.api.utils.JCollectionAuth;
|
||||
|
||||
class App : FlutterApplication() {
|
||||
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
Log.d("MyApplication", "Application has started")
|
||||
JCollectionAuth.setAuth(getApplicationContext(), false);
|
||||
}
|
||||
}
|
||||
@ -16,10 +16,7 @@ class MainActivity : FlutterActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
GeneratedPluginRegistrant.registerWith(flutterEngine!!)
|
||||
MethodChannel(
|
||||
flutterEngine?.dartExecutor!!.binaryMessenger,
|
||||
"starLockFlutterSend"
|
||||
).setMethodCallHandler { call, result ->
|
||||
MethodChannel(flutterEngine?.dartExecutor!!.binaryMessenger, "starLockFlutterSend").setMethodCallHandler { call, result ->
|
||||
if (call.method == "loadNativeShare") {
|
||||
val map = call.arguments as Map<String, String>
|
||||
val shareText = map["shareText"]
|
||||
@ -29,7 +26,7 @@ class MainActivity : FlutterActivity() {
|
||||
} else {
|
||||
shareText(shareText, "分享")
|
||||
}
|
||||
} else if (call.method == "sendGetBlueStatus") {
|
||||
} else if (call.method == "sendGetBlueStatus") {
|
||||
// 蓝牙是否开启
|
||||
// println("收到原生的信息了 methodmethodmethod: ${call.method}")
|
||||
val bluetoothAdapter: BluetoothAdapter? = BluetoothAdapter.getDefaultAdapter()
|
||||
@ -47,10 +44,7 @@ class MainActivity : FlutterActivity() {
|
||||
status = "-1"
|
||||
}
|
||||
val flutterEngine: FlutterEngine? = this.flutterEngine // 获取你的 FlutterEngine 实例
|
||||
MethodChannel(
|
||||
flutterEngine?.dartExecutor!!.binaryMessenger,
|
||||
"starLockFlutterReceive"
|
||||
).invokeMethod("getBlueStatus", status)
|
||||
MethodChannel(flutterEngine?.dartExecutor!!.binaryMessenger, "starLockFlutterReceive").invokeMethod("getBlueStatus", status)
|
||||
} else {
|
||||
result.notImplemented() // 没有实现的方法
|
||||
}
|
||||
@ -96,10 +90,7 @@ class MainActivity : FlutterActivity() {
|
||||
|
||||
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
|
||||
GeneratedPluginRegistrant.registerWith(flutterEngine)
|
||||
MethodChannel(
|
||||
flutterEngine.dartExecutor.binaryMessenger,
|
||||
"starLockFlutterSend"
|
||||
).setMethodCallHandler { call, result ->
|
||||
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "starLockFlutterSend").setMethodCallHandler { call, result ->
|
||||
if (call.method == "loadNativeShare") {
|
||||
val map = call.arguments as Map<String, String>
|
||||
val shareText = map["shareText"]
|
||||
|
||||
|
Before Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 214 B |
@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 设置背景颜色为透明 -->
|
||||
<solid android:color="@android:color/transparent"/>
|
||||
</shape>
|
||||
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
@ -1,3 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:keep="@drawable/sky_login_btn_normal,@drawable/xhj_login_btn_normal,@drawable/icon_left_grey,@drawable/check,@drawable/uncheck"/>
|
||||
@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">Star Lock</string>
|
||||
</resources>
|
||||
@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">星锁</string>
|
||||
</resources>
|
||||
@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">Star Lock</string>
|
||||
</resources>
|
||||
@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">星锁</string>
|
||||
</resources>
|
||||
@ -26,21 +26,21 @@
|
||||
"SG_back":"connect-ws-dra.hispace.dbankcloud.com"
|
||||
},
|
||||
"client":{
|
||||
"cp_id":"30086000764882919",
|
||||
"product_id":"388421841222019909",
|
||||
"client_id":"1376040077926370048",
|
||||
"client_secret":"FE068E768F2B897A291DFFD186E0C0E495BE4BE6CCD7C5973B6C02ADF9178916",
|
||||
"project_id":"388421841222019909",
|
||||
"app_id":"110413691",
|
||||
"api_key":"DAEDAG1Mu4qubka2IheS5XVoQQIyqAr2tU+VyLcUukdN4iHjP9FZRI16fUIhWz+lsz8si57hQ/gjoNNvQBmgglsT5jnXFcnY4nF1wQ==",
|
||||
"cp_id":"30086000752967166",
|
||||
"product_id":"388421841222116270",
|
||||
"client_id":"1406555529261648640",
|
||||
"client_secret":"843E8191B02B692239726CF0ED990E1EC2B31928F825AA012B932A128FD2C516",
|
||||
"project_id":"388421841222116270",
|
||||
"app_id":"110798531",
|
||||
"api_key":"DQEDAALnPCtuCgoYOyZfsIDa9/YZZhQ+buDGpypeurXhQUGMajWcVyYLQgXXqV3x2HbI6oyG+Wm2Gf+1hPs6j+wA3B6ylYAXG4aAQA==",
|
||||
"package_name":"com.skychip.lock"
|
||||
},
|
||||
"oauth_client":{
|
||||
"client_id":"110413691",
|
||||
"client_id":"110798531",
|
||||
"client_type":1
|
||||
},
|
||||
"app_info":{
|
||||
"app_id":"110413691",
|
||||
"app_id":"110798531",
|
||||
"package_name":"com.skychip.lock"
|
||||
},
|
||||
"service":{
|
||||
@ -81,15 +81,15 @@
|
||||
{
|
||||
"package_name":"com.skychip.lock",
|
||||
"client":{
|
||||
"app_id":"110413691"
|
||||
"app_id":"110798531"
|
||||
},
|
||||
"app_info":{
|
||||
"package_name":"com.skychip.lock",
|
||||
"app_id":"110413691"
|
||||
"app_id":"110798531"
|
||||
},
|
||||
"oauth_client":{
|
||||
"client_type":1,
|
||||
"client_id":"110413691"
|
||||
"client_id":"110798531"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@ -1,48 +0,0 @@
|
||||
{
|
||||
"project_info": {
|
||||
"project_number": "281500445726",
|
||||
"project_id": "skychip2023-ecdff",
|
||||
"storage_bucket": "skychip2023-ecdff.firebasestorage.app"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:281500445726:android:ddf52ac7b7f83cf5c4d20f",
|
||||
"android_client_info": {
|
||||
"package_name": "com.skychip.lock"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyC-3-ABWuy9LrYyAw_KxDRto4DanQ0sq9g"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:281500445726:android:468195b9cc68dd6cc4d20f",
|
||||
"android_client_info": {
|
||||
"package_name": "com.starlock.lock.local"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyC-3-ABWuy9LrYyAw_KxDRto4DanQ0sq9g"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|
||||
BIN
android/app/src/sky/res/mipmap-hdpi/ic_launcher.png
Executable file → Normal file
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 3.8 KiB |
BIN
android/app/src/sky/res/mipmap-mdpi/ic_launcher.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 2.5 KiB |
BIN
android/app/src/sky/res/mipmap-xhdpi/ic_launcher.png
Executable file → Normal file
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 5.8 KiB |
BIN
android/app/src/sky/res/mipmap-xxhdpi/ic_launcher.png
Executable file → Normal file
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 12 KiB |
BIN
android/app/src/sky/res/mipmap-xxxhdpi/ic_launcher.png
Executable file → Normal file
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 27 KiB |
@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">TTLock Pro</string>
|
||||
</resources>
|
||||
@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">锁通通</string>
|
||||
</resources>
|
||||
@ -1,48 +0,0 @@
|
||||
{
|
||||
"project_info": {
|
||||
"project_number": "281500445726",
|
||||
"project_id": "skychip2023-ecdff",
|
||||
"storage_bucket": "skychip2023-ecdff.firebasestorage.app"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:281500445726:android:ddf52ac7b7f83cf5c4d20f",
|
||||
"android_client_info": {
|
||||
"package_name": "com.skychip.lock.dev"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyC-3-ABWuy9LrYyAw_KxDRto4DanQ0sq9g"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:281500445726:android:468195b9cc68dd6cc4d20f",
|
||||
"android_client_info": {
|
||||
"package_name": "com.starlock.lock.local"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyC-3-ABWuy9LrYyAw_KxDRto4DanQ0sq9g"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|
||||
@ -1,48 +0,0 @@
|
||||
{
|
||||
"project_info": {
|
||||
"project_number": "281500445726",
|
||||
"project_id": "skychip2023-ecdff",
|
||||
"storage_bucket": "skychip2023-ecdff.firebasestorage.app"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:281500445726:android:ddf52ac7b7f83cf5c4d",
|
||||
"android_client_info": {
|
||||
"package_name": "com.skychip.lock.pre"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyC-3-ABWuy9LrYyAw_KxDRto4DanQ"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:281500445726:android:468195b9cc68dd6cc",
|
||||
"android_client_info": {
|
||||
"package_name": "com.starlock.lock.local"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyC-3-ABWuy9LrYyAw_KxDRto4DanQ0sq9g"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|
||||
@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">TTLock Pro-P</string>
|
||||
</resources>
|
||||
@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">锁通通-P</string>
|
||||
</resources>
|
||||
@ -1,48 +0,0 @@
|
||||
{
|
||||
"project_info": {
|
||||
"project_number": "28150044todo",
|
||||
"project_id": "skychip2023-etodo",
|
||||
"storage_bucket": "skychip2023-etodo.firebasestorage.app"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:281500445726:android:ddf52ac7b7f83cf5c4todo",
|
||||
"android_client_info": {
|
||||
"package_name": "com.xhjcn.lock"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyC-3-ABWuy9LrYyAw_KxDRto4DanQ0todo"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:281500445726:android:468195b9cc68dd6cc4todo",
|
||||
"android_client_info": {
|
||||
"package_name": "com.xhjcn.lock.local"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyC-3-ABWuy9LrYyAw_KxDRto4Dank9todo"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|
||||
@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">Star Lock</string>
|
||||
</resources>
|
||||
@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">星星锁</string>
|
||||
</resources>
|
||||
@ -1,96 +0,0 @@
|
||||
{
|
||||
"agcgw":{
|
||||
"backurl":"connect-drcn.hispace.hicloud.com",
|
||||
"url":"connect-drcn.dbankcloud.cn",
|
||||
"websocketbackurl":"connect-ws-drcn.hispace.dbankcloud.com",
|
||||
"websocketurl":"connect-ws-drcn.hispace.dbankcloud.cn"
|
||||
},
|
||||
"agcgw_all":{
|
||||
"CN":"connect-drcn.dbankcloud.cn",
|
||||
"CN_back":"connect-drcn.hispace.hicloud.com",
|
||||
"DE":"connect-dre.dbankcloud.cn",
|
||||
"DE_back":"connect-dre.hispace.hicloud.com",
|
||||
"RU":"connect-drru.hispace.dbankcloud.ru",
|
||||
"RU_back":"connect-drru.hispace.dbankcloud.cn",
|
||||
"SG":"connect-dra.dbankcloud.cn",
|
||||
"SG_back":"connect-dra.hispace.hicloud.com"
|
||||
},
|
||||
"websocketgw_all":{
|
||||
"CN":"connect-ws-drcn.hispace.dbankcloud.cn",
|
||||
"CN_back":"connect-ws-drcn.hispace.dbankcloud.com",
|
||||
"DE":"connect-ws-dre.hispace.dbankcloud.cn",
|
||||
"DE_back":"connect-ws-dre.hispace.dbankcloud.com",
|
||||
"RU":"connect-ws-drru.hispace.dbankcloud.ru",
|
||||
"RU_back":"connect-ws-drru.hispace.dbankcloud.cn",
|
||||
"SG":"connect-ws-dra.hispace.dbankcloud.cn",
|
||||
"SG_back":"connect-ws-dra.hispace.dbankcloud.com"
|
||||
},
|
||||
"client":{
|
||||
"cp_id":"30086000752967166",
|
||||
"product_id":"388421841222116270",
|
||||
"client_id":"1406555529261648640",
|
||||
"client_secret":"843E8191B02B692239726CF0ED990E1EC2B31928F825AA012B932A128FD2C516",
|
||||
"project_id":"388421841222116270",
|
||||
"app_id":"110798531",
|
||||
"api_key":"DQEDAALnPCtuCgoYOyZfsIDa9/YZZhQ+buDGpypeurXhQUGMajWcVyYLQgXXqV3x2HbI6oyG+Wm2Gf+1hPs6j+wA3B6ylYAXG4aAQA==",
|
||||
"package_name":"ltd.xhjcn.lock"
|
||||
},
|
||||
"oauth_client":{
|
||||
"client_id":"110798531",
|
||||
"client_type":1
|
||||
},
|
||||
"app_info":{
|
||||
"app_id":"110798531",
|
||||
"package_name":"ltd.xhjcn.lock"
|
||||
},
|
||||
"service":{
|
||||
"analytics":{
|
||||
"collector_url":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn",
|
||||
"collector_url_ru":"datacollector-drru.dt.dbankcloud.ru,datacollector-drru.dt.hicloud.com",
|
||||
"collector_url_sg":"datacollector-dra.dt.hicloud.com,datacollector-dra.dt.dbankcloud.cn",
|
||||
"collector_url_de":"datacollector-dre.dt.hicloud.com,datacollector-dre.dt.dbankcloud.cn",
|
||||
"collector_url_cn":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn",
|
||||
"resource_id":"p1",
|
||||
"channel_id":""
|
||||
},
|
||||
"edukit":{
|
||||
"edu_url":"edukit.cloud.huawei.com.cn",
|
||||
"dh_url":"edukit.cloud.huawei.com.cn"
|
||||
},
|
||||
"search":{
|
||||
"url":"https://search-drcn.cloud.huawei.com"
|
||||
},
|
||||
"cloudstorage":{
|
||||
"storage_url_sg_back":"https://agc-storage-dra.cloud.huawei.asia",
|
||||
"storage_url_ru_back":"https://agc-storage-drru.cloud.huawei.ru",
|
||||
"storage_url_ru":"https://agc-storage-drru.cloud.huawei.ru",
|
||||
"storage_url_de_back":"https://agc-storage-dre.cloud.huawei.eu",
|
||||
"storage_url_de":"https://ops-dre.agcstorage.link",
|
||||
"storage_url":"https://agc-storage-drcn.platform.dbankcloud.cn",
|
||||
"storage_url_sg":"https://ops-dra.agcstorage.link",
|
||||
"storage_url_cn_back":"https://agc-storage-drcn.cloud.huawei.com.cn",
|
||||
"storage_url_cn":"https://agc-storage-drcn.platform.dbankcloud.cn"
|
||||
},
|
||||
"ml":{
|
||||
"mlservice_url":"ml-api-drcn.ai.dbankcloud.com,ml-api-drcn.ai.dbankcloud.cn"
|
||||
}
|
||||
},
|
||||
"region":"CN",
|
||||
"configuration_version":"3.0",
|
||||
"appInfos":[
|
||||
{
|
||||
"package_name":"ltd.xhjcn.lock",
|
||||
"client":{
|
||||
"app_id":"110798531"
|
||||
},
|
||||
"app_info":{
|
||||
"package_name":"ltd.xhjcn.lock",
|
||||
"app_id":"110798531"
|
||||
},
|
||||
"oauth_client":{
|
||||
"client_type":1,
|
||||
"client_id":"110798531"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -1,29 +0,0 @@
|
||||
{
|
||||
"project_info": {
|
||||
"project_number": "448746601330",
|
||||
"project_id": "smart-lock-12b8c",
|
||||
"storage_bucket": "smart-lock-12b8c.firebasestorage.app"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:448746601330:android:1a8056175e1dad5e317beb",
|
||||
"android_client_info": {
|
||||
"package_name": "ltd.xhjcn.lock"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyAm8dJlBY5hjslJDVDBNd2bkWrJlGjAMqw"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|
||||
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 8.4 KiB |
@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">Star Lock</string>
|
||||
</resources>
|
||||
@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">星星锁</string>
|
||||
</resources>
|
||||
@ -1,48 +0,0 @@
|
||||
{
|
||||
"project_info": {
|
||||
"project_number": "28150044todo",
|
||||
"project_id": "skychip2023-etodo",
|
||||
"storage_bucket": "skychip2023-etodo.firebasestorage.app"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:281500445726:android:ddf52ac7b7f83cf5c4todo",
|
||||
"android_client_info": {
|
||||
"package_name": "com.xhjcn.lock"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyC-3-ABWuy9LrYyAw_KxDRto4DanQ0todo"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:281500445726:android:468195b9cc68dd6cc4todo",
|
||||
"android_client_info": {
|
||||
"package_name": "com.xhjcn.lock.local"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyC-3-ABWuy9LrYyAw_KxDRto4Dank9todo"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|
||||
@ -1,48 +0,0 @@
|
||||
{
|
||||
"project_info": {
|
||||
"project_number": "28150044todo",
|
||||
"project_id": "skychip2023-etodo",
|
||||
"storage_bucket": "skychip2023-etodo.firebasestorage.app"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:281500445726:android:ddf52ac7b7f83cf5c4todo",
|
||||
"android_client_info": {
|
||||
"package_name": "com.xhjcn.lock.pre"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyC-3-ABWuy9LrYyAw_KxDRto4DanQ0todo"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:281500445726:android:468195b9cc68dd6cc4todo",
|
||||
"android_client_info": {
|
||||
"package_name": "com.xhjcn.lock.pre"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyC-3-ABWuy9LrYyAw_KxDRto4Dank9todo"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|
||||
@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">Star Lock-P</string>
|
||||
</resources>
|
||||
@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">星星锁-P</string>
|
||||
</resources>
|
||||
@ -8,21 +8,18 @@ export ENV_BUILD_WORKSPACE=${CI_PROJECT_DIR}
|
||||
echo "GITLAB_WORKSPACE: ${CI_PROJECT_DIR}"
|
||||
cd ${CI_PROJECT_DIR}/android
|
||||
echo "ENV_BUILD_TAG:${ENV_BUILD_TAG},ENV_BUILD_BRANCH:${ENV_BUILD_BRANCH}"
|
||||
# 只支持 v1.2.3_sky 这种tag格式
|
||||
regex='^v[0-9]+\.[0-9]+\.[0-9]+_sky$'
|
||||
if [[ "${ENV_BUILD_BRANCH}" == "canary_release_sky" ]]; then
|
||||
echo "===build canary_release: ${NEXT_VERSION}"
|
||||
export ENV_BUILD_TAG=${NEXT_VERSION}
|
||||
bundle exec fastlane release_apk flavor:sky --verbose
|
||||
elif [[ $ENV_BUILD_TAG =~ $regex ]]; then
|
||||
echo "===build release===$ENV_BUILD_TAG"
|
||||
bundle exec fastlane release_apk flavor:sky --verbose
|
||||
bundle exec fastlane release_bundle flavor:sky --verbose
|
||||
elif [[ "${ENV_BUILD_BRANCH}" == "develop_sky" ]]; then
|
||||
echo "===build dev===${NEXT_VERSION}"
|
||||
regex='^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z]+\.[0-9]+)?$'
|
||||
if [[ $ENV_BUILD_TAG =~ $regex ]]; then
|
||||
echo "===Building xhj release==="
|
||||
bundle exec fastlane release flavor:xhj --verbose
|
||||
bundle exec fastlane release flavor:sky --verbose
|
||||
elif [[ "${ENV_BUILD_BRANCH}" == "develop" ]]; then
|
||||
echo "===Building xhj dev==="
|
||||
bundle exec fastlane beta flavor:xhj env:dev --verbose
|
||||
bundle exec fastlane beta flavor:sky env:dev --verbose
|
||||
elif [[ "${ENV_BUILD_BRANCH}" == "release_sky" || "${ENV_BUILD_BRANCH}" == "feat_devops_sky" ]] ; then
|
||||
echo "===build pre===${NEXT_VERSION}"
|
||||
elif [[ "${ENV_BUILD_BRANCH}" == "release" ]] || [[ "${ENV_BUILD_BRANCH}" == "feat_devops" ]] ; then
|
||||
echo "===Building xhj pre==="
|
||||
bundle exec fastlane beta flavor:xhj env:pre --verbose
|
||||
bundle exec fastlane beta flavor:sky env:pre --verbose
|
||||
fi
|
||||
exit 0
|
||||
@ -18,12 +18,10 @@ default_platform(:android)
|
||||
$env_key_project_root = 'ENV_BUILD_WORKSPACE'
|
||||
$env_current_branch = 'ENV_BUILD_BRANCH'
|
||||
$env_current_tag = 'ENV_BUILD_TAG'
|
||||
$env_next_version = 'NEXT_VERSION'
|
||||
|
||||
$path_dir_build = File.join(ENV[$env_key_project_root],'')
|
||||
$current_branch = ENV[$env_current_branch]
|
||||
$current_tag = ENV[$env_current_tag]
|
||||
$next_version = ENV[$env_next_version]
|
||||
|
||||
$path_apk_output_dir = File.join($path_dir_build, 'build/app/outputs/flutter-apk')
|
||||
$path_bundle_output_dir = File.join($path_dir_build, 'build/app/outputs/bundle')
|
||||
@ -44,6 +42,10 @@ platform :android do
|
||||
print_header '🏁 Before All'
|
||||
print_log $current_branch
|
||||
print_log $current_tag
|
||||
print_log $path_file_preview_apk_default
|
||||
print_log $path_file_release_apk_default
|
||||
print_log $path_file_preview_apk_copy
|
||||
print_log $path_file_release_apk_copy
|
||||
Dir.chdir "../.." do
|
||||
sh('pwd')
|
||||
end
|
||||
@ -51,24 +53,23 @@ platform :android do
|
||||
|
||||
desc "Submit a new Beta Build to Pgy Beta"
|
||||
lane :beta do |options|
|
||||
flavor = options[:flavor]
|
||||
env = options[:env]
|
||||
UI.user_error!("flavor is required") unless flavor
|
||||
UI.user_error!("env is required") unless env
|
||||
print_log "build sky on #{env}"
|
||||
print_log "build #{flavor} on #{env}"
|
||||
build_number = Time.now.strftime("%Y%m%d%H")
|
||||
print_log "BuildNo #{build_number}"
|
||||
build_version = $next_version
|
||||
build_version = '1.0.0'
|
||||
print_log "build_version #{build_version}"
|
||||
commit_hash = last_git_commit
|
||||
short_hash = commit_hash[:abbreviated_commit_hash]
|
||||
print_log "last_git_commit_short_hash #{short_hash}"
|
||||
remove_zone_pre_build(zone:"com")
|
||||
Dir.chdir "../.." do
|
||||
sh("flutter","clean")
|
||||
sh("flutter","pub","get")
|
||||
sh("flutter", "build", "apk", "--no-tree-shake-icons", "--release", "--flavor", "sky_#{env}", "-t", "lib/main_sky_#{env}.dart", "--build-number=#{build_number}", "--build-name=#{build_version}")
|
||||
sh("flutter", "build", "apk", "--no-tree-shake-icons", "--release", "--flavor", "#{flavor}_#{env}", "-t", "lib/main_#{flavor}_#{env}.dart", "--build-number=#{build_number}", "--build-name=#{build_version}")
|
||||
end
|
||||
old_file_path = File.join($path_apk_output_dir, "app-sky_#{env}-release.apk")
|
||||
new_file_path = File.join($path_apk_output_dir, "starlock-sky-preview-#{build_version}.apk")
|
||||
old_file_path = File.join($path_apk_output_dir, "app-#{flavor}_#{env}-release.apk")
|
||||
new_file_path = File.join($path_apk_output_dir, "starlock-#{flavor}-preview-#{build_version}.apk")
|
||||
File.rename(old_file_path, new_file_path)
|
||||
logs = changelog_from_git_commits(
|
||||
pretty: '- %s (%cn)',
|
||||
@ -79,8 +80,10 @@ platform :android do
|
||||
end
|
||||
|
||||
desc "Build & upload a new version to Gitlab Release"
|
||||
lane :release_apk do |options|
|
||||
print_log "build sky"
|
||||
lane :release do |options|
|
||||
flavor = options[:flavor]
|
||||
UI.user_error!("flavor is required") unless flavor
|
||||
print_log "build flavor for: #{flavor}"
|
||||
build_number = Time.now.strftime("%Y%m%d%H")
|
||||
print_log "BuildNo #{build_number}"
|
||||
build_version = $current_tag.match(/^v(\d+\.\d+\.\d+)/).captures[0]
|
||||
@ -88,33 +91,17 @@ platform :android do
|
||||
commit_hash = last_git_commit
|
||||
short_hash = commit_hash[:abbreviated_commit_hash]
|
||||
print_log "last_git_commit_short_hash #{short_hash}"
|
||||
remove_zone_pre_build(zone:"com")
|
||||
Dir.chdir "../.." do
|
||||
sh("flutter","pub","get")
|
||||
sh("flutter", "build", "apk", "--no-tree-shake-icons", "--release", "--flavor", "sky", "-t", "lib/main_sky_lite.dart", "--build-number=#{build_number}", "--build-name=#{build_version}")
|
||||
sh("flutter", "build", "apk", "--no-tree-shake-icons", "--release", "--flavor", "#{flavor}", "-t", "lib/main_#{flavor}_lite.dart", "--build-number=#{build_number}", "--build-name=#{build_version}")
|
||||
end
|
||||
old_apk_file_path = File.join($path_apk_output_dir, "app-sky-release.apk")
|
||||
new_apk_file_path = File.join($path_apk_output_dir, "starlock-sky-release-"+$current_tag+".apk")
|
||||
old_apk_file_path = File.join($path_apk_output_dir, "app-#{flavor}-release.apk")
|
||||
new_apk_file_path = File.join($path_apk_output_dir, "starlock-#{flavor}-release-"+$current_tag+".apk")
|
||||
File.rename(old_apk_file_path, new_apk_file_path)
|
||||
end
|
||||
|
||||
desc "Build & upload a new version to Gitlab Release"
|
||||
lane :release_bundle do |options|
|
||||
print_log "build sky"
|
||||
build_number = Time.now.strftime("%Y%m%d%H")
|
||||
print_log "BuildNo #{build_number}"
|
||||
build_version = $current_tag.match(/^v(\d+\.\d+\.\d+)/).captures[0]
|
||||
print_log "buildVersion #{build_version}"
|
||||
commit_hash = last_git_commit
|
||||
short_hash = commit_hash[:abbreviated_commit_hash]
|
||||
print_log "last_git_commit_short_hash #{short_hash}"
|
||||
remove_zone_pre_build(zone:"cn")
|
||||
Dir.chdir "../.." do
|
||||
sh("flutter","pub","get")
|
||||
sh("flutter", "build", "appbundle", "--no-tree-shake-icons", "--release", "--flavor", "sky", "-t", "lib/main_sky_lite.dart", "--build-number=#{build_number}", "--build-name=#{build_version}")
|
||||
sh("flutter", "build", "appbundle", "--no-tree-shake-icons", "--release", "--flavor", "#{flavor}", "-t", "lib/main_#{flavor}_lite.dart", "--build-number=#{build_number}", "--build-name=#{build_version}")
|
||||
end
|
||||
old_bundle_file_path = File.join($path_bundle_output_dir , "/skyRelease/app-sky-release.aab")
|
||||
new_bundle_file_path = File.join($path_bundle_output_dir , "/skyRelease/starlock-sky-release-"+$current_tag+".aab")
|
||||
old_bundle_file_path = File.join($path_bundle_output_dir , "/#{flavor}Release/app-#{flavor}-release.aab")
|
||||
new_bundle_file_path = File.join($path_bundle_output_dir , "/#{flavor}Release/starlock-#{flavor}-release-"+$current_tag+".aab")
|
||||
File.rename(old_bundle_file_path, new_bundle_file_path)
|
||||
sh('cp',new_bundle_file_path,$path_apk_output_dir)
|
||||
end
|
||||
@ -133,45 +120,4 @@ platform :android do
|
||||
File.delete(file)
|
||||
end
|
||||
end
|
||||
|
||||
lane :remove_zone_pre_build do |options|
|
||||
sh("git", "reset", "--hard")
|
||||
zone = options[:zone]
|
||||
UI.user_error!("Please provide valid 'zone'") unless zone
|
||||
pathList=["pubspec.yaml","/android/app/build.gradle","/lib/apm"]
|
||||
extensions = [".dart",".gradle"] #options[:extensions]
|
||||
if pathList.empty? || extensions.empty?
|
||||
UI.user_error!("Please provide valid 'paths' and 'extensions' arrays.")
|
||||
end
|
||||
puts "start prepare zone: #{zone},pathList:#{pathList},extensions:#{extensions}"
|
||||
regexp_List = [/#<#{zone}>.*?#<\/#{zone}>/m,/\/\/\<#{zone}\>.*?\/\/\<\/#{zone}\>/m]
|
||||
UI.message("Processed RegExpList: #{regexp_List}")
|
||||
def process_file(file_path, regexpList)
|
||||
content = File.read(file_path)
|
||||
regexpList.each do |tag|
|
||||
content = content.gsub(tag,'')
|
||||
end
|
||||
File.write(file_path, content)
|
||||
UI.message("Processed file: #{file_path},content :\n #{content}")
|
||||
end
|
||||
|
||||
pathList.each do |path|
|
||||
realPath = File.join($path_dir_build, path)
|
||||
if File.directory?(realPath)
|
||||
Dir.glob("#{realPath}/**/*").each do |file|
|
||||
if File.directory?(file)
|
||||
UI.message("Find child dir path: #{file}")
|
||||
elsif extensions.include?(File.extname(file))
|
||||
process_file(file,regexp_List)
|
||||
end
|
||||
end
|
||||
elsif File.file?(realPath)
|
||||
process_file(realPath,regexp_List)
|
||||
else
|
||||
UI.message("Invalid path: #{realPath}")
|
||||
end
|
||||
end
|
||||
UI.success("All matching content removed from specified files.")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@ -2,5 +2,4 @@ distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
#distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
|
||||
distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-7.4-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
|
||||
|
||||
BIN
assets/.DS_Store
vendored
Executable file
@ -1,119 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
<title>play</title>
|
||||
</head>
|
||||
<style>
|
||||
html {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
/* 防止滚动条出现 */
|
||||
}
|
||||
|
||||
body {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: white;
|
||||
overflow: hidden;
|
||||
/* 防止滚动条出现 */
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
#player {
|
||||
object-fit: cover;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
}
|
||||
</style>
|
||||
|
||||
<body>
|
||||
|
||||
<video autoplay muted poster="images/loader-thumb.jpg" id="player">
|
||||
</video>
|
||||
<script src="jmuxer.min.js"></script>
|
||||
<script>
|
||||
|
||||
if (typeof JMuxer === 'undefined') {
|
||||
console.error("JMuxer is not defined. Check if jmuxer.min.js is loaded correctly.");
|
||||
} else {
|
||||
console.log("JMuxer loaded successfully.");
|
||||
}
|
||||
let jmuxer;
|
||||
window.onload = function () {
|
||||
try {
|
||||
jmuxer = new JMuxer({
|
||||
node: 'player',
|
||||
mode: 'video',
|
||||
debug: false,
|
||||
readfpsfromtrack: true,
|
||||
flushingTime: 0, // 立即刷新
|
||||
clearBuffer: true, // 丢弃延迟帧
|
||||
fps: 25, // 强制指定帧率
|
||||
onReady: () => {
|
||||
console.log('播放器初始化完成');
|
||||
// 通知Flutter端准备就绪
|
||||
window.Flutter.postMessage('ready');
|
||||
},
|
||||
onMissingVideoFrames: (missingFrames) => {
|
||||
// console.log('Missing video frames:', missingFrames);
|
||||
},
|
||||
});
|
||||
} catch (e) {
|
||||
console.error("Error initializing JMuxer:", e);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
// Feed data from Flutter
|
||||
function feedDataFromFlutter(data) {
|
||||
const buffer = new Uint8Array(data);
|
||||
jmuxer.feed({
|
||||
video: buffer,
|
||||
duration: 40 // 每帧持续时间40ms(25fps)
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// Optional: notify Flutter
|
||||
function notifyFlutter(message) {
|
||||
if (window.Flutter) {
|
||||
window.Flutter.postMessage(message);
|
||||
} else {
|
||||
console.log("Flutter interface not found. Message: " + message);
|
||||
}
|
||||
}
|
||||
|
||||
// Function to return to Flutter page
|
||||
function returnToFlutter() {
|
||||
notifyFlutter("Returning to Flutter page");
|
||||
}
|
||||
|
||||
// 添加清理方法
|
||||
function cleanupJMuxer() {
|
||||
if (jmuxer) {
|
||||
try {
|
||||
jmuxer.destroy();
|
||||
jmuxer = null;
|
||||
console.log('JMuxer cleaned up successfully');
|
||||
window.Flutter.postMessage('cleanup_complete');
|
||||
} catch (e) {
|
||||
console.error('Error cleaning up JMuxer:', e);
|
||||
window.Flutter.postMessage('cleanup_error');
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
1
assets/html/jmuxer.min.js
vendored
@ -1 +0,0 @@
|
||||
{"flutter":{"platforms":{"android":{"default":{"projectId":"skychip2023-ecdff","appId":"1:281500445726:android:468195b9cc68dd6cc4d20f","fileOutput":"android/app/google-services.json"}},"ios":{"default":{"projectId":"skychip2023-ecdff","appId":"1:281500445726:ios:b194ccffb92fb86cc4d20f","uploadDebugSymbols":false,"fileOutput":"ios/Runner/GoogleService-Info.plist"}},"dart":{"lib/firebase_options.dart":{"projectId":"skychip2023-ecdff","configurations":{"android":"1:281500445726:android:468195b9cc68dd6cc4d20f","ios":"1:281500445726:ios:b194ccffb92fb86cc4d20f"}}}}}}
|
||||
BIN
images/.DS_Store
vendored
Executable file
|
Before Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 349 B |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 214 KiB |
|
Before Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 354 KiB |
|
Before Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
BIN
ios/.DS_Store
vendored
Executable file
1
ios/.gitignore
vendored
@ -7,7 +7,6 @@
|
||||
**/*sync/
|
||||
.sconsign.dblite
|
||||
.tags*
|
||||
.DS_Store
|
||||
**/.vagrant/
|
||||
**/DerivedData/
|
||||
Icon?
|
||||
|
||||
@ -3,6 +3,5 @@ source "https://rubygems.org"
|
||||
gem "fastlane"
|
||||
gem 'cocoapods', '1.14.3'
|
||||
gem 'public_suffix', '~> 4.0'
|
||||
gem 'nkf', '0.2.0'
|
||||
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
|
||||
eval_gemfile(plugins_path) if File.exist?(plugins_path)
|
||||
|
||||
@ -282,7 +282,6 @@ DEPENDENCIES
|
||||
cocoapods (= 1.14.3)
|
||||
fastlane
|
||||
fastlane-plugin-pgyer
|
||||
nkf (= 0.2.0)
|
||||
public_suffix (~> 4.0)
|
||||
|
||||
BUNDLED WITH
|
||||
|
||||
@ -1,31 +0,0 @@
|
||||
import Foundation
|
||||
import UIKit
|
||||
import LiveCommunicationKit
|
||||
|
||||
@objc class LCKBridge: NSObject {
|
||||
@objc static func presentCallInterfaceFromRootVC(_ rootVC: UIViewController, callerName: String) {
|
||||
if #available(iOS 17.4, *) {
|
||||
// 配置ConversationManager
|
||||
let config = ConversationManager.Configuration(
|
||||
ringtoneName: "notes_of_the_optimistic",
|
||||
iconTemplateImageData: UIImage(named: "AppIcon")?.pngData(),
|
||||
maximumConversationGroups: 1,
|
||||
maximumConversationsPerConversationGroup: 1,
|
||||
includesConversationInRecents: false,
|
||||
supportsVideo: false,
|
||||
supportedHandleTypes: [.generic, .phoneNumber, .emailAddress]
|
||||
)
|
||||
let manager = ConversationManager(configuration: config)
|
||||
let local = Handle(type: .generic, value: callerName, displayName: callerName)
|
||||
let update = Conversation.Update(localMember: local, members: [local], activeRemoteMembers: [local])
|
||||
Task {
|
||||
do {
|
||||
try await manager.reportNewIncomingConversation(uuid: UUID(), update: update)
|
||||
print("成功报告新来电")
|
||||
} catch {
|
||||
print("报告新来电失败: \(error.localizedDescription)")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||