Merge branch 'master' into bugly
175
.gitlab-ci.yml
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
stages:
|
||||||
|
- test
|
||||||
|
- generate_tag_or_version
|
||||||
|
- build-artifacts
|
||||||
|
- release-artifacts
|
||||||
|
- notification
|
||||||
|
|
||||||
|
variables:
|
||||||
|
LC_ALL: "en_US.UTF-8"
|
||||||
|
LANG: "en_US.UTF-8"
|
||||||
|
|
||||||
|
|
||||||
|
.build_rule:
|
||||||
|
tags:
|
||||||
|
- macos
|
||||||
|
- flutter
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_BRANCH == "develop"
|
||||||
|
- if: $CI_COMMIT_BRANCH == "release"
|
||||||
|
- if: $CI_COMMIT_BRANCH =~ /feat_[a-zA-Z]+/
|
||||||
|
- if: $CI_COMMIT_BRANCH == "canary_release"
|
||||||
|
- if: $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z]+\.[0-9]+)?$/
|
||||||
|
|
||||||
|
.generate_tag_rule:
|
||||||
|
tags:
|
||||||
|
- macos
|
||||||
|
- flutter
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_BRANCH == "master"
|
||||||
|
|
||||||
|
.generate_next_version_rule:
|
||||||
|
tags:
|
||||||
|
- macos
|
||||||
|
- flutter
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_BRANCH == "develop"
|
||||||
|
- if: $CI_COMMIT_BRANCH == "release"
|
||||||
|
- if: $CI_COMMIT_BRANCH == "canary_release"
|
||||||
|
- if: $CI_COMMIT_BRANCH =~ /feat_[a-zA-Z]+/
|
||||||
|
|
||||||
|
.print_env:
|
||||||
|
stage: test
|
||||||
|
extends: .build_rule
|
||||||
|
before_script:
|
||||||
|
- java --version
|
||||||
|
- printenv | while IFS='=' read -r key value; do echo "$key=$value"; done
|
||||||
|
after_script:
|
||||||
|
- echo "finished"
|
||||||
|
|
||||||
|
.setup_fastlane_android:
|
||||||
|
extends: .build_rule
|
||||||
|
before_script:
|
||||||
|
- ls -li
|
||||||
|
- export NEXT_VERSION="$(cat app_new.version)"
|
||||||
|
- flutter pub get
|
||||||
|
- bundle install --gemfile android/Gemfile --quiet
|
||||||
|
cache:
|
||||||
|
paths:
|
||||||
|
- app_new.version
|
||||||
|
|
||||||
|
.setup_fastlane_ios:
|
||||||
|
extends: .build_rule
|
||||||
|
before_script:
|
||||||
|
- ls -li
|
||||||
|
- export NEXT_VERSION="$(cat app_new.version)"
|
||||||
|
- flutter pub get
|
||||||
|
- bundle install --gemfile ios/Gemfile --quiet
|
||||||
|
cache:
|
||||||
|
paths:
|
||||||
|
- app_new.version
|
||||||
|
|
||||||
|
test_lint_check:
|
||||||
|
stage: test
|
||||||
|
extends: .print_env
|
||||||
|
script:
|
||||||
|
- echo "run lint check or per-test here"
|
||||||
|
tags:
|
||||||
|
- macos
|
||||||
|
- flutter
|
||||||
|
|
||||||
|
generate_git_tag:
|
||||||
|
stage: generate_tag_or_version
|
||||||
|
extends: .generate_tag_rule
|
||||||
|
before_script:
|
||||||
|
- project_url=$(echo $CI_PROJECT_URL | sed 's/http:\/\///')
|
||||||
|
- echo "project_url:$project_url"
|
||||||
|
- 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
|
||||||
|
|
||||||
|
build_android:
|
||||||
|
stage: build-artifacts
|
||||||
|
extends: .setup_fastlane_android
|
||||||
|
script: bash android/build.sh
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- build/app/outputs/flutter-apk/
|
||||||
|
|
||||||
|
build_ios:
|
||||||
|
stage: build-artifacts
|
||||||
|
extends: .setup_fastlane_ios
|
||||||
|
script:
|
||||||
|
- bash ios/build.sh
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- build/app/outputs/flutter-ipa
|
||||||
|
|
||||||
|
create-release:
|
||||||
|
stage: release-artifacts
|
||||||
|
extends: .build_rule
|
||||||
|
dependencies:
|
||||||
|
- build_android
|
||||||
|
- build_ios
|
||||||
|
needs:
|
||||||
|
- job: build_android
|
||||||
|
artifacts: true
|
||||||
|
- job: build_ios
|
||||||
|
artifacts: true
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_TAG
|
||||||
|
before_script:
|
||||||
|
- echo "start create release"
|
||||||
|
- bash release_description_generator.sh
|
||||||
|
- export RELEASE_DESCRIPTION="$(cat changelog.md)"
|
||||||
|
- echo "${RELEASE_DESCRIPTION}"
|
||||||
|
script:
|
||||||
|
- 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:
|
||||||
|
name: '$CI_COMMIT_TAG'
|
||||||
|
description: '$(cat changelog.md)'
|
||||||
|
tag_name: '$CI_COMMIT_TAG'
|
||||||
|
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'
|
||||||
6
android/Gemfile
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
source "https://rubygems.org"
|
||||||
|
|
||||||
|
gem "fastlane"
|
||||||
|
|
||||||
|
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
|
||||||
|
eval_gemfile(plugins_path) if File.exist?(plugins_path)
|
||||||
221
android/Gemfile.lock
Normal file
@ -0,0 +1,221 @@
|
|||||||
|
GEM
|
||||||
|
remote: https://rubygems.org/
|
||||||
|
specs:
|
||||||
|
CFPropertyList (3.0.7)
|
||||||
|
base64
|
||||||
|
nkf
|
||||||
|
rexml
|
||||||
|
addressable (2.8.7)
|
||||||
|
public_suffix (>= 2.0.2, < 7.0)
|
||||||
|
artifactory (3.0.17)
|
||||||
|
atomos (0.1.3)
|
||||||
|
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.651.0)
|
||||||
|
aws-sigv4 (~> 1.9)
|
||||||
|
jmespath (~> 1, >= 1.6.1)
|
||||||
|
aws-sdk-kms (1.94.0)
|
||||||
|
aws-sdk-core (~> 3, >= 3.207.0)
|
||||||
|
aws-sigv4 (~> 1.5)
|
||||||
|
aws-sdk-s3 (1.166.0)
|
||||||
|
aws-sdk-core (~> 3, >= 3.207.0)
|
||||||
|
aws-sdk-kms (~> 1)
|
||||||
|
aws-sigv4 (~> 1.5)
|
||||||
|
aws-sigv4 (1.10.0)
|
||||||
|
aws-eventstream (~> 1, >= 1.0.2)
|
||||||
|
babosa (1.0.4)
|
||||||
|
base64 (0.2.0)
|
||||||
|
claide (1.1.0)
|
||||||
|
colored (1.2)
|
||||||
|
colored2 (3.1.2)
|
||||||
|
commander (4.6.0)
|
||||||
|
highline (~> 2.0.0)
|
||||||
|
declarative (0.0.20)
|
||||||
|
digest-crc (0.6.5)
|
||||||
|
rake (>= 12.0.0, < 14.0.0)
|
||||||
|
domain_name (0.5.20190701)
|
||||||
|
unf (>= 0.0.5, < 1.0.0)
|
||||||
|
dotenv (2.8.1)
|
||||||
|
emoji_regex (3.2.3)
|
||||||
|
excon (0.109.0)
|
||||||
|
faraday (1.10.4)
|
||||||
|
faraday-em_http (~> 1.0)
|
||||||
|
faraday-em_synchrony (~> 1.0)
|
||||||
|
faraday-excon (~> 1.1)
|
||||||
|
faraday-httpclient (~> 1.0)
|
||||||
|
faraday-multipart (~> 1.0)
|
||||||
|
faraday-net_http (~> 1.0)
|
||||||
|
faraday-net_http_persistent (~> 1.0)
|
||||||
|
faraday-patron (~> 1.0)
|
||||||
|
faraday-rack (~> 1.0)
|
||||||
|
faraday-retry (~> 1.0)
|
||||||
|
ruby2_keywords (>= 0.0.4)
|
||||||
|
faraday-cookie_jar (0.0.7)
|
||||||
|
faraday (>= 0.8.0)
|
||||||
|
http-cookie (~> 1.0.0)
|
||||||
|
faraday-em_http (1.0.0)
|
||||||
|
faraday-em_synchrony (1.0.0)
|
||||||
|
faraday-excon (1.1.0)
|
||||||
|
faraday-httpclient (1.0.1)
|
||||||
|
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)
|
||||||
|
faraday-rack (1.0.0)
|
||||||
|
faraday-retry (1.0.3)
|
||||||
|
faraday_middleware (1.2.1)
|
||||||
|
faraday (~> 1.0)
|
||||||
|
fastimage (2.3.1)
|
||||||
|
fastlane (2.222.0)
|
||||||
|
CFPropertyList (>= 2.3, < 4.0.0)
|
||||||
|
addressable (>= 2.8, < 3.0.0)
|
||||||
|
artifactory (~> 3.0)
|
||||||
|
aws-sdk-s3 (~> 1.0)
|
||||||
|
babosa (>= 1.0.3, < 2.0.0)
|
||||||
|
bundler (>= 1.12.0, < 3.0.0)
|
||||||
|
colored (~> 1.2)
|
||||||
|
commander (~> 4.6)
|
||||||
|
dotenv (>= 2.1.1, < 3.0.0)
|
||||||
|
emoji_regex (>= 0.1, < 4.0)
|
||||||
|
excon (>= 0.71.0, < 1.0.0)
|
||||||
|
faraday (~> 1.0)
|
||||||
|
faraday-cookie_jar (~> 0.0.6)
|
||||||
|
faraday_middleware (~> 1.0)
|
||||||
|
fastimage (>= 2.1.0, < 3.0.0)
|
||||||
|
gh_inspector (>= 1.1.2, < 2.0.0)
|
||||||
|
google-apis-androidpublisher_v3 (~> 0.3)
|
||||||
|
google-apis-playcustomapp_v1 (~> 0.1)
|
||||||
|
google-cloud-env (>= 1.6.0, < 2.0.0)
|
||||||
|
google-cloud-storage (~> 1.31)
|
||||||
|
highline (~> 2.0)
|
||||||
|
http-cookie (~> 1.0.5)
|
||||||
|
json (< 3.0.0)
|
||||||
|
jwt (>= 2.1.0, < 3)
|
||||||
|
mini_magick (>= 4.9.4, < 5.0.0)
|
||||||
|
multipart-post (>= 2.0.0, < 3.0.0)
|
||||||
|
naturally (~> 2.2)
|
||||||
|
optparse (>= 0.1.1, < 1.0.0)
|
||||||
|
plist (>= 3.1.0, < 4.0.0)
|
||||||
|
rubyzip (>= 2.0.0, < 3.0.0)
|
||||||
|
security (= 0.1.5)
|
||||||
|
simctl (~> 1.6.3)
|
||||||
|
terminal-notifier (>= 2.0.0, < 3.0.0)
|
||||||
|
terminal-table (~> 3)
|
||||||
|
tty-screen (>= 0.6.3, < 1.0.0)
|
||||||
|
tty-spinner (>= 0.8.0, < 1.0.0)
|
||||||
|
word_wrap (~> 1.0.0)
|
||||||
|
xcodeproj (>= 1.13.0, < 2.0.0)
|
||||||
|
xcpretty (~> 0.3.0)
|
||||||
|
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
|
||||||
|
fastlane-plugin-pgyer (0.2.9)
|
||||||
|
gh_inspector (1.1.3)
|
||||||
|
google-apis-androidpublisher_v3 (0.54.0)
|
||||||
|
google-apis-core (>= 0.11.0, < 2.a)
|
||||||
|
google-apis-core (0.11.3)
|
||||||
|
addressable (~> 2.5, >= 2.5.1)
|
||||||
|
googleauth (>= 0.16.2, < 2.a)
|
||||||
|
httpclient (>= 2.8.1, < 3.a)
|
||||||
|
mini_mime (~> 1.0)
|
||||||
|
representable (~> 3.0)
|
||||||
|
retriable (>= 2.0, < 4.a)
|
||||||
|
rexml
|
||||||
|
google-apis-iamcredentials_v1 (0.17.0)
|
||||||
|
google-apis-core (>= 0.11.0, < 2.a)
|
||||||
|
google-apis-playcustomapp_v1 (0.13.0)
|
||||||
|
google-apis-core (>= 0.11.0, < 2.a)
|
||||||
|
google-apis-storage_v1 (0.29.0)
|
||||||
|
google-apis-core (>= 0.11.0, < 2.a)
|
||||||
|
google-cloud-core (1.6.1)
|
||||||
|
google-cloud-env (>= 1.0, < 3.a)
|
||||||
|
google-cloud-errors (~> 1.0)
|
||||||
|
google-cloud-env (1.6.0)
|
||||||
|
faraday (>= 0.17.3, < 3.0)
|
||||||
|
google-cloud-errors (1.3.1)
|
||||||
|
google-cloud-storage (1.45.0)
|
||||||
|
addressable (~> 2.8)
|
||||||
|
digest-crc (~> 0.4)
|
||||||
|
google-apis-iamcredentials_v1 (~> 0.1)
|
||||||
|
google-apis-storage_v1 (~> 0.29.0)
|
||||||
|
google-cloud-core (~> 1.6)
|
||||||
|
googleauth (>= 0.16.2, < 2.a)
|
||||||
|
mini_mime (~> 1.0)
|
||||||
|
googleauth (1.8.1)
|
||||||
|
faraday (>= 0.17.3, < 3.a)
|
||||||
|
jwt (>= 1.4, < 3.0)
|
||||||
|
multi_json (~> 1.11)
|
||||||
|
os (>= 0.9, < 2.0)
|
||||||
|
signet (>= 0.16, < 2.a)
|
||||||
|
highline (2.0.3)
|
||||||
|
http-cookie (1.0.7)
|
||||||
|
domain_name (~> 0.5)
|
||||||
|
httpclient (2.8.3)
|
||||||
|
jmespath (1.6.2)
|
||||||
|
json (2.7.2)
|
||||||
|
jwt (2.9.1)
|
||||||
|
base64
|
||||||
|
mini_magick (4.13.2)
|
||||||
|
mini_mime (1.1.5)
|
||||||
|
multi_json (1.15.0)
|
||||||
|
multipart-post (2.4.1)
|
||||||
|
nanaimo (0.3.0)
|
||||||
|
naturally (2.2.1)
|
||||||
|
nkf (0.2.0)
|
||||||
|
optparse (0.5.0)
|
||||||
|
os (1.1.4)
|
||||||
|
plist (3.7.1)
|
||||||
|
public_suffix (5.1.1)
|
||||||
|
rake (13.2.1)
|
||||||
|
representable (3.2.0)
|
||||||
|
declarative (< 0.1.0)
|
||||||
|
trailblazer-option (>= 0.1.1, < 0.2.0)
|
||||||
|
uber (< 0.2.0)
|
||||||
|
retriable (3.1.2)
|
||||||
|
rexml (3.3.7)
|
||||||
|
rouge (2.0.7)
|
||||||
|
ruby2_keywords (0.0.5)
|
||||||
|
rubyzip (2.3.2)
|
||||||
|
security (0.1.5)
|
||||||
|
signet (0.18.0)
|
||||||
|
addressable (~> 2.8)
|
||||||
|
faraday (>= 0.17.5, < 3.a)
|
||||||
|
jwt (>= 1.5, < 3.0)
|
||||||
|
multi_json (~> 1.10)
|
||||||
|
simctl (1.6.10)
|
||||||
|
CFPropertyList
|
||||||
|
naturally
|
||||||
|
terminal-notifier (2.0.0)
|
||||||
|
terminal-table (3.0.2)
|
||||||
|
unicode-display_width (>= 1.1.1, < 3)
|
||||||
|
trailblazer-option (0.1.2)
|
||||||
|
tty-cursor (0.7.1)
|
||||||
|
tty-screen (0.8.2)
|
||||||
|
tty-spinner (0.9.3)
|
||||||
|
tty-cursor (~> 0.7)
|
||||||
|
uber (0.1.0)
|
||||||
|
unf (0.2.0)
|
||||||
|
unicode-display_width (2.6.0)
|
||||||
|
word_wrap (1.0.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.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)
|
||||||
|
|
||||||
|
PLATFORMS
|
||||||
|
ruby
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
fastlane
|
||||||
|
fastlane-plugin-pgyer
|
||||||
|
|
||||||
|
BUNDLED WITH
|
||||||
|
1.17.2
|
||||||
@ -106,10 +106,22 @@ android {
|
|||||||
dimension "flavor-type"
|
dimension "flavor-type"
|
||||||
applicationId "com.skychip.lock"
|
applicationId "com.skychip.lock"
|
||||||
signingConfig signingConfigs.sky
|
signingConfig signingConfigs.sky
|
||||||
resValue "string", "app_name", "斯凯智能"
|
resValue "string", "app_name", "锁通通"
|
||||||
manifestPlaceholders.JPUSH_PKGNAME = "com.skychip.lock"
|
manifestPlaceholders.JPUSH_PKGNAME = "com.skychip.lock"
|
||||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules-sky.pro'
|
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", "锁通通-P"
|
||||||
|
}
|
||||||
|
sky_dev {
|
||||||
|
dimension "flavor-type"
|
||||||
|
applicationId "com.skychip.lock.dev"
|
||||||
|
signingConfig signingConfigs.sky
|
||||||
|
resValue "string", "app_name", "锁通通-D"
|
||||||
|
}
|
||||||
xhj {
|
xhj {
|
||||||
dimension "flavor-type"
|
dimension "flavor-type"
|
||||||
applicationId "com.xhjcn.lock"
|
applicationId "com.xhjcn.lock"
|
||||||
@ -118,6 +130,18 @@ android {
|
|||||||
manifestPlaceholders.JPUSH_PKGNAME = "com.xhjcn.lock"
|
manifestPlaceholders.JPUSH_PKGNAME = "com.xhjcn.lock"
|
||||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules-xhj.pro'
|
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", "星星锁-P"
|
||||||
|
}
|
||||||
|
xhj_dev {
|
||||||
|
dimension "flavor-type"
|
||||||
|
applicationId "com.xhjcn.lock.dev"
|
||||||
|
signingConfig signingConfigs.xhj
|
||||||
|
resValue "string", "app_name", "星星锁-D"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----- END flavorDimensions (autogenerated by flutter_flavorizr) -----
|
// ----- END flavorDimensions (autogenerated by flutter_flavorizr) -----
|
||||||
@ -149,7 +173,7 @@ android {
|
|||||||
// You can update the following values to match your application needs.
|
// 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.
|
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
|
||||||
minSdkVersion 25
|
minSdkVersion 25
|
||||||
targetSdkVersion 33
|
targetSdkVersion 34
|
||||||
versionCode flutterVersionCode.toInteger()
|
versionCode flutterVersionCode.toInteger()
|
||||||
versionName flutterVersionName
|
versionName flutterVersionName
|
||||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||||
@ -227,6 +251,12 @@ android {
|
|||||||
productFlavors.xhj.signingConfig signingConfigs.xhj
|
productFlavors.xhj.signingConfig signingConfigs.xhj
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
applicationVariants.all { variant ->
|
||||||
|
variant.outputs.all {
|
||||||
|
outputFileName = "app-starlock-${variant.buildType.name}-${variant.flavorName}-${defaultConfig.versionName}.apk"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
flutter {
|
flutter {
|
||||||
@ -235,8 +265,9 @@ flutter {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||||
implementation('com.amap.api:location:5.6.0')
|
// implementation('com.amap.api:location:5.6.0')
|
||||||
implementation('com.amap.api:3dmap:8.1.0')
|
// implementation('com.amap.api:3dmap:8.1.0')
|
||||||
|
implementation('com.amap.api:3dmap-location-search:latest.integration')
|
||||||
|
|
||||||
implementation 'cn.jiguang.sdk:jpush:5.2.3'
|
implementation 'cn.jiguang.sdk:jpush:5.2.3'
|
||||||
// 接入华为厂商
|
// 接入华为厂商
|
||||||
|
|||||||
96
android/app/src/sky/agconnect-services.json
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
{
|
||||||
|
"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":"com.skychip.lock"
|
||||||
|
},
|
||||||
|
"oauth_client":{
|
||||||
|
"client_id":"110798531",
|
||||||
|
"client_type":1
|
||||||
|
},
|
||||||
|
"app_info":{
|
||||||
|
"app_id":"110798531",
|
||||||
|
"package_name":"com.skychip.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":"com.skychip.lock",
|
||||||
|
"client":{
|
||||||
|
"app_id":"110798531"
|
||||||
|
},
|
||||||
|
"app_info":{
|
||||||
|
"package_name":"com.skychip.lock",
|
||||||
|
"app_id":"110798531"
|
||||||
|
},
|
||||||
|
"oauth_client":{
|
||||||
|
"client_type":1,
|
||||||
|
"client_id":"110798531"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
96
android/app/src/sky_dev/agconnect-services.json
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
{
|
||||||
|
"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":"com.skychip.lock.dev"
|
||||||
|
},
|
||||||
|
"oauth_client":{
|
||||||
|
"client_id":"110798531",
|
||||||
|
"client_type":1
|
||||||
|
},
|
||||||
|
"app_info":{
|
||||||
|
"app_id":"110798531",
|
||||||
|
"package_name":"com.skychip.lock.dev"
|
||||||
|
},
|
||||||
|
"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":"com.skychip.lock.dev",
|
||||||
|
"client":{
|
||||||
|
"app_id":"110798531"
|
||||||
|
},
|
||||||
|
"app_info":{
|
||||||
|
"package_name":"com.skychip.lock.dev",
|
||||||
|
"app_id":"110798531"
|
||||||
|
},
|
||||||
|
"oauth_client":{
|
||||||
|
"client_type":1,
|
||||||
|
"client_id":"110798531"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
android/app/src/sky_dev/res/mipmap-hdpi/ic_launcher.png
Executable file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
android/app/src/sky_dev/res/mipmap-mdpi/ic_launcher.png
Executable file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
android/app/src/sky_dev/res/mipmap-xhdpi/ic_launcher.png
Executable file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
android/app/src/sky_dev/res/mipmap-xxhdpi/ic_launcher.png
Executable file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
android/app/src/sky_dev/res/mipmap-xxxhdpi/ic_launcher.png
Executable file
|
After Width: | Height: | Size: 6.5 KiB |
96
android/app/src/sky_pre/agconnect-services.json
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
{
|
||||||
|
"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":"com.skychip.lock.pre"
|
||||||
|
},
|
||||||
|
"oauth_client":{
|
||||||
|
"client_id":"110798531",
|
||||||
|
"client_type":1
|
||||||
|
},
|
||||||
|
"app_info":{
|
||||||
|
"app_id":"110798531",
|
||||||
|
"package_name":"com.skychip.lock.pre"
|
||||||
|
},
|
||||||
|
"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":"com.skychip.lock.pre",
|
||||||
|
"client":{
|
||||||
|
"app_id":"110798531"
|
||||||
|
},
|
||||||
|
"app_info":{
|
||||||
|
"package_name":"com.skychip.lock.pre",
|
||||||
|
"app_id":"110798531"
|
||||||
|
},
|
||||||
|
"oauth_client":{
|
||||||
|
"client_type":1,
|
||||||
|
"client_id":"110798531"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
android/app/src/sky_pre/res/mipmap-hdpi/ic_launcher.png
Executable file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
android/app/src/sky_pre/res/mipmap-mdpi/ic_launcher.png
Executable file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
android/app/src/sky_pre/res/mipmap-xhdpi/ic_launcher.png
Executable file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
android/app/src/sky_pre/res/mipmap-xxhdpi/ic_launcher.png
Executable file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
android/app/src/sky_pre/res/mipmap-xxxhdpi/ic_launcher.png
Executable file
|
After Width: | Height: | Size: 6.5 KiB |
96
android/app/src/xhj_dev/agconnect-services.json
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
{
|
||||||
|
"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":"com.xhjcn.lock.dev"
|
||||||
|
},
|
||||||
|
"oauth_client":{
|
||||||
|
"client_id":"110798531",
|
||||||
|
"client_type":1
|
||||||
|
},
|
||||||
|
"app_info":{
|
||||||
|
"app_id":"110798531",
|
||||||
|
"package_name":"com.xhjcn.lock.dev"
|
||||||
|
},
|
||||||
|
"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":"com.xhjcn.lock.dev",
|
||||||
|
"client":{
|
||||||
|
"app_id":"110798531"
|
||||||
|
},
|
||||||
|
"app_info":{
|
||||||
|
"package_name":"com.xhjcn.lock.dev",
|
||||||
|
"app_id":"110798531"
|
||||||
|
},
|
||||||
|
"oauth_client":{
|
||||||
|
"client_type":1,
|
||||||
|
"client_id":"110798531"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
android/app/src/xhj_dev/res/mipmap-hdpi/ic_launcher.png
Executable file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
android/app/src/xhj_dev/res/mipmap-mdpi/ic_launcher.png
Executable file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
android/app/src/xhj_dev/res/mipmap-xhdpi/ic_launcher.png
Executable file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
android/app/src/xhj_dev/res/mipmap-xxhdpi/ic_launcher.png
Executable file
|
After Width: | Height: | Size: 6.0 KiB |
BIN
android/app/src/xhj_dev/res/mipmap-xxxhdpi/ic_launcher.png
Executable file
|
After Width: | Height: | Size: 8.4 KiB |
96
android/app/src/xhj_pre/agconnect-services.json
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
{
|
||||||
|
"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":"com.xhjcn.lock.pre"
|
||||||
|
},
|
||||||
|
"oauth_client":{
|
||||||
|
"client_id":"110798531",
|
||||||
|
"client_type":1
|
||||||
|
},
|
||||||
|
"app_info":{
|
||||||
|
"app_id":"110798531",
|
||||||
|
"package_name":"com.xhjcn.lock.pre"
|
||||||
|
},
|
||||||
|
"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":"com.xhjcn.lock.pre",
|
||||||
|
"client":{
|
||||||
|
"app_id":"110798531"
|
||||||
|
},
|
||||||
|
"app_info":{
|
||||||
|
"package_name":"com.xhjcn.lock.pre",
|
||||||
|
"app_id":"110798531"
|
||||||
|
},
|
||||||
|
"oauth_client":{
|
||||||
|
"client_type":1,
|
||||||
|
"client_id":"110798531"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
android/app/src/xhj_pre/res/mipmap-hdpi/ic_launcher.png
Executable file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
android/app/src/xhj_pre/res/mipmap-mdpi/ic_launcher.png
Executable file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
android/app/src/xhj_pre/res/mipmap-xhdpi/ic_launcher.png
Executable file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
android/app/src/xhj_pre/res/mipmap-xxhdpi/ic_launcher.png
Executable file
|
After Width: | Height: | Size: 6.0 KiB |
BIN
android/app/src/xhj_pre/res/mipmap-xxxhdpi/ic_launcher.png
Executable file
|
After Width: | Height: | Size: 8.4 KiB |
30
android/build.sh
Executable file
@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
echo "Build Params Info:Build Dir:$CI_PROJECT_DIR,Build Tag:$CI_COMMIT_TAG,Build Branch:$CI_COMMIT_BRANCH,Build BUILD_REVISION:$CI_RUNNER_REVISION"
|
||||||
|
|
||||||
|
export ENV_BUILD_TAG=${CI_COMMIT_TAG}
|
||||||
|
export ENV_BUILD_BRANCH=${CI_COMMIT_BRANCH}
|
||||||
|
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}"
|
||||||
|
regex='^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z]+\.[0-9]+)?$'
|
||||||
|
if [[ "${ENV_BUILD_BRANCH}" == "canary_release" ]]; then
|
||||||
|
echo "===build canary_release: ${NEXT_VERSION}"
|
||||||
|
export ENV_BUILD_TAG=${NEXT_VERSION}
|
||||||
|
bundle exec fastlane release flavor:xhj --verbose
|
||||||
|
bundle exec fastlane release flavor:sky --verbose
|
||||||
|
elif [[ $ENV_BUILD_TAG =~ $regex ]]; then
|
||||||
|
echo "===build release===$ENV_BUILD_TAG"
|
||||||
|
bundle exec fastlane release flavor:xhj --verbose
|
||||||
|
bundle exec fastlane release flavor:sky --verbose
|
||||||
|
elif [[ "${ENV_BUILD_BRANCH}" == "develop" ]]; then
|
||||||
|
echo "===build dev===${NEXT_VERSION}"
|
||||||
|
bundle exec fastlane beta flavor:xhj env:dev --verbose
|
||||||
|
bundle exec fastlane beta flavor:sky env:dev --verbose
|
||||||
|
elif [[ "${ENV_BUILD_BRANCH}" == "release" ]] || [[ "${ENV_BUILD_BRANCH}" == "feat_devops" ]] ; then
|
||||||
|
echo "===build pre===${NEXT_VERSION}"
|
||||||
|
bundle exec fastlane beta flavor:xhj env:pre --verbose
|
||||||
|
bundle exec fastlane beta flavor:sky env:pre --verbose
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
2
android/fastlane/Appfile
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
json_key_file("") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one
|
||||||
|
package_name("") # e.g. com.krausefx.app
|
||||||
125
android/fastlane/Fastfile
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
# This file contains the fastlane.tools configuration
|
||||||
|
# You can find the documentation at https://docs.fastlane.tools
|
||||||
|
#
|
||||||
|
# For a list of all available actions, check out
|
||||||
|
#
|
||||||
|
# https://docs.fastlane.tools/actions
|
||||||
|
#
|
||||||
|
# For a list of all available plugins, check out
|
||||||
|
#
|
||||||
|
# https://docs.fastlane.tools/plugins/available-plugins
|
||||||
|
#
|
||||||
|
|
||||||
|
# Uncomment the line if you want fastlane to automatically update itself
|
||||||
|
# update_fastlane
|
||||||
|
|
||||||
|
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')
|
||||||
|
|
||||||
|
|
||||||
|
def print_header header
|
||||||
|
UI.message "~~~~~~~~~~~~~~~~~~~~~~"
|
||||||
|
UI.message '📍 ' + header.to_s
|
||||||
|
UI.message "~~~~~~~~~~~~~~~~~~~~~~"
|
||||||
|
end
|
||||||
|
|
||||||
|
def print_log(content)
|
||||||
|
UI.message '📠 ' + content.to_s
|
||||||
|
end
|
||||||
|
|
||||||
|
platform :android do
|
||||||
|
before_all 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
|
||||||
|
end
|
||||||
|
|
||||||
|
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 #{flavor} on #{env}"
|
||||||
|
build_number = Time.now.strftime("%Y%m%d%H")
|
||||||
|
print_log "BuildNo #{build_number}"
|
||||||
|
build_version = $next_version
|
||||||
|
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}"
|
||||||
|
Dir.chdir "../.." do
|
||||||
|
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-#{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)',
|
||||||
|
commits_count: 5,
|
||||||
|
merge_commit_filtering: 'exclude_merges'
|
||||||
|
)
|
||||||
|
upload_file_to_pgy(directory:$path_apk_output_dir,file_extension:".apk",logs:logs)
|
||||||
|
end
|
||||||
|
|
||||||
|
desc "Build & upload a new version to Gitlab Release"
|
||||||
|
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]
|
||||||
|
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}"
|
||||||
|
Dir.chdir "../.." do
|
||||||
|
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-#{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)
|
||||||
|
Dir.chdir "../.." do
|
||||||
|
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 , "/#{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
|
||||||
|
|
||||||
|
lane :upload_file_to_pgy do |options|
|
||||||
|
directory = options[:directory]
|
||||||
|
file_extension = options[:file_extension]
|
||||||
|
logs = options[:logs]
|
||||||
|
UI.user_error!("Directory path is required") unless directory
|
||||||
|
UI.user_error!("File extension is required") unless file_extension
|
||||||
|
# 使用Dir.glob来查找目录下的所有.apk和.ipa文件
|
||||||
|
Dir.glob("#{directory}/*#{file_extension}").each do |file|
|
||||||
|
# 打印文件名称
|
||||||
|
puts "start upload file: #{file}"
|
||||||
|
pgyer(api_key: ENV['PGY_API_KEY'],apk:file,update_description: logs)
|
||||||
|
File.delete(file)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
5
android/fastlane/Pluginfile
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Autogenerated by fastlane
|
||||||
|
#
|
||||||
|
# Ensure this file is checked in to source control!
|
||||||
|
|
||||||
|
gem 'fastlane-plugin-pgyer'
|
||||||
6
ios/Flutter/localDebug.xcconfig
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include "Generated.xcconfig"
|
||||||
|
|
||||||
|
FLUTTER_TARGET=lib/main_local.dart
|
||||||
|
ASSET_PREFIX=local
|
||||||
|
BUNDLE_NAME=星锁-local
|
||||||
|
BUNDLE_DISPLAY_NAME=星锁-local
|
||||||
@ -2,5 +2,5 @@
|
|||||||
|
|
||||||
FLUTTER_TARGET=lib/main_sky_full.dart
|
FLUTTER_TARGET=lib/main_sky_full.dart
|
||||||
ASSET_PREFIX=sky
|
ASSET_PREFIX=sky
|
||||||
BUNDLE_NAME=斯凯智能
|
BUNDLE_NAME=锁通通
|
||||||
BUNDLE_DISPLAY_NAME=斯凯智能
|
BUNDLE_DISPLAY_NAME=锁通通
|
||||||
|
|||||||
6
ios/Flutter/skyDevRelease.xcconfig
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include "Generated.xcconfig"
|
||||||
|
|
||||||
|
FLUTTER_TARGET=lib/main_sky_dev.dart
|
||||||
|
ASSET_PREFIX=sky
|
||||||
|
BUNDLE_NAME=锁通通-D
|
||||||
|
BUNDLE_DISPLAY_NAME=锁通通-D
|
||||||
6
ios/Flutter/skyPreviewRelease.xcconfig
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include "Generated.xcconfig"
|
||||||
|
|
||||||
|
FLUTTER_TARGET=lib/main_sky_pre.dart
|
||||||
|
ASSET_PREFIX=sky
|
||||||
|
BUNDLE_NAME=锁通通-P
|
||||||
|
BUNDLE_DISPLAY_NAME=锁通通-P
|
||||||
@ -2,5 +2,5 @@
|
|||||||
|
|
||||||
FLUTTER_TARGET=lib/main_sky_full.dart
|
FLUTTER_TARGET=lib/main_sky_full.dart
|
||||||
ASSET_PREFIX=sky
|
ASSET_PREFIX=sky
|
||||||
BUNDLE_NAME=斯凯智能
|
BUNDLE_NAME=锁通通
|
||||||
BUNDLE_DISPLAY_NAME=斯凯智能
|
BUNDLE_DISPLAY_NAME=锁通通
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
#include "Generated.xcconfig"
|
#include "Generated.xcconfig"
|
||||||
|
|
||||||
FLUTTER_TARGET=lib/main_sky_full.dart
|
FLUTTER_TARGET=lib/main_sky_lite.dart
|
||||||
ASSET_PREFIX=sky
|
ASSET_PREFIX=sky
|
||||||
BUNDLE_NAME=斯凯智能
|
BUNDLE_NAME=锁通通
|
||||||
BUNDLE_DISPLAY_NAME=斯凯智能
|
BUNDLE_DISPLAY_NAME=锁通通
|
||||||
|
|||||||
6
ios/Flutter/xhjDevRelease.xcconfig
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include "Generated.xcconfig"
|
||||||
|
|
||||||
|
FLUTTER_TARGET=lib/main_xhj_dev.dart
|
||||||
|
ASSET_PREFIX=xhj
|
||||||
|
BUNDLE_NAME=星星锁-D
|
||||||
|
BUNDLE_DISPLAY_NAME=星星锁-D
|
||||||
6
ios/Flutter/xhjPreviewRelease.xcconfig
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include "Generated.xcconfig"
|
||||||
|
|
||||||
|
FLUTTER_TARGET=lib/main_xhj_pre.dart
|
||||||
|
ASSET_PREFIX=xhj
|
||||||
|
BUNDLE_NAME=星星锁-P
|
||||||
|
BUNDLE_DISPLAY_NAME=星星锁-P
|
||||||
7
ios/Gemfile
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
source "https://rubygems.org"
|
||||||
|
|
||||||
|
gem "fastlane"
|
||||||
|
gem 'cocoapods', '1.14.3'
|
||||||
|
gem 'public_suffix', '~> 4.0'
|
||||||
|
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
|
||||||
|
eval_gemfile(plugins_path) if File.exist?(plugins_path)
|
||||||
288
ios/Gemfile.lock
Normal file
@ -0,0 +1,288 @@
|
|||||||
|
GEM
|
||||||
|
remote: https://rubygems.org/
|
||||||
|
specs:
|
||||||
|
CFPropertyList (3.0.7)
|
||||||
|
base64
|
||||||
|
nkf
|
||||||
|
rexml
|
||||||
|
activesupport (6.1.7.8)
|
||||||
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||||
|
i18n (>= 1.6, < 2)
|
||||||
|
minitest (>= 5.1)
|
||||||
|
tzinfo (~> 2.0)
|
||||||
|
zeitwerk (~> 2.3)
|
||||||
|
addressable (2.8.7)
|
||||||
|
public_suffix (>= 2.0.2, < 7.0)
|
||||||
|
algoliasearch (1.27.5)
|
||||||
|
httpclient (~> 2.8, >= 2.8.3)
|
||||||
|
json (>= 1.5.1)
|
||||||
|
artifactory (3.0.17)
|
||||||
|
atomos (0.1.3)
|
||||||
|
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.651.0)
|
||||||
|
aws-sigv4 (~> 1.9)
|
||||||
|
jmespath (~> 1, >= 1.6.1)
|
||||||
|
aws-sdk-kms (1.94.0)
|
||||||
|
aws-sdk-core (~> 3, >= 3.207.0)
|
||||||
|
aws-sigv4 (~> 1.5)
|
||||||
|
aws-sdk-s3 (1.166.0)
|
||||||
|
aws-sdk-core (~> 3, >= 3.207.0)
|
||||||
|
aws-sdk-kms (~> 1)
|
||||||
|
aws-sigv4 (~> 1.5)
|
||||||
|
aws-sigv4 (1.10.0)
|
||||||
|
aws-eventstream (~> 1, >= 1.0.2)
|
||||||
|
babosa (1.0.4)
|
||||||
|
base64 (0.2.0)
|
||||||
|
claide (1.1.0)
|
||||||
|
cocoapods (1.14.3)
|
||||||
|
addressable (~> 2.8)
|
||||||
|
claide (>= 1.0.2, < 2.0)
|
||||||
|
cocoapods-core (= 1.14.3)
|
||||||
|
cocoapods-deintegrate (>= 1.0.3, < 2.0)
|
||||||
|
cocoapods-downloader (>= 2.1, < 3.0)
|
||||||
|
cocoapods-plugins (>= 1.0.0, < 2.0)
|
||||||
|
cocoapods-search (>= 1.0.0, < 2.0)
|
||||||
|
cocoapods-trunk (>= 1.6.0, < 2.0)
|
||||||
|
cocoapods-try (>= 1.1.0, < 2.0)
|
||||||
|
colored2 (~> 3.1)
|
||||||
|
escape (~> 0.0.4)
|
||||||
|
fourflusher (>= 2.3.0, < 3.0)
|
||||||
|
gh_inspector (~> 1.0)
|
||||||
|
molinillo (~> 0.8.0)
|
||||||
|
nap (~> 1.0)
|
||||||
|
ruby-macho (>= 2.3.0, < 3.0)
|
||||||
|
xcodeproj (>= 1.23.0, < 2.0)
|
||||||
|
cocoapods-core (1.14.3)
|
||||||
|
activesupport (>= 5.0, < 8)
|
||||||
|
addressable (~> 2.8)
|
||||||
|
algoliasearch (~> 1.0)
|
||||||
|
concurrent-ruby (~> 1.1)
|
||||||
|
fuzzy_match (~> 2.0.4)
|
||||||
|
nap (~> 1.0)
|
||||||
|
netrc (~> 0.11)
|
||||||
|
public_suffix (~> 4.0)
|
||||||
|
typhoeus (~> 1.0)
|
||||||
|
cocoapods-deintegrate (1.0.5)
|
||||||
|
cocoapods-downloader (2.1)
|
||||||
|
cocoapods-plugins (1.0.0)
|
||||||
|
nap
|
||||||
|
cocoapods-search (1.0.1)
|
||||||
|
cocoapods-trunk (1.6.0)
|
||||||
|
nap (>= 0.8, < 2.0)
|
||||||
|
netrc (~> 0.11)
|
||||||
|
cocoapods-try (1.2.0)
|
||||||
|
colored (1.2)
|
||||||
|
colored2 (3.1.2)
|
||||||
|
commander (4.6.0)
|
||||||
|
highline (~> 2.0.0)
|
||||||
|
concurrent-ruby (1.3.4)
|
||||||
|
declarative (0.0.20)
|
||||||
|
digest-crc (0.6.5)
|
||||||
|
rake (>= 12.0.0, < 14.0.0)
|
||||||
|
domain_name (0.5.20190701)
|
||||||
|
unf (>= 0.0.5, < 1.0.0)
|
||||||
|
dotenv (2.8.1)
|
||||||
|
emoji_regex (3.2.3)
|
||||||
|
escape (0.0.4)
|
||||||
|
ethon (0.16.0)
|
||||||
|
ffi (>= 1.15.0)
|
||||||
|
excon (0.109.0)
|
||||||
|
faraday (1.10.4)
|
||||||
|
faraday-em_http (~> 1.0)
|
||||||
|
faraday-em_synchrony (~> 1.0)
|
||||||
|
faraday-excon (~> 1.1)
|
||||||
|
faraday-httpclient (~> 1.0)
|
||||||
|
faraday-multipart (~> 1.0)
|
||||||
|
faraday-net_http (~> 1.0)
|
||||||
|
faraday-net_http_persistent (~> 1.0)
|
||||||
|
faraday-patron (~> 1.0)
|
||||||
|
faraday-rack (~> 1.0)
|
||||||
|
faraday-retry (~> 1.0)
|
||||||
|
ruby2_keywords (>= 0.0.4)
|
||||||
|
faraday-cookie_jar (0.0.7)
|
||||||
|
faraday (>= 0.8.0)
|
||||||
|
http-cookie (~> 1.0.0)
|
||||||
|
faraday-em_http (1.0.0)
|
||||||
|
faraday-em_synchrony (1.0.0)
|
||||||
|
faraday-excon (1.1.0)
|
||||||
|
faraday-httpclient (1.0.1)
|
||||||
|
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)
|
||||||
|
faraday-rack (1.0.0)
|
||||||
|
faraday-retry (1.0.3)
|
||||||
|
faraday_middleware (1.2.1)
|
||||||
|
faraday (~> 1.0)
|
||||||
|
fastimage (2.3.1)
|
||||||
|
fastlane (2.222.0)
|
||||||
|
CFPropertyList (>= 2.3, < 4.0.0)
|
||||||
|
addressable (>= 2.8, < 3.0.0)
|
||||||
|
artifactory (~> 3.0)
|
||||||
|
aws-sdk-s3 (~> 1.0)
|
||||||
|
babosa (>= 1.0.3, < 2.0.0)
|
||||||
|
bundler (>= 1.12.0, < 3.0.0)
|
||||||
|
colored (~> 1.2)
|
||||||
|
commander (~> 4.6)
|
||||||
|
dotenv (>= 2.1.1, < 3.0.0)
|
||||||
|
emoji_regex (>= 0.1, < 4.0)
|
||||||
|
excon (>= 0.71.0, < 1.0.0)
|
||||||
|
faraday (~> 1.0)
|
||||||
|
faraday-cookie_jar (~> 0.0.6)
|
||||||
|
faraday_middleware (~> 1.0)
|
||||||
|
fastimage (>= 2.1.0, < 3.0.0)
|
||||||
|
gh_inspector (>= 1.1.2, < 2.0.0)
|
||||||
|
google-apis-androidpublisher_v3 (~> 0.3)
|
||||||
|
google-apis-playcustomapp_v1 (~> 0.1)
|
||||||
|
google-cloud-env (>= 1.6.0, < 2.0.0)
|
||||||
|
google-cloud-storage (~> 1.31)
|
||||||
|
highline (~> 2.0)
|
||||||
|
http-cookie (~> 1.0.5)
|
||||||
|
json (< 3.0.0)
|
||||||
|
jwt (>= 2.1.0, < 3)
|
||||||
|
mini_magick (>= 4.9.4, < 5.0.0)
|
||||||
|
multipart-post (>= 2.0.0, < 3.0.0)
|
||||||
|
naturally (~> 2.2)
|
||||||
|
optparse (>= 0.1.1, < 1.0.0)
|
||||||
|
plist (>= 3.1.0, < 4.0.0)
|
||||||
|
rubyzip (>= 2.0.0, < 3.0.0)
|
||||||
|
security (= 0.1.5)
|
||||||
|
simctl (~> 1.6.3)
|
||||||
|
terminal-notifier (>= 2.0.0, < 3.0.0)
|
||||||
|
terminal-table (~> 3)
|
||||||
|
tty-screen (>= 0.6.3, < 1.0.0)
|
||||||
|
tty-spinner (>= 0.8.0, < 1.0.0)
|
||||||
|
word_wrap (~> 1.0.0)
|
||||||
|
xcodeproj (>= 1.13.0, < 2.0.0)
|
||||||
|
xcpretty (~> 0.3.0)
|
||||||
|
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
|
||||||
|
fastlane-plugin-pgyer (0.2.9)
|
||||||
|
ffi (1.17.0)
|
||||||
|
fourflusher (2.3.1)
|
||||||
|
fuzzy_match (2.0.4)
|
||||||
|
gh_inspector (1.1.3)
|
||||||
|
google-apis-androidpublisher_v3 (0.54.0)
|
||||||
|
google-apis-core (>= 0.11.0, < 2.a)
|
||||||
|
google-apis-core (0.11.3)
|
||||||
|
addressable (~> 2.5, >= 2.5.1)
|
||||||
|
googleauth (>= 0.16.2, < 2.a)
|
||||||
|
httpclient (>= 2.8.1, < 3.a)
|
||||||
|
mini_mime (~> 1.0)
|
||||||
|
representable (~> 3.0)
|
||||||
|
retriable (>= 2.0, < 4.a)
|
||||||
|
rexml
|
||||||
|
google-apis-iamcredentials_v1 (0.17.0)
|
||||||
|
google-apis-core (>= 0.11.0, < 2.a)
|
||||||
|
google-apis-playcustomapp_v1 (0.13.0)
|
||||||
|
google-apis-core (>= 0.11.0, < 2.a)
|
||||||
|
google-apis-storage_v1 (0.29.0)
|
||||||
|
google-apis-core (>= 0.11.0, < 2.a)
|
||||||
|
google-cloud-core (1.6.1)
|
||||||
|
google-cloud-env (>= 1.0, < 3.a)
|
||||||
|
google-cloud-errors (~> 1.0)
|
||||||
|
google-cloud-env (1.6.0)
|
||||||
|
faraday (>= 0.17.3, < 3.0)
|
||||||
|
google-cloud-errors (1.3.1)
|
||||||
|
google-cloud-storage (1.45.0)
|
||||||
|
addressable (~> 2.8)
|
||||||
|
digest-crc (~> 0.4)
|
||||||
|
google-apis-iamcredentials_v1 (~> 0.1)
|
||||||
|
google-apis-storage_v1 (~> 0.29.0)
|
||||||
|
google-cloud-core (~> 1.6)
|
||||||
|
googleauth (>= 0.16.2, < 2.a)
|
||||||
|
mini_mime (~> 1.0)
|
||||||
|
googleauth (1.8.1)
|
||||||
|
faraday (>= 0.17.3, < 3.a)
|
||||||
|
jwt (>= 1.4, < 3.0)
|
||||||
|
multi_json (~> 1.11)
|
||||||
|
os (>= 0.9, < 2.0)
|
||||||
|
signet (>= 0.16, < 2.a)
|
||||||
|
highline (2.0.3)
|
||||||
|
http-cookie (1.0.7)
|
||||||
|
domain_name (~> 0.5)
|
||||||
|
httpclient (2.8.3)
|
||||||
|
i18n (1.14.6)
|
||||||
|
concurrent-ruby (~> 1.0)
|
||||||
|
jmespath (1.6.2)
|
||||||
|
json (2.7.2)
|
||||||
|
jwt (2.9.1)
|
||||||
|
base64
|
||||||
|
mini_magick (4.13.2)
|
||||||
|
mini_mime (1.1.5)
|
||||||
|
minitest (5.25.1)
|
||||||
|
molinillo (0.8.0)
|
||||||
|
multi_json (1.15.0)
|
||||||
|
multipart-post (2.4.1)
|
||||||
|
nanaimo (0.3.0)
|
||||||
|
nap (1.1.0)
|
||||||
|
naturally (2.2.1)
|
||||||
|
netrc (0.11.0)
|
||||||
|
nkf (0.2.0)
|
||||||
|
optparse (0.5.0)
|
||||||
|
os (1.1.4)
|
||||||
|
plist (3.7.1)
|
||||||
|
public_suffix (4.0.7)
|
||||||
|
rake (13.2.1)
|
||||||
|
representable (3.2.0)
|
||||||
|
declarative (< 0.1.0)
|
||||||
|
trailblazer-option (>= 0.1.1, < 0.2.0)
|
||||||
|
uber (< 0.2.0)
|
||||||
|
retriable (3.1.2)
|
||||||
|
rexml (3.3.7)
|
||||||
|
rouge (2.0.7)
|
||||||
|
ruby-macho (2.5.1)
|
||||||
|
ruby2_keywords (0.0.5)
|
||||||
|
rubyzip (2.3.2)
|
||||||
|
security (0.1.5)
|
||||||
|
signet (0.18.0)
|
||||||
|
addressable (~> 2.8)
|
||||||
|
faraday (>= 0.17.5, < 3.a)
|
||||||
|
jwt (>= 1.5, < 3.0)
|
||||||
|
multi_json (~> 1.10)
|
||||||
|
simctl (1.6.10)
|
||||||
|
CFPropertyList
|
||||||
|
naturally
|
||||||
|
terminal-notifier (2.0.0)
|
||||||
|
terminal-table (3.0.2)
|
||||||
|
unicode-display_width (>= 1.1.1, < 3)
|
||||||
|
trailblazer-option (0.1.2)
|
||||||
|
tty-cursor (0.7.1)
|
||||||
|
tty-screen (0.8.2)
|
||||||
|
tty-spinner (0.9.3)
|
||||||
|
tty-cursor (~> 0.7)
|
||||||
|
typhoeus (1.4.1)
|
||||||
|
ethon (>= 0.9.0)
|
||||||
|
tzinfo (2.0.6)
|
||||||
|
concurrent-ruby (~> 1.0)
|
||||||
|
uber (0.1.0)
|
||||||
|
unf (0.2.0)
|
||||||
|
unicode-display_width (2.6.0)
|
||||||
|
word_wrap (1.0.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.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)
|
||||||
|
zeitwerk (2.6.18)
|
||||||
|
|
||||||
|
PLATFORMS
|
||||||
|
ruby
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
cocoapods (= 1.14.3)
|
||||||
|
fastlane
|
||||||
|
fastlane-plugin-pgyer
|
||||||
|
public_suffix (~> 4.0)
|
||||||
|
|
||||||
|
BUNDLED WITH
|
||||||
|
1.17.2
|
||||||
1760
ios/Runner.xcodeproj/project.pbxproj
Executable file → Normal file
@ -84,6 +84,8 @@
|
|||||||
<string>应用请求相机,以便于拍摄照片,用于头像上传及人脸认证</string>
|
<string>应用请求相机,以便于拍摄照片,用于头像上传及人脸认证</string>
|
||||||
<key>NSContactsUsageDescription</key>
|
<key>NSContactsUsageDescription</key>
|
||||||
<string>Reason we need access to the contact list</string>
|
<string>Reason we need access to the contact list</string>
|
||||||
|
<key>NSFileProtectionKey</key>
|
||||||
|
<string>NSFileProtectionCompleteUntilFirstUserAuthentication</string>
|
||||||
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
|
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
|
||||||
<string>应用在前台和后台的时候可以搜到更新的位置信息</string>
|
<string>应用在前台和后台的时候可以搜到更新的位置信息</string>
|
||||||
<key>NSLocationAlwaysUsageDescription</key>
|
<key>NSLocationAlwaysUsageDescription</key>
|
||||||
@ -105,6 +107,8 @@
|
|||||||
<array>
|
<array>
|
||||||
<string>remote-notification</string>
|
<string>remote-notification</string>
|
||||||
</array>
|
</array>
|
||||||
|
<key>UIFileSharingEnabled</key>
|
||||||
|
<true/>
|
||||||
<key>UILaunchStoryboardName</key>
|
<key>UILaunchStoryboardName</key>
|
||||||
<string>xhjLaunchScreen</string>
|
<string>xhjLaunchScreen</string>
|
||||||
<key>UIMainStoryboardFile</key>
|
<key>UIMainStoryboardFile</key>
|
||||||
@ -121,10 +125,6 @@
|
|||||||
</array>
|
</array>
|
||||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>NSFileProtectionKey</key>
|
|
||||||
<string>NSFileProtectionCompleteUntilFirstUserAuthentication</string>
|
|
||||||
<key>UIFileSharingEnabled</key>
|
|
||||||
<true/>
|
|
||||||
<key>io.flutter.embedded_views_preview</key>
|
<key>io.flutter.embedded_views_preview</key>
|
||||||
<true/>
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
|
|||||||
@ -84,6 +84,8 @@
|
|||||||
<string>应用请求相机,以便于拍摄照片,用于头像上传及人脸认证</string>
|
<string>应用请求相机,以便于拍摄照片,用于头像上传及人脸认证</string>
|
||||||
<key>NSContactsUsageDescription</key>
|
<key>NSContactsUsageDescription</key>
|
||||||
<string>Reason we need access to the contact list</string>
|
<string>Reason we need access to the contact list</string>
|
||||||
|
<key>NSFileProtectionKey</key>
|
||||||
|
<string>NSFileProtectionCompleteUntilFirstUserAuthentication</string>
|
||||||
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
|
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
|
||||||
<string>应用在前台和后台的时候可以搜到更新的位置信息</string>
|
<string>应用在前台和后台的时候可以搜到更新的位置信息</string>
|
||||||
<key>NSLocationAlwaysUsageDescription</key>
|
<key>NSLocationAlwaysUsageDescription</key>
|
||||||
@ -105,6 +107,8 @@
|
|||||||
<array>
|
<array>
|
||||||
<string>remote-notification</string>
|
<string>remote-notification</string>
|
||||||
</array>
|
</array>
|
||||||
|
<key>UIFileSharingEnabled</key>
|
||||||
|
<true/>
|
||||||
<key>UILaunchStoryboardName</key>
|
<key>UILaunchStoryboardName</key>
|
||||||
<string>xhjLaunchScreen</string>
|
<string>xhjLaunchScreen</string>
|
||||||
<key>UIMainStoryboardFile</key>
|
<key>UIMainStoryboardFile</key>
|
||||||
@ -121,10 +125,6 @@
|
|||||||
</array>
|
</array>
|
||||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>NSFileProtectionKey</key>
|
|
||||||
<string>NSFileProtectionCompleteUntilFirstUserAuthentication</string>
|
|
||||||
<key>UIFileSharingEnabled</key>
|
|
||||||
<true/>
|
|
||||||
<key>io.flutter.embedded_views_preview</key>
|
<key>io.flutter.embedded_views_preview</key>
|
||||||
<true/>
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
|
|||||||
31
ios/build.sh
Executable file
@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
echo "Build Params Info:Build Dir:$CI_PROJECT_DIR,Build Tag:$CI_COMMIT_TAG,Build Branch:$CI_COMMIT_BRANCH,Build BUILD_REVISION:$CI_RUNNER_REVISION"
|
||||||
|
|
||||||
|
export ENV_BUILD_TAG=${CI_COMMIT_TAG}
|
||||||
|
export ENV_BUILD_BRANCH=${CI_COMMIT_BRANCH}
|
||||||
|
export ENV_BUILD_WORKSPACE=${CI_PROJECT_DIR}
|
||||||
|
echo "GITLAB_WORKSPACE: ${CI_PROJECT_DIR}"
|
||||||
|
cd ${CI_PROJECT_DIR}/ios
|
||||||
|
bundle exec pod install
|
||||||
|
echo "ENV_BUILD_TAG:${ENV_BUILD_TAG},ENV_BUILD_BRANCH:${ENV_BUILD_BRANCH}"
|
||||||
|
regex='^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z]+\.[0-9]+)?$'
|
||||||
|
if [[ "${ENV_BUILD_BRANCH}" == "canary_release" ]]; then
|
||||||
|
echo "===build canary_release: ${NEXT_VERSION}"
|
||||||
|
export ENV_BUILD_TAG=${NEXT_VERSION}
|
||||||
|
bundle exec fastlane release flavor:xhj --verbose
|
||||||
|
bundle exec fastlane release flavor:sky --verbose
|
||||||
|
elif [[ $ENV_BUILD_TAG =~ $regex ]]; then
|
||||||
|
echo "===build release===$ENV_BUILD_TAG"
|
||||||
|
bundle exec fastlane release flavor:xhj --verbose
|
||||||
|
bundle exec fastlane release flavor:sky --verbose
|
||||||
|
elif [[ "${ENV_BUILD_BRANCH}" == "develop" ]]; then
|
||||||
|
echo "===build dev===${NEXT_VERSION}"
|
||||||
|
bundle exec fastlane beta flavor:xhj env:dev --verbose
|
||||||
|
bundle exec fastlane beta flavor:sky env:dev --verbose
|
||||||
|
elif [[ "${ENV_BUILD_BRANCH}" == "release" ]] || [[ "${ENV_BUILD_BRANCH}" == "feat_devops" ]] ; then
|
||||||
|
echo "===build pre===${NEXT_VERSION}"
|
||||||
|
bundle exec fastlane beta flavor:xhj env:pre --verbose
|
||||||
|
bundle exec fastlane beta flavor:sky env:pre --verbose
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
6
ios/fastlane/Appfile
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# app_identifier("[[APP_IDENTIFIER]]") # The bundle identifier of your app
|
||||||
|
# apple_id("[[APPLE_ID]]") # Your Apple Developer Portal username
|
||||||
|
|
||||||
|
|
||||||
|
# For more information about the Appfile, see:
|
||||||
|
# https://docs.fastlane.tools/advanced/#appfile
|
||||||
224
ios/fastlane/Fastfile
Normal file
@ -0,0 +1,224 @@
|
|||||||
|
# This file contains the fastlane.tools configuration
|
||||||
|
# You can find the documentation at https://docs.fastlane.tools
|
||||||
|
#
|
||||||
|
# For a list of all available actions, check out
|
||||||
|
#
|
||||||
|
# https://docs.fastlane.tools/actions
|
||||||
|
#
|
||||||
|
# For a list of all available plugins, check out
|
||||||
|
#
|
||||||
|
# https://docs.fastlane.tools/plugins/available-plugins
|
||||||
|
#
|
||||||
|
|
||||||
|
# Uncomment the line if you want fastlane to automatically update itself
|
||||||
|
# update_fastlane
|
||||||
|
|
||||||
|
default_platform(:ios)
|
||||||
|
|
||||||
|
# setup_travis
|
||||||
|
|
||||||
|
# --- xhj Const ---
|
||||||
|
$signing_identity_xhj_distribution = 'iPhone Distribution: Shenzhen Xinhongjia Electronics Co., Ltd. (P8997RW3V8)'
|
||||||
|
$app_identifier = 'xhj'
|
||||||
|
$provisioning_name_adhoc = 'StarApt Project Mobile Ad Hoc'
|
||||||
|
$provisioning_name_distribution = 'StarApt Project Mobile Distribution'
|
||||||
|
$gym_config_sky_preview = 'Preview-xhj'
|
||||||
|
$gym_config_sky_release = 'Release'
|
||||||
|
|
||||||
|
# --- sky Const ---
|
||||||
|
$signing_identity_sky_distribution = 'iPhone Distribution: Shenzhen Xinhongjia Electronics Co., Ltd. (P8997RW3V8)'
|
||||||
|
$app_identifier = 'sky'
|
||||||
|
$provisioning_name_adhoc = 'StarApt Project Mobile Ad Hoc'
|
||||||
|
$provisioning_name_distribution = 'StarApt Project Mobile Distribution'
|
||||||
|
$gym_config_sky_preview = 'Preview-sky'
|
||||||
|
$gym_config_sky_release = 'Release'
|
||||||
|
|
||||||
|
|
||||||
|
# --- common Const ---
|
||||||
|
$match_type_adhoc = 'adhoc'
|
||||||
|
$match_type_appstore = 'appstore'
|
||||||
|
$gym_scheme = 'Runner'
|
||||||
|
$gym_workspace = 'Runner.xcworkspace'
|
||||||
|
|
||||||
|
|
||||||
|
$env_key_project_root = 'ENV_BUILD_WORKSPACE'
|
||||||
|
$env_current_branch = 'ENV_BUILD_BRANCH'
|
||||||
|
$env_current_tag = 'ENV_BUILD_TAG'
|
||||||
|
$env_key_fastlane_apple_auth_key = 'APPLE_AUTH_CONTENT'
|
||||||
|
$env_key_fastlane_apple_auth_issuer_key = 'APPLE_AUTH_ISSUER_ID'
|
||||||
|
$env_key_fastlane_apple_auth_id_key = 'APPLE_AUTH_KEY_ID'
|
||||||
|
$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]
|
||||||
|
|
||||||
|
$filename_ipa_default = 'app-starlock.ipa'
|
||||||
|
$filename_beta_ipa_copy = 'app-starlock-'+$current_branch+'.ipa'
|
||||||
|
$filename_release_ipa_copy = 'app-starlock-'+$current_tag+'.ipa'
|
||||||
|
|
||||||
|
$path_ipa_output_dir = File.join($path_dir_build, 'build/app/outputs/flutter-ipa')
|
||||||
|
# --- Lanes ---
|
||||||
|
platform :ios do
|
||||||
|
before_all do
|
||||||
|
print_header '🏁 Before All'
|
||||||
|
print_log $current_branch
|
||||||
|
print_log $current_tag
|
||||||
|
Dir.chdir "../.." do
|
||||||
|
sh('pwd')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
desc "Build & Deliver to Pgy"
|
||||||
|
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 #{flavor} on #{env}"
|
||||||
|
build_number = Time.now.strftime("%Y%m%d%H")
|
||||||
|
print_log "Build Commits #{build_number}"
|
||||||
|
build_version = $next_version # Time.now.strftime("%Y%m%d%H%M%S")
|
||||||
|
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}"
|
||||||
|
Dir.chdir "../.." do
|
||||||
|
sh("flutter", "build", "ios", "--no-tree-shake-icons", "--no-codesign", "--release", "--flavor", "#{flavor}", "-t", "lib/main_#{flavor}_#{env}.dart", "--build-number=#{build_number}", "--build-name=#{build_version}")
|
||||||
|
end
|
||||||
|
#set_bundle_short_version('./Runner/Info.plist', $current_branch)
|
||||||
|
gym_scheme_preview="#{flavor}"
|
||||||
|
print_log "gym_scheme_preview #{gym_scheme_preview}"
|
||||||
|
gym_configuration = "#{env}-release-#{flavor}"
|
||||||
|
print_log "gym_configuration #{gym_configuration}"
|
||||||
|
ipa_default_filename = "starlock-#{flavor}-preview-#{build_version}.ipa"
|
||||||
|
print_log "ipa_default_filename #{ipa_default_filename}"
|
||||||
|
gym(
|
||||||
|
scheme: gym_scheme_preview,
|
||||||
|
workspace: $gym_workspace,
|
||||||
|
configuration: gym_configuration,
|
||||||
|
output_directory: $path_ipa_output_dir,
|
||||||
|
output_name: ipa_default_filename,
|
||||||
|
export_method: "ad-hoc",
|
||||||
|
export_options: {
|
||||||
|
provisioningProfiles: {
|
||||||
|
"com.xhjcn.lock.dev" => "Adhoc_com.xhjcn.lock.dev.mobileprovision",
|
||||||
|
"com.xhjcn.lock.pre" => "Adhoc_com.xhjcn.lock.pre.mobileprovision",
|
||||||
|
"com.skychip.lock.dev" => "Adhoc_com.skychip.lock.dev.mobileprovision",
|
||||||
|
"com.skychip.lock.pre" => "Adhoc_com.skychip.lock.pre.mobileprovision",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
logs = changelog_from_git_commits(
|
||||||
|
pretty: '- %s (%cn)',
|
||||||
|
commits_count: 5,
|
||||||
|
merge_commit_filtering: 'exclude_merges'
|
||||||
|
)
|
||||||
|
upload_file_to_pgy(directory:$path_ipa_output_dir,file_extension:".ipa",logs:logs)
|
||||||
|
end
|
||||||
|
|
||||||
|
desc "Build & Deliver to App Store Connect"
|
||||||
|
lane :release do |options|
|
||||||
|
flavor = options[:flavor]
|
||||||
|
UI.user_error!("flavor is required") unless flavor
|
||||||
|
print_log "build flavor: #{flavor}"
|
||||||
|
build_number = Time.now.strftime("%Y%m%d%H")
|
||||||
|
print_log "Build Commits #{build_number}"
|
||||||
|
build_version = $current_tag.match(/^v(\d+\.\d+\.\d+)/).captures[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}"
|
||||||
|
Dir.chdir "../.." do
|
||||||
|
sh("flutter", "build", "ios", "--no-tree-shake-icons", "--no-codesign", "--release", "--flavor", "#{flavor}", "-t", "lib/main_#{flavor}_lite.dart", "--build-number=#{build_number}", "--build-name=#{build_version}")
|
||||||
|
end
|
||||||
|
gym_scheme_release="#{flavor}"
|
||||||
|
print_log "gym_scheme_release #{gym_scheme_release}"
|
||||||
|
gym_configuration = "Release-#{flavor}"
|
||||||
|
print_log "gym_configuration #{gym_configuration}"
|
||||||
|
ipa_default_filename = "starlock-#{flavor}-release-"+$current_tag+".ipa"
|
||||||
|
print_log "ipa_default_filename #{ipa_default_filename}"
|
||||||
|
gym(
|
||||||
|
scheme: gym_scheme_release,
|
||||||
|
workspace: $gym_workspace,
|
||||||
|
configuration: gym_configuration,
|
||||||
|
output_directory: $path_ipa_output_dir,
|
||||||
|
output_name: ipa_default_filename,
|
||||||
|
export_method: "app-store",
|
||||||
|
export_options: {
|
||||||
|
provisioningProfiles: {
|
||||||
|
"com.xhjcn.lock" => "Appstore_com.xhjcn.lock.mobileprovision",
|
||||||
|
"com.skychip.lock" => "Appstore_com.skychip.lock.mobileprovision",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
auth_key_prefix=flavor.upcase
|
||||||
|
print_log "auth_key_prefix #{auth_key_prefix}"
|
||||||
|
api_key = app_store_connect_api_key(
|
||||||
|
key_id: ENV["#{auth_key_prefix}_APPLE_AUTH_KEY_ID"],
|
||||||
|
issuer_id: ENV["#{auth_key_prefix}_APPLE_AUTH_ISSUER_ID"],
|
||||||
|
key_content: ENV["#{auth_key_prefix}_APPLE_AUTH_CONTENT"],
|
||||||
|
is_key_content_base64: true,
|
||||||
|
duration: 1200,
|
||||||
|
in_house: false
|
||||||
|
)
|
||||||
|
print_log "api_key #{api_key}"
|
||||||
|
ipa_file_path = File.join($path_ipa_output_dir, ipa_default_filename)
|
||||||
|
pilot(
|
||||||
|
api_key: api_key,
|
||||||
|
ipa: ipa_file_path,
|
||||||
|
skip_submission: true,
|
||||||
|
skip_waiting_for_build_processing: true
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
lane :upload_file_to_pgy do |options|
|
||||||
|
directory = options[:directory]
|
||||||
|
file_extension = options[:file_extension]
|
||||||
|
logs = options[:logs]
|
||||||
|
UI.user_error!("Directory path is required") unless directory
|
||||||
|
UI.user_error!("File extension is required") unless file_extension
|
||||||
|
# 使用Dir.glob来查找目录下的所有.apk和.ipa文件
|
||||||
|
Dir.glob("#{directory}/*#{file_extension}").each do |file|
|
||||||
|
# 打印文件名称
|
||||||
|
puts "start upload file: #{file}"
|
||||||
|
pgyer(api_key: ENV['PGY_API_KEY'],apk:file,update_description: logs)
|
||||||
|
File.delete(file)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# --- Prints ---
|
||||||
|
def print_title_log(title, content)
|
||||||
|
UI.message '📠 ' + title.to_s + ':'
|
||||||
|
print_log content
|
||||||
|
end
|
||||||
|
|
||||||
|
def print_log(content)
|
||||||
|
UI.message '📠 ' + content.to_s
|
||||||
|
end
|
||||||
|
|
||||||
|
def print_dir(path)
|
||||||
|
UI.message '📂📂📂 Print Dir 📂📂📂'
|
||||||
|
Dir.chdir(path) do
|
||||||
|
sh('ls -lh')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def print_header header
|
||||||
|
UI.message "~~~~~~~~~~~~~~~~~~~~~~"
|
||||||
|
UI.message '📍 ' + header.to_s
|
||||||
|
UI.message "~~~~~~~~~~~~~~~~~~~~~~"
|
||||||
|
end
|
||||||
|
|
||||||
|
# --- Methods ---
|
||||||
|
def set_bundle_short_version(plist_path, version_string)
|
||||||
|
print_header "Set Bundle short version"
|
||||||
|
print_log plist_path
|
||||||
|
print_log version_string
|
||||||
|
set_info_plist_value(path: plist_path, key: 'CFBundleShortVersionString', value: version_string)
|
||||||
|
end
|
||||||
5
ios/fastlane/Pluginfile
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Autogenerated by fastlane
|
||||||
|
#
|
||||||
|
# Ensure this file is checked in to source control!
|
||||||
|
|
||||||
|
gem 'fastlane-plugin-pgyer'
|
||||||
@ -5,7 +5,11 @@ enum Flavor {
|
|||||||
dev,
|
dev,
|
||||||
pre,
|
pre,
|
||||||
sky,
|
sky,
|
||||||
|
sky_dev,
|
||||||
|
sky_pre,
|
||||||
xhj,
|
xhj,
|
||||||
|
xhj_dev,
|
||||||
|
xhj_pre,
|
||||||
}
|
}
|
||||||
|
|
||||||
class StarLockAMapKey {
|
class StarLockAMapKey {
|
||||||
@ -28,8 +32,15 @@ class F {
|
|||||||
|
|
||||||
static String get name => appFlavor?.name ?? '';
|
static String get name => appFlavor?.name ?? '';
|
||||||
|
|
||||||
static bool get isXHJ => appFlavor == Flavor.xhj;
|
static bool get isXHJ =>
|
||||||
static bool get isSKY => appFlavor == Flavor.sky;
|
appFlavor == Flavor.xhj ||
|
||||||
|
appFlavor == Flavor.xhj_dev ||
|
||||||
|
appFlavor == Flavor.xhj_pre;
|
||||||
|
|
||||||
|
static bool get isSKY =>
|
||||||
|
appFlavor == Flavor.sky ||
|
||||||
|
appFlavor == Flavor.sky_dev ||
|
||||||
|
appFlavor == Flavor.sky_pre;
|
||||||
|
|
||||||
//便捷判断并返回值
|
//便捷判断并返回值
|
||||||
static dynamic sw(
|
static dynamic sw(
|
||||||
@ -39,6 +50,8 @@ class F {
|
|||||||
}
|
}
|
||||||
switch (appFlavor) {
|
switch (appFlavor) {
|
||||||
case Flavor.sky:
|
case Flavor.sky:
|
||||||
|
case Flavor.sky_dev:
|
||||||
|
case Flavor.sky_pre:
|
||||||
return skyCall();
|
return skyCall();
|
||||||
case Flavor.local:
|
case Flavor.local:
|
||||||
case Flavor.dev:
|
case Flavor.dev:
|
||||||
@ -58,8 +71,12 @@ class F {
|
|||||||
case Flavor.pre:
|
case Flavor.pre:
|
||||||
return '星锁-pre';
|
return '星锁-pre';
|
||||||
case Flavor.sky:
|
case Flavor.sky:
|
||||||
|
case Flavor.sky_dev:
|
||||||
|
case Flavor.sky_pre:
|
||||||
return '锁通通'.tr;
|
return '锁通通'.tr;
|
||||||
case Flavor.xhj:
|
case Flavor.xhj:
|
||||||
|
case Flavor.xhj_dev:
|
||||||
|
case Flavor.xhj_pre:
|
||||||
return '星星锁'.tr;
|
return '星星锁'.tr;
|
||||||
default:
|
default:
|
||||||
throw Exception('flavor[$name] title not found');
|
throw Exception('flavor[$name] title not found');
|
||||||
@ -75,8 +92,12 @@ class F {
|
|||||||
case Flavor.pre:
|
case Flavor.pre:
|
||||||
return '星锁'.tr;
|
return '星锁'.tr;
|
||||||
case Flavor.sky:
|
case Flavor.sky:
|
||||||
|
case Flavor.sky_dev:
|
||||||
|
case Flavor.sky_pre:
|
||||||
return '锁通通'.tr;
|
return '锁通通'.tr;
|
||||||
case Flavor.xhj:
|
case Flavor.xhj:
|
||||||
|
case Flavor.xhj_dev:
|
||||||
|
case Flavor.xhj_pre:
|
||||||
return '星星锁'.tr;
|
return '星星锁'.tr;
|
||||||
default:
|
default:
|
||||||
throw Exception('flavor[$name] title not found');
|
throw Exception('flavor[$name] title not found');
|
||||||
@ -87,11 +108,16 @@ class F {
|
|||||||
switch (appFlavor) {
|
switch (appFlavor) {
|
||||||
case Flavor.local:
|
case Flavor.local:
|
||||||
// return 'https://ge.lock.star-lock.cn'; // 葛工
|
// return 'https://ge.lock.star-lock.cn'; // 葛工
|
||||||
// return 'http://192.168.1.15:8022'; // 谢工
|
// return 'http://192.168.1.15:8022'; // 谢工
|
||||||
return 'http://zhou.lock.star-lock.cn'; // 周工
|
return 'http://zhou.lock.star-lock.cn'; // 周工
|
||||||
|
|
||||||
case Flavor.dev:
|
case Flavor.dev:
|
||||||
|
case Flavor.xhj_dev:
|
||||||
|
case Flavor.sky_dev:
|
||||||
return 'https://dev.lock.star-lock.cn';
|
return 'https://dev.lock.star-lock.cn';
|
||||||
case Flavor.pre:
|
case Flavor.pre:
|
||||||
|
case Flavor.xhj_pre:
|
||||||
|
case Flavor.sky_pre:
|
||||||
return 'https://pre.lock.star-lock.cn';
|
return 'https://pre.lock.star-lock.cn';
|
||||||
case Flavor.sky:
|
case Flavor.sky:
|
||||||
return 'https://lock.skychip.top';
|
return 'https://lock.skychip.top';
|
||||||
|
|||||||
8
lib/main_sky_dev.dart
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import 'flavors.dart';
|
||||||
|
|
||||||
|
import 'main.dart' as runner;
|
||||||
|
|
||||||
|
Future<void> main() async {
|
||||||
|
F.appFlavor = Flavor.sky_dev;
|
||||||
|
await runner.main();
|
||||||
|
}
|
||||||
8
lib/main_sky_pre.dart
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import 'flavors.dart';
|
||||||
|
|
||||||
|
import 'main.dart' as runner;
|
||||||
|
|
||||||
|
Future<void> main() async {
|
||||||
|
F.appFlavor = Flavor.sky_pre;
|
||||||
|
await runner.main();
|
||||||
|
}
|
||||||
8
lib/main_xhj_dev.dart
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import 'flavors.dart';
|
||||||
|
|
||||||
|
import 'main.dart' as runner;
|
||||||
|
|
||||||
|
Future<void> main() async {
|
||||||
|
F.appFlavor = Flavor.xhj_dev;
|
||||||
|
await runner.main();
|
||||||
|
}
|
||||||
8
lib/main_xhj_pre.dart
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import 'flavors.dart';
|
||||||
|
|
||||||
|
import 'main.dart' as runner;
|
||||||
|
|
||||||
|
Future<void> main() async {
|
||||||
|
F.appFlavor = Flavor.xhj_pre;
|
||||||
|
await runner.main();
|
||||||
|
}
|
||||||
56
release_description_generator.sh
Executable file
@ -0,0 +1,56 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 读取环境变量
|
||||||
|
URL=$CI_API_V4_URL
|
||||||
|
TOKEN=$GITLAB_ACCESS_TOKEN
|
||||||
|
PROJECT_ID=$CI_PROJECT_ID
|
||||||
|
|
||||||
|
echo "PRIVATE-TOKEN: $TOKEN $URL/projects/$PROJECT_ID/repository/tags"
|
||||||
|
tags_json=$(curl -H "Content-Type: application/json" -H "PRIVATE-TOKEN: $TOKEN" "$URL/projects/$PROJECT_ID/repository/tags")
|
||||||
|
echo "tags_json:$tags_json\n"
|
||||||
|
tags=$(echo "$tags_json" | jq -r '.[].name')
|
||||||
|
tags_length=$(echo "$tags_json" | jq -r 'length')
|
||||||
|
if [ "$tags_length" -lt 2 ]; then
|
||||||
|
newest_tag="master"
|
||||||
|
second_newest_tag=$(echo "$tags" | head -n 1)
|
||||||
|
else
|
||||||
|
newest_tag=$(echo "$tags" | head -n 1)
|
||||||
|
second_newest_tag=$(echo "$tags" | head -n 2 | tail -n 1)
|
||||||
|
fi
|
||||||
|
echo "newest_tag:$newest_tag-second_newest_tag:$second_newest_tag\n"
|
||||||
|
# 比较两个tag之间的commits
|
||||||
|
compare_json=$(curl -s --header "PRIVATE-TOKEN: $TOKEN" "$URL/projects/$PROJECT_ID/repository/compare?from=$second_newest_tag&to=$newest_tag")
|
||||||
|
#echo "compare_json:$compare_json\n"
|
||||||
|
feat_log=""
|
||||||
|
fix_log=""
|
||||||
|
other_log=""
|
||||||
|
while IFS= read -r commit_json; do
|
||||||
|
# 使用 jq 解析每一行的 JSON 对象
|
||||||
|
commit_id=$(echo "$commit_json" | jq -r '.id')
|
||||||
|
commit_message=$(echo "$commit_json" | jq -r '.message')
|
||||||
|
if [[ "$commit_message" =~ ("feat:"*) ]]; then
|
||||||
|
feat_log+="* ${commit_message#feat:}\n"
|
||||||
|
elif [[ "$commit_message" =~ ("fix:"*) ]]; then
|
||||||
|
fix_log+="* ${commit_message#fix:}\n"
|
||||||
|
elif [[ ! "$commit_message" =~ ("Merge"* | "Revert"*) ]]; then
|
||||||
|
other_log+="* ${commit_message#("Merge" | "Revert")}\n"
|
||||||
|
fi
|
||||||
|
done < <(echo "$compare_json" | jq -c '.commits[] | {id: .id, message: .message}')
|
||||||
|
|
||||||
|
echo -e "feat_log:$feat_log,fix_log:$fix_log,other_log:$other_log"
|
||||||
|
# 如果没有feat或fix的commits,则设置默认日志
|
||||||
|
if [[ -z "$feat_log" ]]; then
|
||||||
|
feat_log="- No 'feat' commits since last tagged commit."
|
||||||
|
fi
|
||||||
|
if [[ -z "$fix_log" ]]; then
|
||||||
|
fix_log="- No 'fix' commits since last tagged commit."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 生成changelog文本
|
||||||
|
changelog="# Features\n$feat_log\n# Fixes\n$fix_log\n# Others\n$other_log"
|
||||||
|
|
||||||
|
# 打印结果(或可以重定向到文件等)
|
||||||
|
echo "$changelog"
|
||||||
|
|
||||||
|
# (可选)将结果保存到文件中
|
||||||
|
echo -e "$changelog" > changelog.md
|
||||||
62
tag_generator.sh
Executable file
@ -0,0 +1,62 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 读取环境变量
|
||||||
|
URL=$CI_API_V4_URL
|
||||||
|
TOKEN=$GITLAB_ACCESS_TOKEN
|
||||||
|
PROJECT_ID=$CI_PROJECT_ID
|
||||||
|
next_tag=""
|
||||||
|
newest_tag=""
|
||||||
|
echo "PRIVATE-TOKEN: $TOKEN $URL/projects/$PROJECT_ID/repository/tags"
|
||||||
|
tags_json=$(curl -H "Content-Type: application/json" -H "PRIVATE-TOKEN: $TOKEN" "$URL/projects/$PROJECT_ID/repository/tags")
|
||||||
|
#echo "tags_json:$tags_json\n"
|
||||||
|
tags=$(echo "$tags_json" | jq -r '.[].name')
|
||||||
|
tags_length=$(echo "$tags_json" | jq -r 'length')
|
||||||
|
if [ "$tags_length" -lt 1 ]; then
|
||||||
|
next_tag="v1.0.0"
|
||||||
|
else
|
||||||
|
newest_tag=$(echo "$tags" | head -n 1)
|
||||||
|
IFS='.' read -r major minor patch <<< "$newest_tag"
|
||||||
|
major="${major#v}"
|
||||||
|
compare_json=""
|
||||||
|
if [[ "$1" == "generate_tag" ]];then
|
||||||
|
echo "generate_tag:$newest_tag-to-master\n"
|
||||||
|
compare_json=$(curl -s --header "PRIVATE-TOKEN: $TOKEN" "$URL/projects/$PROJECT_ID/repository/compare?from=$newest_tag&to=master")
|
||||||
|
elif [[ "$1" == "generate_version" ]]; then
|
||||||
|
echo "generate_version:master-to-$CI_COMMIT_BRANCH\n"
|
||||||
|
compare_json=$(curl -s --header "PRIVATE-TOKEN: $TOKEN" "$URL/projects/$PROJECT_ID/repository/compare?from=master&to=$CI_COMMIT_BRANCH")
|
||||||
|
fi
|
||||||
|
echo "compare_json:$compare_json\n"
|
||||||
|
new_patch=$patch
|
||||||
|
while IFS= read -r commit_json; do
|
||||||
|
# 使用 jq 解析每一行的 JSON 对象
|
||||||
|
commit_id=$(echo "$commit_json" | jq -r '.id')
|
||||||
|
commit_message=$(echo "$commit_json" | jq -r '.message')
|
||||||
|
echo "----$commit_message"
|
||||||
|
if [[ "$commit_message" =~ ("feat:"*) ]]; then
|
||||||
|
((minor++))
|
||||||
|
new_patch=0
|
||||||
|
break
|
||||||
|
elif [[ "$commit_message" =~ ("fix:"*) ]] && [[ $new_patch == $patch ]]; then
|
||||||
|
((new_patch++))
|
||||||
|
elif [[ ! "$commit_message" =~ ("Merge"* | "Revert"*) ]] && [[ $new_patch == $patch ]]; then
|
||||||
|
((new_patch++))
|
||||||
|
fi
|
||||||
|
done < <(echo "$compare_json" | jq -c '.commits[] | {id: .id, message: .message}')
|
||||||
|
next_tag="v$major.$minor.$new_patch"
|
||||||
|
fi
|
||||||
|
echo "New Tag:$newest_tag;New version: $next_tag;command: $1"
|
||||||
|
if [[ "$1" == "generate_tag" ]];then
|
||||||
|
if [ "$next_tag" == "$newest_tag" ]; then
|
||||||
|
echo "no change from master,skip to generate tag"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
git config user.name
|
||||||
|
git tag $next_tag
|
||||||
|
git push -u origin $next_tag
|
||||||
|
echo "generate tag: $next_tag"
|
||||||
|
elif [[ "$1" == "generate_version" ]]; then
|
||||||
|
export NEXT_VERSION="$next_tag"
|
||||||
|
echo "generate version: $NEXT_VERSION"
|
||||||
|
fi
|
||||||
|
echo "$next_tag" > app_new.version
|
||||||
|
|
||||||