Compare commits
309 Commits
Author | SHA1 | Date |
---|---|---|
dependabot[bot] | 1354201440 | |
stonegate | 01a9641291 | |
stonegate | d8577e2e8c | |
Youssef Lasheen | 814d0d7efc | |
stonegate | ee5a0660ea | |
stonega | b0d1639138 | |
stonega | ad7541d2fc | |
stonega | 8a128dc6ad | |
stonegate | 06f21e616a | |
stonega | f14f0f819c | |
dependabot[bot] | 9b76589802 | |
stonega | 9ff8f84892 | |
stonegate | 20bf421ba1 | |
stonega | 7474afd7b8 | |
dependabot[bot] | 5a7522ddb5 | |
stonega | 7312fdd10c | |
stonega | 03f50d7194 | |
stonega | 32b3298ea3 | |
stonega | d3f33e5d2b | |
Stonegate | 6c21b87b34 | |
Stonegate | e0d7a8d60f | |
stonega | 61312ab36a | |
stonega | 962b0a4e4b | |
stonega | 0bb7f78289 | |
stonega | 97406a1ddb | |
stonega | 927907b78f | |
stonega | b3e57be396 | |
stonega | 48922e65cc | |
stonega | 522481ad93 | |
stonega | c4bf7fce60 | |
stonega | d5295db753 | |
stonega | 498e29aba3 | |
stonega | 2b8174d79b | |
stonega | ee8f7f2246 | |
stonega | f11e572cec | |
stonega | 7600defbc7 | |
stonega | adc8b9e0c3 | |
stonega | 682c6181c5 | |
stonega | f2337178ac | |
stonega | df0855f511 | |
stonega | dbd1e9c94e | |
stonega | 9a46e0fc47 | |
stonega | 26e74d34e5 | |
stonega | c16729763a | |
stonega | 6d5ca4a6fb | |
stonega | b5b1ea1c97 | |
stonega | 54fc876676 | |
stonega | 939699c892 | |
stonega | a0d7147811 | |
stonega | ec1a4c3276 | |
stonega | 2376667869 | |
stonega | b95e715af8 | |
Stonegate | d892f79863 | |
Stonegate | f208ab6925 | |
Stonegate | 07236fc2cb | |
Stonegate | 8f47d00b06 | |
Stonegate | cac57b47f6 | |
Stonegate | 7442f7f34e | |
Stonegate | 5ef238df32 | |
Stonegate | 35b1e5c372 | |
Stonegate | 7bbcb78fe0 | |
Stonegate | 67166178f4 | |
Stonegate | 190f4b992d | |
Stonegate | 5b2a95cd2d | |
Stonegate | 9ea2e59c71 | |
stonega | 66e76752e2 | |
stonega | b2a2b53e66 | |
stonega | db5d038e62 | |
stonega | 9ae9a27206 | |
stonega | b23fb3f38d | |
stonega | 35d749564c | |
stonega | b7047f29fc | |
stonega | c1b72b53e0 | |
Stonegate | b9b88feb42 | |
Stonegate | 7c13058463 | |
Stonegate | 133cbcd65f | |
Stonegate | 818069a18f | |
stonega | ba3347e31e | |
stonega | 3405afce83 | |
stonega | ca675639ef | |
stonega | c708b563f1 | |
stonega | 77db78134b | |
stonega | f43a3cf4bc | |
stonega | f752f10a37 | |
stonega | c40be932db | |
Stonegate | 51f96c3de7 | |
Stonegate | 0bc1414a68 | |
Stonegate | f5b8564768 | |
Stonegate | d10a12678c | |
Stonegate | 1ea63a8ba5 | |
Stonegate | 7dee5738c9 | |
Stonegate | f378382aa1 | |
stonega | 61c9a9db07 | |
stonega | fe04c8133c | |
stonega | 566ae0914f | |
stonega | 65769a2ec7 | |
stonega | 1d334b58b2 | |
stonega | f219ac9d3f | |
stonega | 17c3fbdbb7 | |
stonega | 5f0d069ab9 | |
stonega | 2dac1a4fce | |
stonega | 0ad1652448 | |
Stonegate | af89f43469 | |
stonega | dea320c7ae | |
stonega | a5d3315833 | |
stonega | 6eab636f98 | |
stonega | 98b6f2f829 | |
stonega | e97752bea5 | |
stonega | ffead02039 | |
stonega | c330bfe7b0 | |
Stonegate | 2438803775 | |
Stonegate | ca251e2828 | |
Stonegate | 378bdd5ba5 | |
Stonegate | bcaab84b8f | |
Stonegate | 4fe335ff69 | |
Stonegate | 747aa47772 | |
Stonegate | a9032aaef7 | |
stonega | c35536759f | |
stonega | f848f73bbf | |
stonega | ee2b3ff889 | |
stonega | 41bb9c0c4e | |
stonega | ea611e9798 | |
stonega | 54268cf8b9 | |
stonega | daaeb7c8c1 | |
stonega | b2c4a2050e | |
stonega | 17b45abe47 | |
stonega | 2619787c8d | |
stonega | c2e0330cde | |
stonega | b36d9f80be | |
stonega | 7cf751fed0 | |
stonega | 8be47b0ac0 | |
stonega | 15809fd90f | |
stonega | 7bca695437 | |
stonega | a09718ca91 | |
Stonegate | 774f39da1b | |
Stonegate | ac2cace335 | |
Stonegate | 196f48e7a9 | |
Stonegate | 7a43dd9058 | |
Stonegate | 48ca171ada | |
Stonegate | 2413776b3c | |
Stonegate | 48b1d88fc9 | |
Stonegate | 2e14835bd9 | |
Stonegate | 656e5ccdea | |
Stonegate | f36ae4f486 | |
Stonegate | a34b9f3a8a | |
Stonegate | c625e114ad | |
Stonegate | a9cca25e5c | |
Stonegate | 91eff967fb | |
Stonegate | ccdfabeb3f | |
Stonegate | 26353bb67b | |
Stonegate | dc40803a79 | |
Stonegate | a9e370fbe7 | |
Stonegate | 850250efec | |
Stonegate | 0fdf9aac9d | |
Stonegate | a7a3fc7845 | |
Stonegate | b3e1d4cb42 | |
Stonegate | b25093583a | |
Stonegate | d3d21f28e3 | |
Stonegate | bb4f26cd34 | |
stonega | 14ce9fc12e | |
stonega | 26d49b4da3 | |
stonega | 526eeb885b | |
stonega | f029a849a2 | |
stonega | 6039da8d80 | |
stonega | 963415ded4 | |
stonega | 1d8db22dde | |
stonega | 0a8f622f85 | |
stonega | b5aad31c15 | |
stonega | b68d736d92 | |
stonega | f282d3288b | |
stonega | b83853cb8c | |
stonega | d394066634 | |
stonega | f801fb65f4 | |
stonega | 1e42cde733 | |
stonega | 085eb1d78e | |
stonega | 109c83eb9f | |
stonega | e2aa75ee02 | |
stonega | fe36c06a38 | |
stonega | ee940dda5e | |
stonega | 074f31e7cd | |
stonega | 434609eaeb | |
stonega | 06ec6ee5a1 | |
stonega | e62c222efe | |
stonega | aa3bbb2b4b | |
stonegate | 42c93a6404 | |
stonegate | e340d996ac | |
stonegate | 52b4e17200 | |
stonegate | 2a54c5cb7b | |
stonegate | aed985a4bc | |
stonegate | d794855892 | |
stonegate | ae3e9050ac | |
stonegate | b69e22a12e | |
stonegate | 340aaf7173 | |
stonegate | cb86151caf | |
stonegate | 974c2af18e | |
stonegate | 24861bf588 | |
stonegate | 67d57c5334 | |
stonegate | e8708535ee | |
stonegate | bc69276541 | |
stonegate | c251791b48 | |
stonegate | 2e0e65f41a | |
stonegate | 7f66ebd7e6 | |
stonegate | e8882a62b8 | |
stonegate | 7af2cb5a09 | |
stonegate | e3ca2a6a32 | |
stonegate | b31cc38fad | |
stonegate | b1c778922b | |
stonegate | 10931f31a0 | |
stonegate | 7d3dd9824a | |
stonegate | c97a838ea3 | |
stonegate | 3d9ec7e246 | |
stonegate | 3287ac0f78 | |
stonegate | 5888ce14a1 | |
stonegate | 2681385830 | |
stonegate | 9437d37017 | |
stonegate | f2eb81de76 | |
stonegate | a825d1d97c | |
stonegate | 68ea9e32df | |
stonegate | f2e16dd73d | |
stonegate | 6c2f78f9e4 | |
stonegate | 05d5b76ca6 | |
stonegate | 88ce52dcae | |
stonegate | 5e6b5981c7 | |
stonegate | e8affb1c8b | |
stonegate | 4b5d82305f | |
stonegate | 3bfbc87d09 | |
stonegate | ea8f453cf8 | |
stonegate | 9099e81126 | |
stonegate | d8b80c2679 | |
stonegate | 49fe839f5d | |
stonegate | da684480b3 | |
stonegate | 061fadbccc | |
stonegate | 80e22ab24d | |
stonegate | 9b6f7f05e2 | |
stonegate | fddf9988a5 | |
stonegate | daf90e0f6b | |
stonegate | 209403b50f | |
stonegate | 7f5286ba07 | |
stonegate | f860676f9e | |
stonegate | 55d1a01168 | |
stonegate | 84c3a268dd | |
stonegate | 4aa53515e3 | |
stonegate | ec9836a432 | |
stonegate | 6dd8d37f77 | |
stonegate | e9c0e7eae9 | |
stonegate | e7839f8249 | |
stonegate | e7b9104092 | |
stonegate | fa883a4722 | |
stonegate | 194f46eb14 | |
stonegate | 5dcdba41cd | |
stonegate | ca71aec1ca | |
stonegate | 67f3deeb59 | |
stonegate | 80a4c9bc1b | |
ImgBotApp | b508d61999 | |
stonegate | b5b947b988 | |
stonegate | 9b957c7b68 | |
stonegate | b3e59bc2c7 | |
stonegate | 36a23f2de5 | |
stonegate | a70103c3eb | |
stonegate | 8b57619960 | |
stonegate | e1ef5bab10 | |
stonegate | acf6ada44b | |
stonegate | 6086db0f8c | |
stonegate | 93ed9d3513 | |
stonegate | d15f1c7b89 | |
stonegate | 719d9c8cc0 | |
stonegate | 064d63350d | |
stonegate | e2ef6ea01b | |
stonegate | b271965009 | |
stonegate | fb31758f50 | |
stonegate | 12127253e4 | |
stonegate | 74468bf35c | |
stonegate | 29f989e384 | |
stonegate | b8b72dc020 | |
stonegate | ff719ff90b | |
stonegate | 5bcdc7d5c3 | |
stonegate | c785dbaaaa | |
stonegate | 63d1be0897 | |
stonegate | 9fdd549d5c | |
stonegate | cd1a422f73 | |
stonegate | 4385c58668 | |
stonegate | e1fe91983e | |
stonegate | 8ea216468a | |
stonegate | fa171ce307 | |
stonegate | f7dfb0b005 | |
stonegate | d99e7a2e04 | |
stonegate | 7d873062ec | |
stonegate | d1668a923f | |
stonegate | 8aad960ed8 | |
stonegate | 5114d6ad4e | |
stonegate | dca987f65a | |
stonegate | 38c6b62a54 | |
stonegate | a75bdbbc95 | |
stonegate | cdf05a14e6 | |
stonegate | 5e493fa9bd | |
stonegate | cc0f5a4908 | |
stonegate | deb987d71d | |
stonegate | e004966761 | |
stonegate | 566ff83530 | |
stonegate | 815e4d8caf | |
stonegate | 83303b873e | |
stonegate | a24e7d6758 | |
stonegate | 7bd55e8058 | |
stonegate | 5235e90e6a | |
stonegate | fc4b8a275e | |
stonegate | b4e640bad3 | |
stonegate | 208edeb67e | |
stonegate | 5a32511ac9 | |
stonegate | be00383966 |
|
@ -1,28 +0,0 @@
|
|||
version: 2
|
||||
jobs:
|
||||
build:
|
||||
docker:
|
||||
- image: cirrusci/flutter:stable
|
||||
|
||||
branches:
|
||||
only: master
|
||||
|
||||
steps:
|
||||
- checkout
|
||||
- run:
|
||||
name: Run Flutter doctor
|
||||
command: flutter doctor
|
||||
- run:
|
||||
name: Update package
|
||||
command: flutter update-packages --force-upgrade
|
||||
- run: echo $ENCODED_KEYSTORE | base64 -di > ${HOME}/keystore.jks
|
||||
- run: echo 'export KEYSTORE=${HOME}/keystore.jks' >> $BASH_ENV
|
||||
- run: dart tool/env.dart
|
||||
- run:
|
||||
name: Build the Android version
|
||||
command: flutter build appbundle --obfuscate --split-debug-info=debug/
|
||||
- run:
|
||||
name: Build the Android apk
|
||||
command: flutter build apk --split-per-abi --obfuscate --split-debug-info=debug/
|
||||
- store_artifacts:
|
||||
path: build/app/outputs/
|
|
@ -0,0 +1,12 @@
|
|||
# These are supported funding model platforms
|
||||
|
||||
github: # Replace with up to 4buy-enabled usernames e.g., [user1, user2]
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: stonegate # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
custom: ["https://www.buymeacoffee.com/stonegate"] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
|
@ -0,0 +1,43 @@
|
|||
name: Flutter Build
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/setup-java@v1
|
||||
with:
|
||||
java-version: "11.x"
|
||||
- uses: subosito/flutter-action@v1
|
||||
with:
|
||||
channel: "stable" # 'dev', 'alpha', default to: 'stable'
|
||||
- run: flutter pub get
|
||||
- run: echo $ENCODED_KEYSTORE | base64 -di > android/app/keystore.jks
|
||||
env:
|
||||
ENCODED_KEYSTORE: ${{ secrets.ENCODED_KEYSTORE }}
|
||||
- run: dart tool/env.dart
|
||||
env:
|
||||
API_KEY: ${{ secrets.API_KEY }}
|
||||
PI_API_SECRET: ${{ secrets.PI_API_SECRET}}
|
||||
PI_API_KEY: ${{ secrets.PI_API_KEY}}
|
||||
- run: flutter build apk --split-per-abi --obfuscate --split-debug-info=debug/ --flavor=play
|
||||
env:
|
||||
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
|
||||
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
|
||||
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD}}
|
||||
|
||||
- run: flutter build appbundle --obfuscate --split-debug-info=debug/ --flavor=play
|
||||
env:
|
||||
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
|
||||
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
|
||||
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD}}
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: release-file
|
||||
path: |
|
||||
build/app/outputs/flutter-apk/*
|
||||
build/app/outputs/bundle/playRelease/*
|
||||
|
|
@ -1,41 +1,41 @@
|
|||
# Miscellaneous
|
||||
*.class
|
||||
*.log
|
||||
*.pyc
|
||||
*.swp
|
||||
.DS_Store
|
||||
.atom/
|
||||
.buildlog/
|
||||
.history
|
||||
.svn/
|
||||
|
||||
# IntelliJ related
|
||||
*.iml
|
||||
*.ipr
|
||||
*.iws
|
||||
.idea/
|
||||
|
||||
# The .vscode folder contains launch configuration and tasks you configure in
|
||||
# VS Code which you may wish to be included in version control, so this line
|
||||
# is commented out by default.
|
||||
#.vscode/
|
||||
|
||||
# Flutter/Dart/Pub related
|
||||
**/doc/api/
|
||||
.dart_tool/
|
||||
.flutter-plugins
|
||||
.flutter-plugins-dependencies
|
||||
.packages
|
||||
.pub-cache/
|
||||
.pub/
|
||||
/lib/.env.dart
|
||||
/build/
|
||||
pubspec.lock
|
||||
.vscode
|
||||
analysis_options.yaml
|
||||
|
||||
# Web related
|
||||
lib/generated_plugin_registrant.dart
|
||||
|
||||
# Exceptions to above rules.
|
||||
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
|
||||
# Miscellaneous
|
||||
*.class
|
||||
*.log
|
||||
*.pyc
|
||||
*.swp
|
||||
.DS_Store
|
||||
.atom/
|
||||
.buildlog/
|
||||
.history
|
||||
.svn/
|
||||
|
||||
# IntelliJ related
|
||||
*.iml
|
||||
*.ipr
|
||||
*.iws
|
||||
.idea/
|
||||
|
||||
# The .vscode folder contains launch configuration and tasks you configure in
|
||||
# VS Code which you may wish to be included in version control, so this line
|
||||
# is commented out by default.
|
||||
.vscode/settings.json
|
||||
|
||||
# Flutter/Dart/Pub related
|
||||
**/doc/api/
|
||||
.dart_tool/
|
||||
.flutter-plugins
|
||||
.flutter-plugins-dependencies
|
||||
.packages
|
||||
.pub-cache/
|
||||
.pub/
|
||||
/lib/.env.dart
|
||||
/build/
|
||||
pubspec.lock
|
||||
analysis_options.yaml
|
||||
.fvm/
|
||||
|
||||
# Web related
|
||||
lib/generated_plugin_registrant.dart
|
||||
|
||||
# Exceptions to above rules.
|
||||
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
|
||||
|
|
20
.metadata
|
@ -1,10 +1,10 @@
|
|||
# This file tracks properties of this Flutter project.
|
||||
# Used by Flutter tool to assess capabilities and perform upgrades etc.
|
||||
#
|
||||
# This file should be version controlled and should not be manually edited.
|
||||
|
||||
version:
|
||||
revision: 659dc8129d4edb9166e9a0d600439d135740933f
|
||||
channel: beta
|
||||
|
||||
project_type: app
|
||||
# This file tracks properties of this Flutter project.
|
||||
# Used by Flutter tool to assess capabilities and perform upgrades etc.
|
||||
#
|
||||
# This file should be version controlled and should not be manually edited.
|
||||
|
||||
version:
|
||||
revision: 659dc8129d4edb9166e9a0d600439d135740933f
|
||||
channel: beta
|
||||
|
||||
project_type: app
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Flutter",
|
||||
"request": "launch",
|
||||
"type": "dart",
|
||||
"args": [
|
||||
"--flavor",
|
||||
"play"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"cSpell.words": [
|
||||
"cupertino",
|
||||
"tsacdop"
|
||||
]
|
||||
}
|
654
CHANGELOG.md
|
@ -1,221 +1,433 @@
|
|||
# Tsacdop Changelog
|
||||
|
||||
## 0.4.14
|
||||
|
||||
Release date 2020/8/20
|
||||
Only for izzyonandroid.
|
||||
|
||||
## 0.4.13
|
||||
|
||||
Release date 2020/8/19
|
||||
|
||||
### Bugs fixed
|
||||
|
||||
* Downloaded episode play error, you might need to redownload the episode.
|
||||
|
||||
## 0.4.12
|
||||
|
||||
Release date 2020/8/15
|
||||
|
||||
### Bugs fixed
|
||||
|
||||
* Crash when reorder episodes or podcasts.
|
||||
* Popup menu setting import bug.
|
||||
* Default language failed to load.
|
||||
|
||||
### Minor changes
|
||||
|
||||
* Change language|feedback|podcast settings to button sheet.
|
||||
* Add history in home playlist button.
|
||||
* History page UI improved.
|
||||
|
||||
## 0.4.11
|
||||
|
||||
Release date 2020/8/12
|
||||
|
||||
### New features
|
||||
|
||||
* Boost volume. You can change boost level in settings.
|
||||
* You can tap time stamp to skip instantly in shownote when the episode is playing.
|
||||
* Add history list in playlist page.
|
||||
* You can also mark not listened now.
|
||||
|
||||
### Minor change
|
||||
|
||||
* Improved time picker UI.
|
||||
* Add episode setting page.
|
||||
|
||||
### Bugs fix
|
||||
|
||||
* Play record didn't saved after stop playing.
|
||||
* Network error message didn't disapear after skip to next.
|
||||
* Fireside avatar load error.
|
||||
|
||||
## 0.4.10
|
||||
|
||||
Release date 2020/8/6
|
||||
|
||||
### Bugs fixed
|
||||
|
||||
* Episdoe date parse error.
|
||||
* Play from start after interrupt.
|
||||
* Playlist in player unstable.
|
||||
* Language setting not saved after restart app.
|
||||
|
||||
### Minor change
|
||||
|
||||
* Fast forward and rewind buttons UI changed.
|
||||
|
||||
## v0.4.9
|
||||
|
||||
Release date 2020/8/1
|
||||
|
||||
### New features
|
||||
|
||||
* Player UI redesign.
|
||||
* Added player height setting.
|
||||
* Added skip silence feature.
|
||||
|
||||
### Bugs fixed
|
||||
|
||||
* Language fixs. (Thanks to Atrate)
|
||||
* Make app movable to SD card. (Thanks to Atrate)
|
||||
|
||||
### Minor change
|
||||
|
||||
* Episode page open animation improved.
|
||||
* Podcast page load faster than before.
|
||||
* Removed unnecessary scroll overlay effect.
|
||||
* Episode page bottom menu hide when scroll down.
|
||||
|
||||
## v0.4.8
|
||||
|
||||
Release date 2020/7/25
|
||||
|
||||
### New features
|
||||
|
||||
* Filter in podcast detail page, you can also hide listened episodes.
|
||||
* Search result ui improved, you can see more info for result.
|
||||
* Update audio service to latest version.
|
||||
* Support fast forward seconds and rewind seconds customize.
|
||||
* Add Franch language support(beta).
|
||||
* Add translators in about page.
|
||||
|
||||
### Bugs fixed
|
||||
|
||||
* Icon issue on below android 8 devices.
|
||||
|
||||
### Minor change
|
||||
|
||||
* Download button ui improved.
|
||||
* Title changed to scrollable in episode detail page.
|
||||
* Real dark theme improved.
|
||||
* Add dot indicator in popup menu.
|
||||
* Tap logo in homepage to toggle theme.
|
||||
|
||||
## v0.4.7
|
||||
|
||||
Release date 2020/7/18
|
||||
|
||||
### Bugs fixed
|
||||
|
||||
* Ompl files form other platform import error.
|
||||
* Audio cache did't work.
|
||||
|
||||
## v0.4.6
|
||||
|
||||
Release date 2020/7/17
|
||||
|
||||
### Bugs fixed
|
||||
|
||||
* Mark listened not work.
|
||||
* Recover subscribe wrong group.
|
||||
|
||||
## v0.4.5
|
||||
|
||||
Release date 2020/7/16
|
||||
|
||||
## New features
|
||||
|
||||
* OMPL backup file supports group.
|
||||
* Add settings backup and restore.
|
||||
* Enable R8 and dart obfuscate.
|
||||
|
||||
## Bugs fixed
|
||||
|
||||
* OMPL import not shown in group.
|
||||
|
||||
## Minor UI change
|
||||
|
||||
* Tap logo in homepage to toggle theme mode.
|
||||
* Change subscribe button style.
|
||||
* Improve history chart style.
|
||||
|
||||
## v0.4.0
|
||||
|
||||
Release date 2020/7/9
|
||||
|
||||
### New features
|
||||
|
||||
* Localization, changed all UI strings in app to support locale, support languages include en & zh right now.
|
||||
* Changed episode popup menu UI, add a switch to tap to open popup men.
|
||||
|
||||
### Minor UI change
|
||||
|
||||
* Improve dropdown menu UI.
|
||||
* Change icons color in setting page.
|
||||
* Improve player panel animation.
|
||||
* Add scroll bar in libraries page.
|
||||
|
||||
## v0.3.6
|
||||
|
||||
Release date 2020/6/30
|
||||
|
||||
### New feature
|
||||
|
||||
* Add sleep timer settings. include default time, auto start sleep timer, etc.
|
||||
|
||||
### Bug fixed
|
||||
|
||||
* Crash on stop player.
|
||||
* Some download file didn't auto deleted.
|
||||
|
||||
## v0.3.5
|
||||
|
||||
Release date 2020/6/20
|
||||
This is a energency release.
|
||||
|
||||
### Bugs fixed
|
||||
|
||||
* Crashed in download page or button after remove a podcast. Add episode check when load tasks from flutterdownloader.
|
||||
|
||||
### Minor UI change
|
||||
|
||||
* Add buy me a coffee in about page.
|
||||
* Remove progress number in download list in failed task, change refresh icon color to red.
|
||||
|
||||
## v0.3.4
|
||||
|
||||
Release date 2020/6/16
|
||||
|
||||
### New Feature
|
||||
|
||||
* Support auto download new episodes, you can choose which podcast you want to auto download, you can also set if download using cellular data.
|
||||
* Support auto delete downloaded episode, you can set days before delete.
|
||||
* Support customize episode popup menu, you can add options you most want, **Like** | **Mark Listened** | **Download** newly added.
|
||||
* Improved downloaded file manager, you can now sort downloads by date or size, you can also only view listened downloads.
|
||||
|
||||
### Minor UI Change
|
||||
|
||||
* Removed the listened indicator, increased the color difference for listened episodes.
|
||||
* Add text in podcast manage page menu.
|
||||
* Change episode shownote font to Martel.
|
||||
|
||||
### Bugs Fixed
|
||||
|
||||
* Auto play when receive notification.
|
||||
* Lose podcast when import OMPL file.
|
||||
|
||||
### Other
|
||||
|
||||
* Add privacy policy.
|
||||
# Tsacdop Changelog
|
||||
## 0.6.0
|
||||
Release date 2021/2/27
|
||||
|
||||
### New features
|
||||
* Load local folder as playlist
|
||||
* Option to always hide new mark for podcast.
|
||||
* Memory use reduced a lot
|
||||
* Add reddit link
|
||||
|
||||
## 0.5.9
|
||||
|
||||
Release date 2021/2/11
|
||||
### Bug fix
|
||||
|
||||
* Some podcasts subscribe failed.
|
||||
* Update fastlane screenshots.
|
||||
|
||||
## 0.5.8
|
||||
Release date 2021/2/9
|
||||
|
||||
### New features
|
||||
|
||||
* Artwork shownotes and chapters in player panel.
|
||||
* Play without subscription, inside search result directly.
|
||||
|
||||
### Bug fix
|
||||
|
||||
* Episode download failed with '/' in title.
|
||||
|
||||
## 0.5.7
|
||||
Release date 2021/1.31
|
||||
For frdoid
|
||||
|
||||
## 0.5.6
|
||||
Release date 2021/1.28
|
||||
|
||||
### Bug fix
|
||||
* Image saved wrongly after subscribe new podcast.
|
||||
|
||||
## 0.5.5
|
||||
Release date 2021/1/25
|
||||
|
||||
### Bugs fix
|
||||
* Position not saved after player stpoped.
|
||||
* Wrongly remove episodes from playlist when get back from playlist page.
|
||||
* Player crash on OP5T.
|
||||
|
||||
### Minor change
|
||||
* Playlist page UI update.
|
||||
|
||||
## 0.5.4
|
||||
Release date 2021/1/9
|
||||
|
||||
### New feature
|
||||
* Support podcastindex namespace podcast:funding,
|
||||
|
||||
### Minor change
|
||||
* Podcast detail page UI update.
|
||||
|
||||
### Bug fix
|
||||
* Custom rss link subscribe error.
|
||||
|
||||
## 0.5.3
|
||||
Release date 2021/1/7
|
||||
|
||||
### Minor change
|
||||
* Option to open playlist page by default.
|
||||
* Option to open podcast list page instead of group page.
|
||||
* Add remove new mark buttong in podcast page.
|
||||
|
||||
## 0.5.2
|
||||
|
||||
Release date 2021/1/3
|
||||
First release in 2021
|
||||
|
||||
### New features
|
||||
* Custom playlist support.
|
||||
* Playlist page redesign.
|
||||
* Podcast detail page and group management page UI update.
|
||||
* Add remove new mark button in recent tab antion bar.
|
||||
* Support time setting in sleep mode.
|
||||
|
||||
### Minor change
|
||||
* Remove add new to playlist button.
|
||||
* Groups management perfomance improved.
|
||||
* Podcast page opennning animation improved.
|
||||
|
||||
## 0.5.1
|
||||
|
||||
Release date 2020/11/1
|
||||
|
||||
### Bug fixed
|
||||
|
||||
* ListenNotes search error.
|
||||
* Sync podcasts marked as never auto update.
|
||||
* Download failed when network is busy.
|
||||
|
||||
### Minor change
|
||||
|
||||
* User can add episode to the top of playlist in popup menu.
|
||||
* Show podcast name in episode detail page.
|
||||
* Tap pocdast avatar in episode card to open podcast page.
|
||||
|
||||
## 0.5.0
|
||||
|
||||
Release date 2020/10/13
|
||||
|
||||
### New fewtures
|
||||
|
||||
* Support multi select on recent and favorite tab.
|
||||
* Select all/ select before/ select after.
|
||||
* Option to delete episode download file when played.
|
||||
* OPtion to mark as listened after skipped.
|
||||
|
||||
### Bug fixed
|
||||
|
||||
* Feed pubdate parse error.
|
||||
* Episodes load with initial position failed.
|
||||
|
||||
### Minor changes
|
||||
|
||||
* Single colume layout update.
|
||||
* About page UI update.
|
||||
* More smooth animation when open podcast detail page.
|
||||
* Change sort by button style in podcast detail page.
|
||||
* Auto rewind 3 seconds when resuming from paused state.
|
||||
|
||||
## 0.4.20
|
||||
|
||||
Release date 2020/10/3
|
||||
|
||||
### Bug fixed
|
||||
|
||||
* Rss feed parse error.
|
||||
|
||||
## 0.4.19
|
||||
|
||||
Release date 2020/10/1
|
||||
|
||||
### New features
|
||||
|
||||
* Set podcastindex as default search engine.
|
||||
* Option to hide podcast discovery in search page.
|
||||
* Italian translation support, thanks Edoardo.
|
||||
|
||||
### Bug fixed
|
||||
|
||||
* Mark all listened error.
|
||||
|
||||
## 0.4.18
|
||||
|
||||
Release date 2020/9/27
|
||||
|
||||
### New features
|
||||
|
||||
* Support gpodder.net sync.
|
||||
* Portuguese translation, thanks Bruno.
|
||||
* Turn off auto update for podcast.
|
||||
* Pull to refresh in recent tab, supports group update.
|
||||
|
||||
### Minor changes
|
||||
|
||||
* Longpress 'see all' to open full podcast list.
|
||||
|
||||
## 0.4.17
|
||||
|
||||
Release date 2020/9/16
|
||||
|
||||
### Bug fixed
|
||||
|
||||
* Remove notification after app removed from recent.
|
||||
|
||||
## 0.4.16
|
||||
|
||||
Release date 2020/9/15
|
||||
|
||||
### New features
|
||||
|
||||
* Discovery feature in search page.
|
||||
* Multi select in podcast page.
|
||||
* Customize the speed options available.
|
||||
|
||||
### Bugs fixed
|
||||
|
||||
* Fix download error when podcast name includes /.
|
||||
* Make the group name editable directly.
|
||||
* Fixed shownote timestamp click error.
|
||||
|
||||
### Minor changes
|
||||
|
||||
* Update donate button UI.
|
||||
|
||||
## 0.4.15
|
||||
|
||||
Release date 2020/8/30
|
||||
|
||||
### New features
|
||||
|
||||
* Option to change notification panel layout.
|
||||
* Option to change show notes font style.
|
||||
* Option to hide listened default.
|
||||
* Change skip next/previous to fastForward/rewind on headset click.
|
||||
|
||||
### Bugs fixed
|
||||
|
||||
* Download error when filename too long.
|
||||
|
||||
### Minor change
|
||||
|
||||
* Update download button style and downloaded indicator style.
|
||||
* Add 1.1 to speed setting.
|
||||
* Add 5s to skip seconds setting.
|
||||
|
||||
## 0.4.14
|
||||
|
||||
Release date 2020/8/20
|
||||
Only for izzyonandroid.
|
||||
|
||||
## 0.4.13
|
||||
|
||||
Release date 2020/8/19
|
||||
|
||||
### Bugs fixed
|
||||
|
||||
* Downloaded episode play error, you might need to redownload the episode.
|
||||
|
||||
## 0.4.12
|
||||
|
||||
Release date 2020/8/15
|
||||
|
||||
### Bugs fixed
|
||||
|
||||
* Crash when reorder episodes or podcasts.
|
||||
* Popup menu setting import bug.
|
||||
* Default language failed to load.
|
||||
|
||||
### Minor changes
|
||||
|
||||
* Change language|feedback|podcast settings to button sheet.
|
||||
* Add history in home playlist button.
|
||||
* History page UI improved.
|
||||
|
||||
## 0.4.11
|
||||
|
||||
Release date 2020/8/12
|
||||
|
||||
### New features
|
||||
|
||||
* Boost volume. You can change boost level in settings.
|
||||
* You can tap time stamp to skip instantly in shownote when the episode is playing.
|
||||
* Add history list in playlist page.
|
||||
* You can also mark not listened now.
|
||||
|
||||
### Minor change
|
||||
|
||||
* Improved time picker UI.
|
||||
* Add episode setting page.
|
||||
|
||||
### Bugs fix
|
||||
|
||||
* Play record didn't saved after stop playing.
|
||||
* Network error message didn't disapear after skip to next.
|
||||
* Fireside avatar load error.
|
||||
|
||||
## 0.4.10
|
||||
|
||||
Release date 2020/8/6
|
||||
|
||||
### Bugs fixed
|
||||
|
||||
* Episdoe date parse error.
|
||||
* Play from start after interrupt.
|
||||
* Playlist in player unstable.
|
||||
* Language setting not saved after restart app.
|
||||
|
||||
### Minor change
|
||||
|
||||
* Fast forward and rewind buttons UI changed.
|
||||
|
||||
## v0.4.9
|
||||
|
||||
Release date 2020/8/1
|
||||
|
||||
### New features
|
||||
|
||||
* Player UI redesign.
|
||||
* Added player height setting.
|
||||
* Added skip silence feature.
|
||||
|
||||
### Bugs fixed
|
||||
|
||||
* Language fixs. (Thanks to Atrate)
|
||||
* Make app movable to SD card. (Thanks to Atrate)
|
||||
|
||||
### Minor change
|
||||
|
||||
* Episode page open animation improved.
|
||||
* Podcast page load faster than before.
|
||||
* Removed unnecessary scroll overlay effect.
|
||||
* Episode page bottom menu hide when scroll down.
|
||||
|
||||
## v0.4.8
|
||||
|
||||
Release date 2020/7/25
|
||||
|
||||
### New features
|
||||
|
||||
* Filter in podcast detail page, you can also hide listened episodes.
|
||||
* Search result ui improved, you can see more info for result.
|
||||
* Update audio service to latest version.
|
||||
* Support fast forward seconds and rewind seconds customize.
|
||||
* Add Franch language support(beta).
|
||||
* Add translators in about page.
|
||||
|
||||
### Bugs fixed
|
||||
|
||||
* Icon issue on below android 8 devices.
|
||||
|
||||
### Minor change
|
||||
|
||||
* Download button ui improved.
|
||||
* Title changed to scrollable in episode detail page.
|
||||
* Real dark theme improved.
|
||||
* Add dot indicator in popup menu.
|
||||
* Tap logo in homepage to toggle theme.
|
||||
|
||||
## v0.4.7
|
||||
|
||||
Release date 2020/7/18
|
||||
|
||||
### Bugs fixed
|
||||
|
||||
* Ompl files form other platform import error.
|
||||
* Audio cache did't work.
|
||||
|
||||
## v0.4.6
|
||||
|
||||
Release date 2020/7/17
|
||||
|
||||
### Bugs fixed
|
||||
|
||||
* Mark listened not work.
|
||||
* Recover subscribe wrong group.
|
||||
|
||||
## v0.4.5
|
||||
|
||||
Release date 2020/7/16
|
||||
|
||||
## New features
|
||||
|
||||
* OPML backup file supports group.
|
||||
* Add settings backup and restore.
|
||||
* Enable R8 and dart obfuscate.
|
||||
|
||||
## Bugs fixed
|
||||
|
||||
* OPML import not shown in group.
|
||||
|
||||
## Minor UI change
|
||||
|
||||
* Tap logo in homepage to toggle theme mode.
|
||||
* Change subscribe button style.
|
||||
* Improve history chart style.
|
||||
|
||||
## v0.4.0
|
||||
|
||||
Release date 2020/7/9
|
||||
|
||||
### New features
|
||||
|
||||
* Localization, changed all UI strings in app to support locale, support languages include en & zh right now.
|
||||
* Changed episode popup menu UI, add a switch to tap to open popup men.
|
||||
|
||||
### Minor UI change
|
||||
|
||||
* Improve dropdown menu UI.
|
||||
* Change icons color in setting page.
|
||||
* Improve player panel animation.
|
||||
* Add scroll bar in libraries page.
|
||||
|
||||
## v0.3.6
|
||||
|
||||
Release date 2020/6/30
|
||||
|
||||
### New feature
|
||||
|
||||
* Add sleep timer settings. include default time, auto start sleep timer, etc.
|
||||
|
||||
### Bug fixed
|
||||
|
||||
* Crash on stop player.
|
||||
* Some download file didn't auto deleted.
|
||||
|
||||
## v0.3.5
|
||||
|
||||
Release date 2020/6/20
|
||||
This is a energency release.
|
||||
|
||||
### Bugs fixed
|
||||
|
||||
* Crashed in download page or button after remove a podcast. Add episode check when load tasks from flutterdownloader.
|
||||
|
||||
### Minor UI change
|
||||
|
||||
* Add buy me a coffee in about page.
|
||||
* Remove progress number in download list in failed task, change refresh icon color to red.
|
||||
|
||||
## v0.3.4
|
||||
|
||||
Release date 2020/6/16
|
||||
|
||||
### New Feature
|
||||
|
||||
* Support auto download new episodes, you can choose which podcast you want to auto download, you can also set if download using cellular data.
|
||||
* Support auto delete downloaded episode, you can set days before delete.
|
||||
* Support customize episode popup menu, you can add options you most want, **Like** | **Mark Listened** | **Download** newly added.
|
||||
* Improved downloaded file manager, you can now sort downloads by date or size, you can also only view listened downloads.
|
||||
|
||||
### Minor UI Change
|
||||
|
||||
* Removed the listened indicator, increased the color difference for listened episodes.
|
||||
* Add text in podcast manage page menu.
|
||||
* Change episode shownote font to Martel.
|
||||
|
||||
### Bugs Fixed
|
||||
|
||||
* Auto play when receive notification.
|
||||
* Lose podcast when import OMPL file.
|
||||
|
||||
### Other
|
||||
|
||||
* Add privacy policy.
|
||||
|
|
381
README.md
|
@ -1,186 +1,195 @@
|
|||
[![Tsacdop Banner][]][google play]
|
||||
|
||||
[![Build Status - Cirrus][]][build status]
|
||||
[![GitHub Release][]][github release - recent]
|
||||
[![Github Downloads][]][github release - recent]
|
||||
[![Localizely][]][localizely - website]
|
||||
[![style: effective dart][]][effective dart pub]
|
||||
[![License badge][]][license]
|
||||
|
||||
## About
|
||||
|
||||
Enjoy podcasts with Tsacdop.
|
||||
|
||||
Tsacdop is a podcast player developed with Flutter, a clean, simply beautiful and friendly app, which is also free and open source.
|
||||
|
||||
Credit to Flutter team and all involved plugins, especially [webfeed](https://github.com/witochandra/webfeed) and [Just_Audio](https://pub.dev/packages/just_audio).
|
||||
|
||||
The podcast search engine is powered by [ListenNotes](https://listennotes.com).
|
||||
|
||||
## Features
|
||||
|
||||
* Podcast group management
|
||||
* Playlist support
|
||||
* Sleep timer / speed setting
|
||||
* OMPL file export and import
|
||||
* Auto syncing in background
|
||||
* Listening and subscription history record
|
||||
* Dark mode / accent color
|
||||
* Download for offline play
|
||||
* Auto download new episodes / auto delete outdated downloads
|
||||
* Settings backup
|
||||
* Skip silence
|
||||
* Boost volume
|
||||
|
||||
More to come...
|
||||
|
||||
## Preview
|
||||
|
||||
| Home Page | Group | Podcast | Episode| Dark Mode |
|
||||
| ----- | ----- | ----- | ------ | ----- |
|
||||
|![][Homepage ScreenShot]|![][Group Screenshot] | ![][Podcast Screenshot] | ![][Episode Screenshot]| ![][Darkmode Screenshot] |
|
||||
|
||||
## Localization
|
||||
|
||||
Please [Email](mailto:<tsacdop.app@gmail.com>) me you'd like to contribute to support more languages!
|
||||
|
||||
Credit to [Localizely](https://localizely.com/) for kind support to open source projects.
|
||||
|
||||
### ![English]
|
||||
|
||||
### ![Chinese Simplified]
|
||||
|
||||
### ![French]
|
||||
|
||||
### ![Spanish]
|
||||
|
||||
## License
|
||||
|
||||
Tsacdop is licensed under the [GPL v3.0](https://github.com/stonega/tsacdop/blob/master/LICENSE) license.
|
||||
|
||||
## Build
|
||||
|
||||
1. If you don't have Flutter SDK installed, please visit offcial [Flutter][Flutter Install] site.
|
||||
2. Fetch latest sorce code from master branch.
|
||||
|
||||
```
|
||||
git clone https://github.com/stonega/tsacdop.git
|
||||
```
|
||||
|
||||
3. Add api search api configure file.
|
||||
|
||||
Tsacdop uses ListenNotes API 1.0 pro to search for podcasts, which is not free, so I can not expose the API key in the repo.
|
||||
If you want to build the app, you need to create a new file named `.env.dart` in lib folder. Add the following code to `.env.dart` .
|
||||
You can get your own API key on [ListenNotes](https://www.listennotes.com/api/), remember that you need to get pro plan API, because basic plan dosen't provide rss link for serach result. If no api key is added, the search function in the app won't work. But you can still add podcasts by using an RSS link or importing an OMPL file.
|
||||
|
||||
``` dart
|
||||
final environment = {"apiKey":"APIKEY"};
|
||||
```
|
||||
|
||||
4. Run the app with Android Studio or Visual Studio. Or the command line.
|
||||
|
||||
```
|
||||
flutter pub get
|
||||
flutter run
|
||||
```
|
||||
|
||||
## Contribute
|
||||
|
||||
If you have an issue or found a bug, please raise a GitHub issue. Pull requests are also welcome.
|
||||
|
||||
## Archetecture
|
||||
|
||||
### Plugins
|
||||
|
||||
* Local storage
|
||||
+ sqflite
|
||||
+ shared_preferences
|
||||
* Audio
|
||||
+ just_audio
|
||||
+ audio_service
|
||||
* State management
|
||||
+ provider
|
||||
* Download
|
||||
+ flutter_downloader
|
||||
* Background task
|
||||
+ workmanager
|
||||
|
||||
### Directory Structure
|
||||
|
||||
```
|
||||
UI
|
||||
src
|
||||
├──home
|
||||
├──home.dart [Homepage]
|
||||
├──searc_podcast.dart [Search Page]
|
||||
└──playlist.dart [Playlist Page]
|
||||
├──podcasts
|
||||
├──podcast_manage.dart [Group Page]
|
||||
└──podcast_detail.dart [Podcast Page]
|
||||
├──episodes
|
||||
└──episode_detail.dart [Episode Page]
|
||||
├──settings
|
||||
└──setting.dart [Setting Page]
|
||||
|
||||
STATE
|
||||
src
|
||||
├──state
|
||||
├──audio_state.dart [Audio State]
|
||||
├──download_state.dart [Episode Download]
|
||||
├──podcast_group.dart [Podcast Groups]
|
||||
├──refresh_podcast.dart [Episode Refresh]
|
||||
└──setting_state.dart [Setting]
|
||||
|
||||
Service
|
||||
src
|
||||
├──service
|
||||
├──api_service.dart [Podcast Search]
|
||||
└──ompl_builde.dart [OMPL export]
|
||||
```
|
||||
|
||||
## Known Issue
|
||||
|
||||
* Playlist is unstable
|
||||
|
||||
## Contact
|
||||
|
||||
You can reach out to me directly at [tsacdop.app@gmail.com](mailto:<tsacdop.app@gmail.com>).
|
||||
|
||||
Or you can join our [Telegram Group](https://t.me/joinchat/Bk3LkRpTHy40QYC78PK7Qg).
|
||||
|
||||
## Getting Started with Flutter
|
||||
|
||||
This project is a starting point for a Flutter application.
|
||||
|
||||
Here are a few resources to get you started if this is your first Flutter project:
|
||||
|
||||
* [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
|
||||
* [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
|
||||
|
||||
For help getting started with Flutter, view our
|
||||
[online documentation](https://flutter.dev/docs), which offers tutorials, samples, guidance on mobile development, and a full API reference.
|
||||
|
||||
[Flutter Install]: https://flutter.dev/docs/get-started/install
|
||||
[tsacdop banner]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/banner.png
|
||||
[build status - cirrus]: https://circleci.com/gh/stonega/tsacdop/tree/master.svg?style=shield
|
||||
[build status]: https://circleci.com/gh/stonega/tsacdop/tree/master
|
||||
[github release]: https://img.shields.io/github/v/release/stonega/tsacdop
|
||||
[github release - recent]: https://github.com/stonega/tsacdop/releases
|
||||
[github downloads]: https://img.shields.io/github/downloads/stonega/tsacdop/total?color=%230000d&label=downloads
|
||||
[localizely]: https://img.shields.io/badge/dynamic/json?color=%2326c6da&label=localizely&query=%24.languages.length&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus
|
||||
[English]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=English&query=%24.languages%5B0%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=%
|
||||
[Chinese Simplified]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=Chinese%20Simplified&query=%24.languages%5B1%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=%
|
||||
[French]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=French(ppp)&query=%24.languages%5B3%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=%
|
||||
[Spanish]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=Spanish(Joel)&query=%24.languages%5B5%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=%
|
||||
[localizely - website]: https://localizely.com/
|
||||
[google play - icon]: https://img.shields.io/badge/google-playStore-%2323CCC6
|
||||
[google play]: https://play.google.com/store/apps/details?id=com.stonegate.tsacdop
|
||||
[Homepage ScreenShot]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/1585893838840.png
|
||||
[Group Screenshot]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/1585894051734.png
|
||||
[Podcast Screenshot]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/1585893877702.png
|
||||
[Episode Screenshot]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/1585896237809.png
|
||||
[Darkmode Screenshot]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/1585893920721.png
|
||||
[style: effective dart]: https://img.shields.io/badge/style-effective_dart-40c4ff.svg
|
||||
[effective dart pub]: https://pub.dev/packages/effective_dart
|
||||
[license]: https://github.com/stonega/tsacdop/blob/master/LICENSE
|
||||
[License badge]: https://img.shields.io/badge/license-GPLv3-yellow.svg
|
||||
[![Tsacdop Banner][]][google play]
|
||||
|
||||
[![github action][]][github action link]
|
||||
[![GitHub Release][]][github release - recent]
|
||||
[![Github Downloads][]][github release - recent]
|
||||
[![Localizely][]][localizely - website]
|
||||
[![style: effective dart][]][effective dart pub]
|
||||
[![License badge][]][license]
|
||||
[![fdroid install][]][fdroid link]
|
||||
|
||||
## About
|
||||
|
||||
Enjoy podcasts with Tsacdop.
|
||||
|
||||
Tsacdop is a podcast player developed with Flutter, a clean, simply beautiful, and friendly app, which is also free and open source.
|
||||
|
||||
Credit to the Flutter team and all involved plugins, especially [webfeed](https://github.com/witochandra/webfeed), [Just_Audio](https://pub.dev/packages/just_audio), and [Provider](https://pub.dev/packages/provider).
|
||||
|
||||
The podcast search engine is powered by, [ListenNotes](https://listennotes.com) & [PodcastIndex](https://podcastindex.org/).
|
||||
|
||||
## Features
|
||||
|
||||
* Podcast group management
|
||||
* Playlists support
|
||||
* Sleep timer / speed setting
|
||||
* OPML file export and import
|
||||
* Auto-syncing in the background
|
||||
* Listening and subscription history record
|
||||
* Dark mode / accent color
|
||||
* Download for offline play
|
||||
* Auto-download new episodes / auto-delete outdated downloads
|
||||
* Settings backup
|
||||
* Skip silence
|
||||
* Boost volume
|
||||
|
||||
More to come...
|
||||
|
||||
## Preview
|
||||
|
||||
| Home Page | Group | Podcast | Episode| Dark Mode |
|
||||
| ----- | ----- | ----- | ------ | ----- |
|
||||
|![][Homepage ScreenShot]|![][Group Screenshot] | ![][Podcast Screenshot] | ![][Episode Screenshot]| ![][Darkmode Screenshot] |
|
||||
|
||||
## Localization
|
||||
|
||||
Please [Email](mailto:<tsacdop.app@gmail.com>) me you'd like to contribute to support more languages!
|
||||
|
||||
Credit to [Localizely](https://localizely.com/) for kind support to open source projects.
|
||||
|
||||
### ![English]
|
||||
|
||||
### ![Chinese Simplified]
|
||||
|
||||
### ![French]
|
||||
|
||||
### ![Spanish]
|
||||
|
||||
### ![Portuguese]
|
||||
|
||||
## License
|
||||
|
||||
Tsacdop is licensed under the [GPL v3.0](https://github.com/stonega/tsacdop/blob/master/LICENSE) license.
|
||||
|
||||
## Build
|
||||
|
||||
1. If you don't have Flutter SDK installed; Please visit the official [Flutter][Flutter Install] site.
|
||||
2. Fetch the latest source code from the master branch.
|
||||
|
||||
```
|
||||
git clone https://github.com/stonega/tsacdop.git
|
||||
```
|
||||
|
||||
3. Add api search api configure file.
|
||||
|
||||
Tsacdop uses the ListenNotes API 1.0 pro to search for podcasts, which is not free, so I can not expose the API key in the repo.
|
||||
If you want to build the app, you need to create a new file named `.env.dart` in the lib folder. Add the following code to `.env.dart`. If you don't have a ListenNotes api key, keep the apiKey empty like ''. Then the app will only support the PodcastIndex search.
|
||||
You can get your own ListenNotes API key on [ListenNotes](https://www.listennotes.com/api/). Remember that you need to get a pro plan API because the basic plan doesn't provide an rss link for the search result.
|
||||
|
||||
``` dart
|
||||
final environment = {"apiKey":""};
|
||||
```
|
||||
|
||||
4. Run the app with Android Studio or Visual Studio. Or the command line.
|
||||
|
||||
```
|
||||
flutter pub get
|
||||
flutter run
|
||||
```
|
||||
|
||||
## Contribute
|
||||
|
||||
If you have an issue or found a bug, please raise a GitHub issue. Pull requests are also welcome.
|
||||
|
||||
## Architecture
|
||||
|
||||
### Plugins
|
||||
|
||||
* Local storage
|
||||
+ sqflite
|
||||
+ shared_preferences
|
||||
* Audio
|
||||
+ just_audio
|
||||
+ audio_service
|
||||
* State management
|
||||
+ provider
|
||||
* Download
|
||||
+ flutter_downloader
|
||||
* Background task
|
||||
+ workmanager
|
||||
|
||||
### Directory Structure
|
||||
|
||||
```
|
||||
UI
|
||||
src
|
||||
└──home
|
||||
├──home.dart [Homepage]
|
||||
├──searc_podcast.dart [Search Page]
|
||||
└──playlist.dart [Playlist Page]
|
||||
└──podcasts
|
||||
├──podcast_manage.dart [Group Page]
|
||||
└──podcast_detail.dart [Podcast Page]
|
||||
└──episodes
|
||||
└──episode_detail.dart [Episode Page]
|
||||
└──settings
|
||||
└──setting.dart [Setting Page]
|
||||
|
||||
STATE
|
||||
src
|
||||
└──state
|
||||
├──audio_state.dart [Audio State]
|
||||
├──download_state.dart [Episode Download]
|
||||
├──podcast_group.dart [Podcast Groups]
|
||||
├──refresh_podcast.dart [Episode Refresh]
|
||||
└──setting_state.dart [Setting]
|
||||
|
||||
Service
|
||||
src
|
||||
└──service
|
||||
├──api_service.dart [Podcast Search]
|
||||
├──gpodder_api.dart [Gpodder intergate]
|
||||
└──ompl_builde.dart [OMPL export]
|
||||
```
|
||||
|
||||
## Known Issue
|
||||
|
||||
* Playlist is unstable
|
||||
|
||||
## Contact
|
||||
|
||||
You can reach out to me directly at [tsacdop.app@gmail.com](mailto:<tsacdop.app@gmail.com>).
|
||||
|
||||
Or you can join our [Telegram Group](https://t.me/joinchat/Bk3LkRpTHy40QYC78PK7Qg).
|
||||
|
||||
## Getting Started with Flutter
|
||||
|
||||
This project is a starting point for a Flutter application.
|
||||
|
||||
Here are a few resources to get you started if this is your first Flutter project:
|
||||
|
||||
* [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
|
||||
* [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
|
||||
|
||||
For help getting started with Flutter, view our
|
||||
[online documentation](https://flutter.dev/docs), which offers tutorials, samples, guidance on mobile development, and a full API reference.
|
||||
|
||||
[Flutter Install]: https://flutter.dev/docs/get-started/install
|
||||
[tsacdop banner]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/banner.png
|
||||
[build status - cirrus]: https://circleci.com/gh/stonega/tsacdop/tree/master.svg?style=shield
|
||||
[github action]: https://github.com/stonega/tsacdop/workflows/Flutter%20Build/badge.svg
|
||||
[github action link]: https://github.com/stonega/tsacdop/actions
|
||||
[build status ]: https://circleci.com/gh/stonega/tsacdop/tree/master
|
||||
[github release]: https://img.shields.io/github/v/release/stonega/tsacdop
|
||||
[github release - recent]: https://github.com/stonega/tsacdop/releases
|
||||
[github downloads]: https://img.shields.io/github/downloads/stonega/tsacdop/total?color=%230000d&label=downloads
|
||||
[fdroid install]: https://img.shields.io/f-droid/v/com.stonegate.tsacdop?include_prereleases
|
||||
[fdroid link]: https://f-droid.org/en/packages/com.stonegate.tsacdop/
|
||||
[localizely]: https://img.shields.io/badge/dynamic/json?color=%2326c6da&label=localizely&query=%24.languages.length&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus
|
||||
[English]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=English&query=%24.languages%5B3%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=%
|
||||
[Chinese Simplified]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=Chinese%20Simplified&query=%24.languages%5B2%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=%
|
||||
[French]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=French(ppp)&query=%24.languages%5B5%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=%
|
||||
[Spanish]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=Spanish(Joel)&query=%24.languages%5B7%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=%
|
||||
[Portuguese]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=portuguese(Bruno)&query=%24.languages%5B9%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=%
|
||||
[localizely - website]: https://localizely.com/
|
||||
[google play - icon]: https://img.shields.io/badge/google-playStore-%2323CCC6
|
||||
[google play]: https://play.google.com/store/apps/details?id=com.stonegate.tsacdop
|
||||
[Homepage ScreenShot]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/1585893838840.png
|
||||
[Group Screenshot]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/1585894051734.png
|
||||
[Podcast Screenshot]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/1585893877702.png
|
||||
[Episode Screenshot]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/1585896237809.png
|
||||
[Darkmode Screenshot]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/1585893920721.png
|
||||
[style: effective dart]: https://img.shields.io/badge/style-effective_dart-40c4ff.svg
|
||||
[effective dart pub]: https://pub.dev/packages/effective_dart
|
||||
[license]: https://github.com/stonega/tsacdop/blob/master/LICENSE
|
||||
[License badge]: https://img.shields.io/badge/license-GPLv3-yellow.svg
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
gradle-wrapper.jar
|
||||
/.gradle
|
||||
/captures/
|
||||
/gradlew
|
||||
/gradlew.bat
|
||||
/local.properties
|
||||
GeneratedPluginRegistrant.java
|
||||
gradle-wrapper.jar
|
||||
/.gradle
|
||||
/captures/
|
||||
/gradlew
|
||||
/gradlew.bat
|
||||
/local.properties
|
||||
GeneratedPluginRegistrant.java
|
||||
|
|
|
@ -1,17 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>android</name>
|
||||
<comment>Project android created by Buildship.</comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>android</name>
|
||||
<comment>Project android created by Buildship.</comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
|
||||
</natures>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1651309616208</id>
|
||||
<name></name>
|
||||
<type>30</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.core.resources.regexFilterMatcher</id>
|
||||
<arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
</projectDescription>
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
arguments=
|
||||
auto.sync=false
|
||||
build.scans.enabled=false
|
||||
connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
|
||||
connection.project.dir=app
|
||||
eclipse.preferences.version=1
|
||||
gradle.user.home=
|
||||
java.home=C\:/Program Files/Java/jdk1.8.0_171
|
||||
jvm.arguments=
|
||||
offline.mode=false
|
||||
override.workspace.settings=true
|
||||
show.console.view=true
|
||||
show.executions.view=true
|
||||
arguments=
|
||||
auto.sync=false
|
||||
build.scans.enabled=false
|
||||
connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
|
||||
connection.project.dir=
|
||||
eclipse.preferences.version=1
|
||||
gradle.user.home=
|
||||
java.home=/usr/lib/jvm/java-17-openjdk-17.0.3.0.7-1.fc36.x86_64
|
||||
jvm.arguments=
|
||||
offline.mode=false
|
||||
override.workspace.settings=true
|
||||
show.console.view=true
|
||||
show.executions.view=true
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
source "https://rubygems.org"
|
||||
|
||||
gem "fastlane"
|
|
@ -0,0 +1,201 @@
|
|||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
CFPropertyList (3.0.3)
|
||||
addressable (2.8.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
artifactory (3.0.15)
|
||||
atomos (0.1.3)
|
||||
aws-eventstream (1.1.0)
|
||||
aws-partitions (1.422.0)
|
||||
aws-sdk-core (3.111.2)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
aws-partitions (~> 1, >= 1.239.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
jmespath (~> 1.0)
|
||||
aws-sdk-kms (1.41.0)
|
||||
aws-sdk-core (~> 3, >= 3.109.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-s3 (1.87.0)
|
||||
aws-sdk-core (~> 3, >= 3.109.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sigv4 (1.2.2)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
babosa (1.0.4)
|
||||
claide (1.0.3)
|
||||
colored (1.2)
|
||||
colored2 (3.1.2)
|
||||
commander-fastlane (4.4.6)
|
||||
highline (~> 1.7.2)
|
||||
declarative (0.0.20)
|
||||
declarative-option (0.1.0)
|
||||
digest-crc (0.6.3)
|
||||
rake (>= 12.0.0, < 14.0.0)
|
||||
domain_name (0.5.20190701)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
dotenv (2.7.6)
|
||||
emoji_regex (3.2.1)
|
||||
excon (0.78.1)
|
||||
faraday (1.3.0)
|
||||
faraday-net_http (~> 1.0)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
ruby2_keywords
|
||||
faraday-cookie_jar (0.0.7)
|
||||
faraday (>= 0.8.0)
|
||||
http-cookie (~> 1.0.0)
|
||||
faraday-net_http (1.0.1)
|
||||
faraday_middleware (1.0.0)
|
||||
faraday (~> 1.0)
|
||||
fastimage (2.2.2)
|
||||
fastlane (2.172.0)
|
||||
CFPropertyList (>= 2.3, < 4.0.0)
|
||||
addressable (>= 2.3, < 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
|
||||
commander-fastlane (>= 4.4.6, < 5.0.0)
|
||||
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-api-client (>= 0.37.0, < 0.39.0)
|
||||
google-cloud-storage (>= 1.15.0, < 2.0.0)
|
||||
highline (>= 1.7.2, < 2.0.0)
|
||||
json (< 3.0.0)
|
||||
jwt (>= 2.1.0, < 3)
|
||||
mini_magick (>= 4.9.4, < 5.0.0)
|
||||
multipart-post (~> 2.0.0)
|
||||
plist (>= 3.1.0, < 4.0.0)
|
||||
rubyzip (>= 2.0.0, < 3.0.0)
|
||||
security (= 0.1.3)
|
||||
simctl (~> 1.6.3)
|
||||
slack-notifier (>= 2.0.0, < 3.0.0)
|
||||
terminal-notifier (>= 2.0.0, < 3.0.0)
|
||||
terminal-table (>= 1.4.5, < 2.0.0)
|
||||
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)
|
||||
gh_inspector (1.1.3)
|
||||
google-api-client (0.38.0)
|
||||
addressable (~> 2.5, >= 2.5.1)
|
||||
googleauth (~> 0.9)
|
||||
httpclient (>= 2.8.1, < 3.0)
|
||||
mini_mime (~> 1.0)
|
||||
representable (~> 3.0)
|
||||
retriable (>= 2.0, < 4.0)
|
||||
signet (~> 0.12)
|
||||
google-apis-core (0.2.1)
|
||||
addressable (~> 2.5, >= 2.5.1)
|
||||
googleauth (~> 0.14)
|
||||
httpclient (>= 2.8.1, < 3.0)
|
||||
mini_mime (~> 1.0)
|
||||
representable (~> 3.0)
|
||||
retriable (>= 2.0, < 4.0)
|
||||
rexml
|
||||
signet (~> 0.14)
|
||||
webrick
|
||||
google-apis-iamcredentials_v1 (0.1.0)
|
||||
google-apis-core (~> 0.1)
|
||||
google-apis-storage_v1 (0.1.0)
|
||||
google-apis-core (~> 0.1)
|
||||
google-cloud-core (1.5.0)
|
||||
google-cloud-env (~> 1.0)
|
||||
google-cloud-errors (~> 1.0)
|
||||
google-cloud-env (1.4.0)
|
||||
faraday (>= 0.17.3, < 2.0)
|
||||
google-cloud-errors (1.0.1)
|
||||
google-cloud-storage (1.30.0)
|
||||
addressable (~> 2.5)
|
||||
digest-crc (~> 0.4)
|
||||
google-apis-iamcredentials_v1 (~> 0.1)
|
||||
google-apis-storage_v1 (~> 0.1)
|
||||
google-cloud-core (~> 1.2)
|
||||
googleauth (~> 0.9)
|
||||
mini_mime (~> 1.0)
|
||||
googleauth (0.15.0)
|
||||
faraday (>= 0.17.3, < 2.0)
|
||||
jwt (>= 1.4, < 3.0)
|
||||
memoist (~> 0.16)
|
||||
multi_json (~> 1.11)
|
||||
os (>= 0.9, < 2.0)
|
||||
signet (~> 0.14)
|
||||
highline (1.7.10)
|
||||
http-cookie (1.0.3)
|
||||
domain_name (~> 0.5)
|
||||
httpclient (2.8.3)
|
||||
jmespath (1.6.1)
|
||||
json (2.5.1)
|
||||
jwt (2.2.2)
|
||||
memoist (0.16.2)
|
||||
mini_magick (4.11.0)
|
||||
mini_mime (1.0.2)
|
||||
multi_json (1.15.0)
|
||||
multipart-post (2.0.0)
|
||||
nanaimo (0.3.0)
|
||||
naturally (2.2.1)
|
||||
os (1.1.1)
|
||||
plist (3.6.0)
|
||||
public_suffix (4.0.6)
|
||||
rake (13.0.3)
|
||||
representable (3.0.4)
|
||||
declarative (< 0.1.0)
|
||||
declarative-option (< 0.2.0)
|
||||
uber (< 0.2.0)
|
||||
retriable (3.1.2)
|
||||
rexml (3.2.5)
|
||||
rouge (2.0.7)
|
||||
ruby2_keywords (0.0.4)
|
||||
rubyzip (2.3.0)
|
||||
security (0.1.3)
|
||||
signet (0.14.1)
|
||||
addressable (~> 2.3)
|
||||
faraday (>= 0.17.3, < 2.0)
|
||||
jwt (>= 1.5, < 3.0)
|
||||
multi_json (~> 1.10)
|
||||
simctl (1.6.8)
|
||||
CFPropertyList
|
||||
naturally
|
||||
slack-notifier (2.3.2)
|
||||
terminal-notifier (2.0.0)
|
||||
terminal-table (1.8.0)
|
||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||
tty-cursor (0.7.1)
|
||||
tty-screen (0.8.1)
|
||||
tty-spinner (0.9.3)
|
||||
tty-cursor (~> 0.7)
|
||||
uber (0.1.0)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.7.7)
|
||||
unicode-display_width (1.7.0)
|
||||
webrick (1.7.0)
|
||||
word_wrap (1.0.0)
|
||||
xcodeproj (1.19.0)
|
||||
CFPropertyList (>= 2.3.3, < 4.0)
|
||||
atomos (~> 0.1.3)
|
||||
claide (>= 1.0.2, < 2.0)
|
||||
colored2 (~> 3.1)
|
||||
nanaimo (~> 0.3.0)
|
||||
xcpretty (0.3.0)
|
||||
rouge (~> 2.0.7)
|
||||
xcpretty-travis-formatter (1.0.1)
|
||||
xcpretty (~> 0.2, >= 0.0.7)
|
||||
|
||||
PLATFORMS
|
||||
x86_64-linux
|
||||
|
||||
DEPENDENCIES
|
||||
fastlane
|
||||
|
||||
BUNDLED WITH
|
||||
2.2.7
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/"/>
|
||||
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/>
|
||||
<classpathentry kind="output" path="bin/default"/>
|
||||
</classpath>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/"/>
|
||||
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/>
|
||||
<classpathentry kind="output" path="bin/default"/>
|
||||
</classpath>
|
||||
|
|
|
@ -1,23 +1,23 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>app</name>
|
||||
<comment>Project app created by Buildship.</comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>app</name>
|
||||
<comment>Project app created by Buildship.</comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
arguments=
|
||||
auto.sync=false
|
||||
build.scans.enabled=false
|
||||
connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.3))
|
||||
connection.project.dir=
|
||||
eclipse.preferences.version=1
|
||||
gradle.user.home=
|
||||
java.home=C\:/Program Files/Java/jdk1.8.0_171
|
||||
jvm.arguments=
|
||||
offline.mode=false
|
||||
override.workspace.settings=true
|
||||
show.console.view=true
|
||||
show.executions.view=true
|
||||
arguments=
|
||||
auto.sync=false
|
||||
build.scans.enabled=false
|
||||
connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.3))
|
||||
connection.project.dir=
|
||||
eclipse.preferences.version=1
|
||||
gradle.user.home=
|
||||
java.home=C\:/Program Files/Java/jdk1.8.0_171
|
||||
jvm.arguments=
|
||||
offline.mode=false
|
||||
override.workspace.settings=true
|
||||
show.console.view=true
|
||||
show.executions.view=true
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||
org.eclipse.jdt.core.compiler.source=1.8
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||
org.eclipse.jdt.core.compiler.source=1.8
|
||||
|
|
|
@ -1,90 +1,110 @@
|
|||
def localProperties = new Properties()
|
||||
def localPropertiesFile = rootProject.file('local.properties')
|
||||
if (localPropertiesFile.exists()) {
|
||||
localPropertiesFile.withReader('UTF-8') { reader ->
|
||||
localProperties.load(reader)
|
||||
}
|
||||
}
|
||||
|
||||
def flutterRoot = localProperties.getProperty('flutter.sdk')
|
||||
if (flutterRoot == null) {
|
||||
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
|
||||
}
|
||||
|
||||
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
||||
if (flutterVersionCode == null) {
|
||||
flutterVersionCode = '1'
|
||||
}
|
||||
|
||||
def flutterVersionName = localProperties.getProperty('flutter.versionName')
|
||||
if (flutterVersionName == null) {
|
||||
flutterVersionName = '1.0'
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||
|
||||
def keystoreProperties = new Properties()
|
||||
def keystorePropertiesFile = rootProject.file('key.properties')
|
||||
if (keystorePropertiesFile.exists()) {
|
||||
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 29
|
||||
|
||||
ndkVersion "21.1.6352462"
|
||||
|
||||
sourceSets {
|
||||
main.java.srcDirs += 'src/main/kotlin'
|
||||
}
|
||||
|
||||
lintOptions {
|
||||
disable 'InvalidPackage'
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
||||
applicationId "com.stonegate.tsacdop"
|
||||
minSdkVersion 19
|
||||
targetSdkVersion 29
|
||||
versionCode flutterVersionCode.toInteger()
|
||||
versionName flutterVersionName
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
release {
|
||||
storeFile file(System.getenv("KEYSTORE") ?:"keystore.jks")
|
||||
storePassword System.getenv("KEYSTORE_PASSWORD")
|
||||
keyAlias System.getenv("KEY_ALIAS")
|
||||
keyPassword System.getenv("KEY_PASSWORD")
|
||||
// keyAlias keystoreProperties['keyAlias']
|
||||
// keyPassword keystoreProperties['keyPassword']
|
||||
// storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
|
||||
// storePassword keystoreProperties['storePassword']
|
||||
}
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
signingConfig signingConfigs.release
|
||||
shrinkResources false
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
flutter {
|
||||
source '../..'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||
testImplementation 'junit:junit:4.13'
|
||||
androidTestImplementation 'androidx.test:runner:1.2.0'
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
|
||||
def appcompat_version = "1.1.0"
|
||||
implementation "androidx.appcompat:appcompat:$appcompat_version"
|
||||
implementation "androidx.appcompat:appcompat-resources:$appcompat_version"
|
||||
}
|
||||
def localProperties = new Properties()
|
||||
def localPropertiesFile = rootProject.file('local.properties')
|
||||
if (localPropertiesFile.exists()) {
|
||||
localPropertiesFile.withReader('UTF-8') { reader ->
|
||||
localProperties.load(reader)
|
||||
}
|
||||
}
|
||||
|
||||
def flutterRoot = localProperties.getProperty('flutter.sdk')
|
||||
if (flutterRoot == null) {
|
||||
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
|
||||
}
|
||||
|
||||
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
||||
if (flutterVersionCode == null) {
|
||||
flutterVersionCode = '1'
|
||||
}
|
||||
|
||||
def flutterVersionName = localProperties.getProperty('flutter.versionName')
|
||||
if (flutterVersionName == null) {
|
||||
flutterVersionName = '1.0'
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||
|
||||
def keystoreProperties = new Properties()
|
||||
def keystorePropertiesFile = rootProject.file('key.properties')
|
||||
if (keystorePropertiesFile.exists()) {
|
||||
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 31
|
||||
|
||||
ndkVersion "22.1.7171670"
|
||||
|
||||
sourceSets {
|
||||
main.java.srcDirs += 'src/main/kotlin'
|
||||
}
|
||||
|
||||
lintOptions {
|
||||
disable 'InvalidPackage'
|
||||
checkReleaseBuilds false
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
applicationId "com.stonegate.tsacdop"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 29
|
||||
versionCode flutterVersionCode.toInteger()
|
||||
versionName flutterVersionName
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
release {
|
||||
storeFile file(System.getenv("KEYSTORE") ?:"keystore.jks")
|
||||
storePassword System.getenv("KEYSTORE_PASSWORD")
|
||||
keyAlias System.getenv("KEY_ALIAS")
|
||||
keyPassword System.getenv("KEY_PASSWORD")
|
||||
// keyAlias keystoreProperties['keyAlias']
|
||||
// keyPassword keystoreProperties['keyPassword']
|
||||
// storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
|
||||
// storePassword keystoreProperties['storePassword']
|
||||
}
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
signingConfig signingConfigs.release
|
||||
shrinkResources false
|
||||
}
|
||||
}
|
||||
|
||||
flavorDimensions "deploy"
|
||||
|
||||
productFlavors {
|
||||
play {
|
||||
dimension "deploy"
|
||||
signingConfig signingConfigs.release
|
||||
}
|
||||
fdroid {
|
||||
dimension "deploy"
|
||||
signingConfig null
|
||||
}
|
||||
}
|
||||
|
||||
// android.applicationVariants.all { variant ->
|
||||
// if (variant.flavorName == "play") {
|
||||
// variant.outputs.all { output ->
|
||||
// output.outputFileName = "app-release.apk"
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
flutter {
|
||||
source '../..'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||
testImplementation 'junit:junit:4.13'
|
||||
androidTestImplementation 'androidx.test:runner:1.2.0'
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
|
||||
def appcompat_version = "1.1.0"
|
||||
implementation "androidx.appcompat:appcompat:$appcompat_version"
|
||||
implementation "androidx.appcompat:appcompat-resources:$appcompat_version"
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.stonegate.tsacdop">
|
||||
<!-- Flutter needs it to communicate with the running application
|
||||
to allow setting breakpoints, to provide hot reload, etc.
|
||||
-->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
</manifest>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.stonegate.tsacdop">
|
||||
<!-- Flutter needs it to communicate with the running application
|
||||
to allow setting breakpoints, to provide hot reload, etc.
|
||||
-->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
</manifest>
|
||||
|
|
|
@ -1,34 +1,33 @@
|
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.stonegate.tsacdop" xmlns:tools="http://schemas.android.com/tools" android:installLocation="auto">
|
||||
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
|
||||
calls FlutterMain.startInitialization(this); in its onCreate method.
|
||||
In most cases you can leave this as-is, but you if you want to provide
|
||||
additional functionality it is fine to subclass or reimplement
|
||||
FlutterApplication and put your custom class here. -->
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
<application android:name="io.flutter.app.FlutterApplication" android:label="Tsacdop" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:networkSecurityConfig="@xml/network_security_config">
|
||||
<activity android:name=".MainActivity" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize">
|
||||
<meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/LaunchTheme" />
|
||||
<meta-data android:name="io.flutter.embedding.android.SplashScreenDrawable" android:resource="@drawable/normal_background" />
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
<!-- <meta-data android:name="io.flutter.embedding.android.SplashScreenUntilFirstFrame" android:value="true" /> -->
|
||||
</activity>
|
||||
<service android:name="com.ryanheise.audioservice.AudioService">
|
||||
<intent-filter>
|
||||
<action android:name="android.media.browse.MediaBrowserService" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
<receiver android:name="com.ryanheise.audioservice.MediaButtonReceiver">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MEDIA_BUTTON" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<!-- Don't delete the meta-data below.
|
||||
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
|
||||
<meta-data android:name="flutterEmbedding" android:value="2" />
|
||||
</application>
|
||||
</manifest>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.stonegate.tsacdop" xmlns:tools="http://schemas.android.com/tools" android:installLocation="auto">
|
||||
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
|
||||
calls FlutterMain.startInitialization(this); in its onCreate method.
|
||||
In most cases you can leave this as-is, but you if you want to provide
|
||||
additional functionality it is fine to subclass or reimplement
|
||||
FlutterApplication and put your custom class here. -->
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
<application android:name=".MainApplication" android:label="Tsacdop" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:networkSecurityConfig="@xml/network_security_config">
|
||||
<activity android:name="com.ryanheise.audioservice.AudioServiceActivity" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize">
|
||||
<meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/LaunchTheme" />
|
||||
<meta-data android:name="io.flutter.embedding.android.SplashScreenDrawable" android:resource="@drawable/normal_background" />
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<service android:name="com.ryanheise.audioservice.AudioService">
|
||||
<intent-filter>
|
||||
<action android:name="android.media.browse.MediaBrowserService" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
<receiver android:name="com.ryanheise.audioservice.MediaButtonReceiver">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MEDIA_BUTTON" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<!-- Don't delete the meta-data below.
|
||||
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
|
||||
<meta-data android:name="flutterEmbedding" android:value="2" />
|
||||
</application>
|
||||
</manifest>
|
||||
|
|
|
@ -1,39 +1,45 @@
|
|||
package io.flutter.plugins;
|
||||
|
||||
import androidx.annotation.Keep;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import io.flutter.embedding.engine.FlutterEngine;
|
||||
import io.flutter.embedding.engine.plugins.shim.ShimPluginRegistry;
|
||||
import io.flutter.plugin.common.PluginRegistry;
|
||||
import io.flutter.plugins.pathprovider.PathProviderPlugin;
|
||||
import com.tekartik.sqflite.SqflitePlugin;
|
||||
import io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin;
|
||||
import vn.hunghd.flutterdownloader.FlutterDownloaderPlugin;
|
||||
|
||||
/**
|
||||
* Generated file. Do not edit. This file is generated by the Flutter tool based
|
||||
* on the plugins that support the Android platform.
|
||||
*/
|
||||
|
||||
@Keep
|
||||
public final class IsolatePluginRegistrant {
|
||||
public static void registerWith(PluginRegistry registry) {
|
||||
if (alreadyRegisteredWith(registry)) {
|
||||
return;
|
||||
}
|
||||
PathProviderPlugin.registerWith(registry.registrarFor("io.flutter.plugins.pathprovider.PathProviderPlugin"));
|
||||
SqflitePlugin.registerWith(registry.registrarFor("com.tekartik.sqflite.SqflitePlugin"));
|
||||
SharedPreferencesPlugin.registerWith(registry.registrarFor("io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin"));
|
||||
FlutterDownloaderPlugin.registerWith(registry.registrarFor("vn.hunghd.flutterdownloader.FlutterDownloaderPlugin"));
|
||||
}
|
||||
|
||||
private static boolean alreadyRegisteredWith(PluginRegistry registry) {
|
||||
final String key = IsolatePluginRegistrant.class.getCanonicalName();
|
||||
if (registry.hasPlugin(key)) {
|
||||
return true;
|
||||
}
|
||||
registry.registrarFor(key);
|
||||
return false;
|
||||
}
|
||||
package io.flutter.plugins;
|
||||
|
||||
import androidx.annotation.Keep;
|
||||
import androidx.annotation.NonNull;
|
||||
import io.flutter.Log;
|
||||
|
||||
import io.flutter.embedding.engine.FlutterEngine;
|
||||
import io.flutter.embedding.engine.plugins.shim.ShimPluginRegistry;
|
||||
import io.flutter.plugin.common.PluginRegistry;
|
||||
import io.flutter.plugins.pathprovider.PathProviderPlugin;
|
||||
import com.tekartik.sqflite.SqflitePlugin;
|
||||
import io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin;
|
||||
import vn.hunghd.flutterdownloader.FlutterDownloaderPlugin;
|
||||
|
||||
@Keep
|
||||
public final class IsolatePluginRegistrant {
|
||||
private static final String TAG = "CustomPluginRegistrant";
|
||||
public static void registerWith(@NonNull FlutterEngine flutterEngine) {
|
||||
try {
|
||||
flutterEngine.getPlugins().add(new vn.hunghd.flutterdownloader.FlutterDownloaderPlugin());
|
||||
} catch(Exception e) {
|
||||
Log.e(TAG, "Error registering plugin flutter_downloader, vn.hunghd.flutterdownloader.FlutterDownloaderPlugin", e);
|
||||
}
|
||||
try {
|
||||
flutterEngine.getPlugins().add(new com.rmawatson.flutterisolate.FlutterIsolatePlugin());
|
||||
} catch(Exception e) {
|
||||
Log.e(TAG, "Error registering plugin flutter_isolate, com.rmawatson.flutterisolate.FlutterIsolatePlugin", e);
|
||||
}
|
||||
try {
|
||||
flutterEngine.getPlugins().add(new io.flutter.plugins.pathprovider.PathProviderPlugin());
|
||||
} catch(Exception e) {
|
||||
Log.e(TAG, "Error registering plugin path_provider_android, io.flutter.plugins.pathprovider.PathProviderPlugin", e);
|
||||
}
|
||||
try {
|
||||
flutterEngine.getPlugins().add(new io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin());
|
||||
} catch(Exception e) {
|
||||
Log.e(TAG, "Error registering plugin shared_preferences, io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin", e);
|
||||
}
|
||||
try {
|
||||
flutterEngine.getPlugins().add(new com.tekartik.sqflite.SqflitePlugin());
|
||||
} catch(Exception e) {
|
||||
Log.e(TAG, "Error registering plugin sqflite, com.tekartik.sqflite.SqflitePlugin", e);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,28 +1,28 @@
|
|||
package com.stonegate.tsacdop
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
import io.flutter.embedding.engine.FlutterEngine
|
||||
import io.flutter.view.FlutterNativeView
|
||||
import io.flutter.plugins.GeneratedPluginRegistrant
|
||||
import io.flutter.plugins.IsolatePluginRegistrant
|
||||
import io.flutter.plugin.common.MethodChannel
|
||||
import io.flutter.plugin.common.MethodChannel.MethodCallHandler
|
||||
import io.flutter.plugin.common.MethodChannel.Result
|
||||
import io.flutter.embedding.engine.dart.DartExecutor
|
||||
import io.flutter.embedding.engine.dart.DartExecutor.DartCallback
|
||||
import com.rmawatson.flutterisolate.FlutterIsolatePlugin
|
||||
|
||||
class MainActivity: FlutterActivity() {
|
||||
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
|
||||
GeneratedPluginRegistrant.registerWith(flutterEngine);
|
||||
FlutterIsolatePlugin.setCustomIsolateRegistrant(IsolatePluginRegistrant::class.java);
|
||||
MethodChannel(flutterEngine.dartExecutor, "android_app_retain").apply {
|
||||
setMethodCallHandler { method, result ->
|
||||
if (method.method == "sendToBackground") {
|
||||
moveTaskToBack(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
package com.stonegate.tsacdop
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
import io.flutter.embedding.engine.FlutterEngine
|
||||
import io.flutter.view.FlutterNativeView
|
||||
import io.flutter.plugins.GeneratedPluginRegistrant
|
||||
import io.flutter.plugins.IsolatePluginRegistrant
|
||||
import io.flutter.plugin.common.MethodChannel
|
||||
import io.flutter.plugin.common.MethodChannel.MethodCallHandler
|
||||
import io.flutter.plugin.common.MethodChannel.Result
|
||||
import io.flutter.embedding.engine.dart.DartExecutor
|
||||
import io.flutter.embedding.engine.dart.DartExecutor.DartCallback
|
||||
import com.rmawatson.flutterisolate.FlutterIsolatePlugin
|
||||
|
||||
|
||||
class MainActivity: FlutterActivity() {
|
||||
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
|
||||
GeneratedPluginRegistrant.registerWith(flutterEngine);
|
||||
MethodChannel(flutterEngine.dartExecutor, "android_app_retain").apply {
|
||||
setMethodCallHandler { method, result ->
|
||||
if (method.method == "sendToBackground") {
|
||||
moveTaskToBack(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
package com.stonegate.tsacdop
|
||||
import com.rmawatson.flutterisolate.FlutterIsolatePlugin
|
||||
import io.flutter.app.FlutterApplication
|
||||
import io.flutter.plugins.IsolatePluginRegistrant
|
||||
|
||||
public class MainApplication: FlutterApplication() {
|
||||
public fun MainApplication() {
|
||||
FlutterIsolatePlugin.setCustomIsolateRegistrant(IsolatePluginRegistrant::class.java);
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 265 B |
After Width: | Height: | Size: 294 B |
After Width: | Height: | Size: 397 B |
After Width: | Height: | Size: 415 B |
After Width: | Height: | Size: 197 B |
After Width: | Height: | Size: 206 B |
After Width: | Height: | Size: 294 B |
After Width: | Height: | Size: 316 B |
|
@ -1,17 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@color/blackGrey" />
|
||||
<!-- You can insert your own image assets here -->
|
||||
<item>
|
||||
<bitmap
|
||||
android:gravity="center"
|
||||
android:tileMode="disabled"
|
||||
android:src="@mipmap/ic_splash" />
|
||||
</item>
|
||||
<item android:bottom="100dp">
|
||||
<bitmap
|
||||
android:gravity="bottom"
|
||||
android:src="@mipmap/text_light" />
|
||||
</item>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@color/blackGrey" />
|
||||
<!-- You can insert your own image assets here -->
|
||||
<item>
|
||||
<bitmap
|
||||
android:gravity="center"
|
||||
android:tileMode="disabled"
|
||||
android:src="@mipmap/ic_splash" />
|
||||
</item>
|
||||
<item android:bottom="100dp">
|
||||
<bitmap
|
||||
android:gravity="bottom"
|
||||
android:src="@mipmap/text_light" />
|
||||
</item>
|
||||
</layer-list>
|
|
@ -1,9 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@color/blackGrey" />
|
||||
<!-- You can insert your own image assets here -->
|
||||
<item android:bottom="100dp">
|
||||
<bitmap android:gravity="bottom" android:src="@mipmap/text_light" />
|
||||
</item>-->
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@color/blackGrey" />
|
||||
<!-- You can insert your own image assets here -->
|
||||
<item android:bottom="100dp">
|
||||
<bitmap android:gravity="bottom" android:src="@mipmap/text_light" />
|
||||
</item>-->
|
||||
</layer-list>
|
After Width: | Height: | Size: 294 B |
After Width: | Height: | Size: 316 B |
After Width: | Height: | Size: 415 B |
After Width: | Height: | Size: 521 B |
After Width: | Height: | Size: 397 B |
After Width: | Height: | Size: 415 B |
After Width: | Height: | Size: 659 B |
After Width: | Height: | Size: 673 B |
After Width: | Height: | Size: 415 B |
After Width: | Height: | Size: 521 B |
After Width: | Height: | Size: 673 B |
After Width: | Height: | Size: 880 B |
|
@ -1,12 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@android:color/white" />
|
||||
<!-- You can insert your own image assets here -->
|
||||
<item>
|
||||
<bitmap android:gravity="center" android:tileMode="disabled" android:src="@mipmap/ic_splash" />
|
||||
</item>
|
||||
<item android:bottom="100dp">
|
||||
<bitmap android:gravity="bottom" android:src="@mipmap/text" />
|
||||
</item>
|
||||
</layer-list>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@android:color/white" />
|
||||
<!-- You can insert your own image assets here -->
|
||||
<item>
|
||||
<bitmap android:gravity="center" android:tileMode="disabled" android:src="@mipmap/ic_splash" />
|
||||
</item>
|
||||
<item android:bottom="100dp">
|
||||
<bitmap android:gravity="bottom" android:src="@mipmap/text" />
|
||||
</item>
|
||||
</layer-list>
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@color/blackGrey" />
|
||||
<!-- You can insert your own image assets here -->
|
||||
<item>
|
||||
<bitmap android:gravity="center" android:tileMode="disabled" android:src="@mipmap/ic_splash" />
|
||||
</item>
|
||||
<item android:bottom="100dp">
|
||||
<bitmap android:gravity="bottom" android:src="@mipmap/text_light" />
|
||||
</item>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@color/blackGrey" />
|
||||
<!-- You can insert your own image assets here -->
|
||||
<item>
|
||||
<bitmap android:gravity="center" android:tileMode="disabled" android:src="@mipmap/ic_splash" />
|
||||
</item>
|
||||
<item android:bottom="100dp">
|
||||
<bitmap android:gravity="bottom" android:src="@mipmap/text_light" />
|
||||
</item>
|
||||
</layer-list>
|
|
@ -1,9 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@android:color/white" />
|
||||
<!-- You can insert your own image assets here -->
|
||||
<item android:bottom="100dp">
|
||||
<bitmap android:gravity="bottom" android:src="@mipmap/text_light" />
|
||||
</item>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@android:color/white" />
|
||||
<!-- You can insert your own image assets here -->
|
||||
<item android:bottom="100dp">
|
||||
<bitmap android:gravity="bottom" android:src="@mipmap/text_light" />
|
||||
</item>
|
||||
</layer-list>
|
|
@ -1,9 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@color/blackGrey" />
|
||||
<!-- You can insert your own image assets here -->
|
||||
<item android:bottom="100dp">
|
||||
<bitmap android:gravity="bottom" android:src="@mipmap/text_light" />
|
||||
</item>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@color/blackGrey" />
|
||||
<!-- You can insert your own image assets here -->
|
||||
<item android:bottom="100dp">
|
||||
<bitmap android:gravity="bottom" android:src="@mipmap/text_light" />
|
||||
</item>
|
||||
</layer-list>
|
|
@ -1,10 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="LaunchTheme" parent="Theme.AppCompat.NoActionBar">
|
||||
<item name="android:windowBackground">@drawable/launch_background_night</item>
|
||||
<item name="android:navigationBarColor">@color/blackGrey</item>
|
||||
<item name="android:statusBarColor">@color/blackGrey</item>
|
||||
<item name="android:windowLightStatusBar">false</item>
|
||||
<item name="android:windowLightNavigationBar">true</item>
|
||||
</style>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="LaunchTheme" parent="Theme.AppCompat.NoActionBar">
|
||||
<item name="android:windowBackground">@drawable/launch_background_night</item>
|
||||
<item name="android:navigationBarColor">@color/blackGrey</item>
|
||||
<item name="android:statusBarColor">@color/blackGrey</item>
|
||||
<item name="android:windowLightStatusBar">false</item>
|
||||
<item name="android:windowLightNavigationBar">true</item>
|
||||
</style>
|
||||
<style name="NormalTheme" parent="Theme.AppCompat.NoActionBar">
|
||||
<item name="android:windowBackground">@drawable/normal_background_night</item>
|
||||
<item name="android:navigationBarColor">@color/blackGrey</item>
|
||||
<item name="android:statusBarColor">@color/blackGrey</item>
|
||||
<item name="android:windowLightStatusBar">false</item>
|
||||
<item name="android:windowLightNavigationBar">true</item>
|
||||
</style>
|
||||
</resources>
|
|
@ -1,12 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="LaunchTheme" parent="Theme.AppCompat.Light.NoActionBar">
|
||||
<!-- Show a splash screen on the activity. Automatically removed when
|
||||
Flutter draws its first frame -->
|
||||
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||
<item name="android:statusBarColor">@color/white</item>
|
||||
<item name="android:navigationBarColor">@color/white</item>
|
||||
<item name="android:windowLightStatusBar">true</item>
|
||||
<item name="android:windowLightNavigationBar">false</item>
|
||||
</style>
|
||||
</resources>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="LaunchTheme" parent="Theme.AppCompat.Light.NoActionBar">
|
||||
<!-- Show a splash screen on the activity. Automatically removed when
|
||||
Flutter draws its first frame -->
|
||||
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||
<item name="android:statusBarColor">@color/white</item>
|
||||
<item name="android:navigationBarColor">@color/white</item>
|
||||
<item name="android:windowLightStatusBar">true</item>
|
||||
<item name="android:windowLightNavigationBar">false</item>
|
||||
</style>
|
||||
<style name="NormalTheme" parent="Theme.AppCompat.Light.NoActionBar">
|
||||
<item name="android:windowBackground">@drawable/normal_background</item>
|
||||
<item name="android:statusBarColor">@color/white</item>
|
||||
<item name="android:navigationBarColor">@color/white</item>
|
||||
<item name="android:windowLightStatusBar">true</item>
|
||||
<item name="android:windowLightNavigationBar">false</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<network-security-config>
|
||||
<base-config cleartextTrafficPermitted="true">
|
||||
<trust-anchors>
|
||||
<certificates src="system" />
|
||||
</trust-anchors>
|
||||
</base-config>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<network-security-config>
|
||||
<base-config cleartextTrafficPermitted="true">
|
||||
<trust-anchors>
|
||||
<certificates src="system" />
|
||||
</trust-anchors>
|
||||
</base-config>
|
||||
</network-security-config>
|
|
@ -1,7 +1,7 @@
|
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.stonegate.tsacdop">
|
||||
<!-- Flutter needs it to communicate with the running application
|
||||
to allow setting breakpoints, to provide hot reload, etc.
|
||||
-->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
</manifest>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.stonegate.tsacdop">
|
||||
<!-- Flutter needs it to communicate with the running application
|
||||
to allow setting breakpoints, to provide hot reload, etc.
|
||||
-->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
</manifest>
|
||||
|
|
|
@ -1,32 +1,32 @@
|
|||
buildscript {
|
||||
ext.kotlin_version = '1.3.70'
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.6.2'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
}
|
||||
}
|
||||
|
||||
rootProject.buildDir = '../build'
|
||||
subprojects {
|
||||
project.buildDir = "${rootProject.buildDir}/${project.name}"
|
||||
}
|
||||
|
||||
//subprojects {
|
||||
// project.evaluationDependsOn(':app')
|
||||
//}
|
||||
|
||||
task clean(type: Delete) {
|
||||
delete rootProject.buildDir
|
||||
}
|
||||
buildscript {
|
||||
ext.kotlin_version = '1.6.21'
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:4.0.1'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
}
|
||||
}
|
||||
|
||||
rootProject.buildDir = '../build'
|
||||
subprojects {
|
||||
project.buildDir = "${rootProject.buildDir}/${project.name}"
|
||||
}
|
||||
|
||||
//subprojects {
|
||||
// project.evaluationDependsOn(':app')
|
||||
//}
|
||||
|
||||
task clean(type: Delete) {
|
||||
delete rootProject.buildDir
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
org.gradle.jvmargs=-Xmx1536M
|
||||
android.enableR8=true
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
org.gradle.jvmargs=-Xmx1536M
|
||||
android.enableR8=true
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#Fri Mar 20 23:46:20 CST 2020
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
|
||||
#Fri Mar 20 23:46:20 CST 2020
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
|
||||
#distributionSha256Sum=abc10bcedb58806e8654210f96031db541bcd2d6fc3161e81cb0572d6a15e821
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
include ':app'
|
||||
|
||||
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
|
||||
|
||||
def plugins = new Properties()
|
||||
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
|
||||
if (pluginsFile.exists()) {
|
||||
pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
|
||||
}
|
||||
|
||||
plugins.each { name, path ->
|
||||
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
|
||||
include ":$name"
|
||||
project(":$name").projectDir = pluginDirectory
|
||||
}
|
||||
include ':app'
|
||||
|
||||
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
|
||||
|
||||
def plugins = new Properties()
|
||||
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
|
||||
if (pluginsFile.exists()) {
|
||||
pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
|
||||
}
|
||||
|
||||
plugins.each { name, path ->
|
||||
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
|
||||
include ":$name"
|
||||
project(":$name").projectDir = pluginDirectory
|
||||
}
|
||||
|
|
|
@ -1 +1 @@
|
|||
include ':app'
|
||||
include ':app'
|
||||
|
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 231 B |
After Width: | Height: | Size: 154 KiB |
After Width: | Height: | Size: 7.8 KiB |
After Width: | Height: | Size: 7.0 KiB |
After Width: | Height: | Size: 9.2 KiB |
After Width: | Height: | Size: 879 B |
|
@ -0,0 +1,2 @@
|
|||
json_key_file("/home/stone/Documents/api.json") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one
|
||||
package_name("com.stonegate.tsacdop")
|
|
@ -0,0 +1,38 @@
|
|||
# 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)
|
||||
|
||||
platform :android do
|
||||
desc "Runs all the tests"
|
||||
lane :test do
|
||||
gradle(task: "test")
|
||||
end
|
||||
|
||||
desc "Submit a new Beta Build to Crashlytics Beta"
|
||||
lane :beta do
|
||||
gradle(task: "clean assembleRelease")
|
||||
crashlytics
|
||||
|
||||
# sh "your_script.sh"
|
||||
# You can also use other beta testing services here
|
||||
end
|
||||
|
||||
desc "Deploy a new version to the Google Play"
|
||||
lane :deploy do
|
||||
gradle(task: "clean assembleRelease")
|
||||
upload_to_play_store
|
||||
end
|
||||
end
|
|
@ -0,0 +1,4 @@
|
|||
Happy new year!
|
||||
What's new in version 0.5.8
|
||||
Shownotes with artwork and chapters in player panel (only work for podcasts support podcast:chapters namespace),
|
||||
Play without subscription, inside search result directly.
|
|
@ -0,0 +1,5 @@
|
|||
New features
|
||||
* Load local folder as playlist
|
||||
* Option to always hide new mark for podcast.
|
||||
* Memory use reduced a lot
|
||||
* Add reddit link
|
|
@ -0,0 +1,24 @@
|
|||
Tsacdop is a clean, simply beautiful and friendly podcast app. which is also free and open source.
|
||||
Why Tsacdop?
|
||||
<b>Unique Design</b> With Tsacdop, you will get a totally different experience with any other podcast players. Tsacdop has a unique layout and good-looking material design.
|
||||
<b>Group management</b> You can manage your podcasts with groups easily.
|
||||
<b>Privacy Friendly</b> Tsacdop is a free and open sourced application, which won't upload your data to the server.
|
||||
<b>Easy Search</b>The podcast is powered by ListenNotes(unavailable in fdroid version) and PodcastIndex, so you can search from more than 1 million podcasts.
|
||||
Features:
|
||||
* Podcasts group management
|
||||
* Playlist support
|
||||
* Sleep timer
|
||||
* OPML file export and import
|
||||
* Auto syncing in background
|
||||
* Listening and subscription history data
|
||||
* Dark theme / accent color
|
||||
* Download for offline play
|
||||
* Auto download / auto delete downloaded episodes
|
||||
* Change play speed
|
||||
* Skip silence
|
||||
* Boost volume
|
||||
More to come...
|
||||
License
|
||||
All this for FREE, and NO ADS. Tsacdop is an open source project licensed under GPL v3.0, you can star or fork it on GitHub: https://github.com/stonega/tsacdop
|
||||
Contact
|
||||
Tsacdop is still in the development stage, I am working hard on new features, if you have any issue or request any feature, please let me know by email or visit GitHub page.
|
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 538 KiB |
After Width: | Height: | Size: 275 KiB |
After Width: | Height: | Size: 759 KiB |
After Width: | Height: | Size: 278 KiB |
After Width: | Height: | Size: 461 KiB |
After Width: | Height: | Size: 560 KiB |
After Width: | Height: | Size: 370 KiB |
After Width: | Height: | Size: 169 KiB |
After Width: | Height: | Size: 554 KiB |
|
@ -0,0 +1 @@
|
|||
Enjoy podcasts with Tsacdop! An open source podcast player built with flutter.
|
|
@ -0,0 +1 @@
|
|||
Tsacdop - Podcast Player
|
|
@ -0,0 +1 @@
|
|||
https://www.youtube.com/watch?v=noLsnlU-tEM
|
|
@ -1,32 +1,32 @@
|
|||
*.mode1v3
|
||||
*.mode2v3
|
||||
*.moved-aside
|
||||
*.pbxuser
|
||||
*.perspectivev3
|
||||
**/*sync/
|
||||
.sconsign.dblite
|
||||
.tags*
|
||||
**/.vagrant/
|
||||
**/DerivedData/
|
||||
Icon?
|
||||
**/Pods/
|
||||
**/.symlinks/
|
||||
profile
|
||||
xcuserdata
|
||||
**/.generated/
|
||||
Flutter/App.framework
|
||||
Flutter/Flutter.framework
|
||||
Flutter/Flutter.podspec
|
||||
Flutter/Generated.xcconfig
|
||||
Flutter/app.flx
|
||||
Flutter/app.zip
|
||||
Flutter/flutter_assets/
|
||||
Flutter/flutter_export_environment.sh
|
||||
ServiceDefinitions.json
|
||||
Runner/GeneratedPluginRegistrant.*
|
||||
|
||||
# Exceptions to above rules.
|
||||
!default.mode1v3
|
||||
!default.mode2v3
|
||||
!default.pbxuser
|
||||
!default.perspectivev3
|
||||
*.mode1v3
|
||||
*.mode2v3
|
||||
*.moved-aside
|
||||
*.pbxuser
|
||||
*.perspectivev3
|
||||
**/*sync/
|
||||
.sconsign.dblite
|
||||
.tags*
|
||||
**/.vagrant/
|
||||
**/DerivedData/
|
||||
Icon?
|
||||
**/Pods/
|
||||
**/.symlinks/
|
||||
profile
|
||||
xcuserdata
|
||||
**/.generated/
|
||||
Flutter/App.framework
|
||||
Flutter/Flutter.framework
|
||||
Flutter/Flutter.podspec
|
||||
Flutter/Generated.xcconfig
|
||||
Flutter/app.flx
|
||||
Flutter/app.zip
|
||||
Flutter/flutter_assets/
|
||||
Flutter/flutter_export_environment.sh
|
||||
ServiceDefinitions.json
|
||||
Runner/GeneratedPluginRegistrant.*
|
||||
|
||||
# Exceptions to above rules.
|
||||
!default.mode1v3
|
||||
!default.mode2v3
|
||||
!default.pbxuser
|
||||
!default.perspectivev3
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
3f9db535fb03746a3e4609c07b3090c5
|
|
@ -1,26 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>App</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>io.flutter.flutter.app</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>App</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>MinimumOSVersion</key>
|
||||
<string>8.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>App</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>io.flutter.flutter.app</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>App</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>MinimumOSVersion</key>
|
||||
<string>8.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
|
||||
#include "Generated.xcconfig"
|
||||
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
|
||||
#include "Generated.xcconfig"
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
|
||||
#include "Generated.xcconfig"
|
||||
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
|
||||
#include "Generated.xcconfig"
|
||||
|
|
77
ios/Podfile
|
@ -1,9 +1,8 @@
|
|||
# Uncomment this line to define a global platform for your project
|
||||
platform :ios, '11.0'
|
||||
# platform :ios, '9.0'
|
||||
|
||||
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
|
||||
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
|
||||
source 'https://cdn.cocoapods.org/'
|
||||
|
||||
project 'Runner', {
|
||||
'Debug' => :debug,
|
||||
|
@ -11,78 +10,36 @@ project 'Runner', {
|
|||
'Release' => :release,
|
||||
}
|
||||
|
||||
def parse_KV_file(file, separator='=')
|
||||
file_abs_path = File.expand_path(file)
|
||||
if !File.exists? file_abs_path
|
||||
return [];
|
||||
def flutter_root
|
||||
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
|
||||
unless File.exist?(generated_xcode_build_settings_path)
|
||||
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
|
||||
end
|
||||
generated_key_values = {}
|
||||
skip_line_start_symbols = ["#", "/"]
|
||||
File.foreach(file_abs_path) do |line|
|
||||
next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
|
||||
plugin = line.split(pattern=separator)
|
||||
if plugin.length == 2
|
||||
podname = plugin[0].strip()
|
||||
path = plugin[1].strip()
|
||||
podpath = File.expand_path("#{path}", file_abs_path)
|
||||
generated_key_values[podname] = podpath
|
||||
else
|
||||
puts "Invalid plugin specification: #{line}"
|
||||
end
|
||||
|
||||
File.foreach(generated_xcode_build_settings_path) do |line|
|
||||
matches = line.match(/FLUTTER_ROOT\=(.*)/)
|
||||
return matches[1].strip if matches
|
||||
end
|
||||
generated_key_values
|
||||
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
|
||||
end
|
||||
|
||||
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
|
||||
|
||||
flutter_ios_podfile_setup
|
||||
|
||||
target 'Runner' do
|
||||
use_frameworks!
|
||||
use_modular_headers!
|
||||
|
||||
# Flutter Pod
|
||||
|
||||
copied_flutter_dir = File.join(__dir__, 'Flutter')
|
||||
copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework')
|
||||
copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec')
|
||||
unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path)
|
||||
# Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet.
|
||||
# That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration.
|
||||
# CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist.
|
||||
|
||||
generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig')
|
||||
unless File.exist?(generated_xcode_build_settings_path)
|
||||
raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first"
|
||||
end
|
||||
generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path)
|
||||
cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR'];
|
||||
|
||||
unless File.exist?(copied_framework_path)
|
||||
FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir)
|
||||
end
|
||||
unless File.exist?(copied_podspec_path)
|
||||
FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir)
|
||||
end
|
||||
end
|
||||
|
||||
# Keep pod path relative so it can be checked into Podfile.lock.
|
||||
pod 'Flutter', :path => 'Flutter'
|
||||
|
||||
# Plugin Pods
|
||||
|
||||
# Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
|
||||
# referring to absolute paths on developers' machines.
|
||||
system('rm -rf .symlinks')
|
||||
system('mkdir -p .symlinks/plugins')
|
||||
plugin_pods = parse_KV_file('../.flutter-plugins')
|
||||
plugin_pods.each do |name, path|
|
||||
symlink = File.join('.symlinks', 'plugins', name)
|
||||
File.symlink(path, symlink)
|
||||
pod name, :path => File.join(symlink, 'ios')
|
||||
end
|
||||
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
|
||||
end
|
||||
|
||||
post_install do |installer|
|
||||
installer.pods_project.targets.each do |target|
|
||||
target.build_configurations.each do |config|
|
||||
config.build_settings['ENABLE_BITCODE'] = 'NO'
|
||||
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
|
||||
end
|
||||
flutter_additional_ios_build_settings(target)
|
||||
end
|
||||
end
|
||||
|
|
137
ios/Podfile.lock
|
@ -1,46 +1,47 @@
|
|||
PODS:
|
||||
- audio_service (0.0.1):
|
||||
- Flutter
|
||||
- audio_session (0.0.1):
|
||||
- Flutter
|
||||
- connectivity (0.0.1):
|
||||
- Flutter
|
||||
- Reachability
|
||||
- connectivity_macos (0.0.1):
|
||||
- device_info (0.0.1):
|
||||
- Flutter
|
||||
- DKImagePickerController/Core (4.2.2):
|
||||
- DKImagePickerController/Core (4.3.2):
|
||||
- DKImagePickerController/ImageDataManager
|
||||
- DKImagePickerController/Resource
|
||||
- DKImagePickerController/ImageDataManager (4.2.2)
|
||||
- DKImagePickerController/PhotoGallery (4.2.2):
|
||||
- DKImagePickerController/ImageDataManager (4.3.2)
|
||||
- DKImagePickerController/PhotoGallery (4.3.2):
|
||||
- DKImagePickerController/Core
|
||||
- DKPhotoGallery
|
||||
- DKImagePickerController/Resource (4.2.2)
|
||||
- DKPhotoGallery (0.0.14):
|
||||
- DKPhotoGallery/Core (= 0.0.14)
|
||||
- DKPhotoGallery/Model (= 0.0.14)
|
||||
- DKPhotoGallery/Preview (= 0.0.14)
|
||||
- DKPhotoGallery/Resource (= 0.0.14)
|
||||
- DKImagePickerController/Resource (4.3.2)
|
||||
- DKPhotoGallery (0.0.17):
|
||||
- DKPhotoGallery/Core (= 0.0.17)
|
||||
- DKPhotoGallery/Model (= 0.0.17)
|
||||
- DKPhotoGallery/Preview (= 0.0.17)
|
||||
- DKPhotoGallery/Resource (= 0.0.17)
|
||||
- SDWebImage
|
||||
- SDWebImageFLPlugin
|
||||
- DKPhotoGallery/Core (0.0.14):
|
||||
- SwiftyGif
|
||||
- DKPhotoGallery/Core (0.0.17):
|
||||
- DKPhotoGallery/Model
|
||||
- DKPhotoGallery/Preview
|
||||
- SDWebImage
|
||||
- SDWebImageFLPlugin
|
||||
- DKPhotoGallery/Model (0.0.14):
|
||||
- SwiftyGif
|
||||
- DKPhotoGallery/Model (0.0.17):
|
||||
- SDWebImage
|
||||
- SDWebImageFLPlugin
|
||||
- DKPhotoGallery/Preview (0.0.14):
|
||||
- SwiftyGif
|
||||
- DKPhotoGallery/Preview (0.0.17):
|
||||
- DKPhotoGallery/Model
|
||||
- DKPhotoGallery/Resource
|
||||
- SDWebImage
|
||||
- SDWebImageFLPlugin
|
||||
- DKPhotoGallery/Resource (0.0.14):
|
||||
- SwiftyGif
|
||||
- DKPhotoGallery/Resource (0.0.17):
|
||||
- SDWebImage
|
||||
- SDWebImageFLPlugin
|
||||
- SwiftyGif
|
||||
- file_picker (0.0.1):
|
||||
- DKImagePickerController/PhotoGallery
|
||||
- Flutter
|
||||
- FLAnimatedImage (1.0.12)
|
||||
- Flutter (1.0.0)
|
||||
- flutter_downloader (0.0.1):
|
||||
- Flutter
|
||||
|
@ -48,8 +49,6 @@ PODS:
|
|||
- Flutter
|
||||
- flutter_isolate (0.0.1):
|
||||
- Flutter
|
||||
- flutter_plugin_android_lifecycle (0.0.1):
|
||||
- Flutter
|
||||
- fluttertoast (0.0.2):
|
||||
- Flutter
|
||||
- FMDB (2.7.5):
|
||||
|
@ -59,76 +58,60 @@ PODS:
|
|||
- Flutter
|
||||
- path_provider (0.0.1):
|
||||
- Flutter
|
||||
- path_provider_macos (0.0.1):
|
||||
- Flutter
|
||||
- "permission_handler (5.0.0+hotfix.5)":
|
||||
- "permission_handler (5.1.0+2)":
|
||||
- Flutter
|
||||
- Reachability (3.2)
|
||||
- SDWebImage (5.7.4):
|
||||
- SDWebImage/Core (= 5.7.4)
|
||||
- SDWebImage/Core (5.7.4)
|
||||
- SDWebImageFLPlugin (0.4.0):
|
||||
- FLAnimatedImage (>= 1.0.11)
|
||||
- SDWebImage/Core (~> 5.6)
|
||||
- SDWebImage (5.10.2):
|
||||
- SDWebImage/Core (= 5.10.2)
|
||||
- SDWebImage/Core (5.10.2)
|
||||
- shared_preferences (0.0.1):
|
||||
- Flutter
|
||||
- shared_preferences_macos (0.0.1):
|
||||
- sqflite (0.0.2):
|
||||
- Flutter
|
||||
- shared_preferences_web (0.0.1):
|
||||
- Flutter
|
||||
- sqflite (0.0.1):
|
||||
- Flutter
|
||||
- FMDB (~> 2.7.2)
|
||||
- FMDB (>= 2.7.5)
|
||||
- SwiftyGif (5.3.0)
|
||||
- url_launcher (0.0.1):
|
||||
- Flutter
|
||||
- url_launcher_macos (0.0.1):
|
||||
- Flutter
|
||||
- url_launcher_web (0.0.1):
|
||||
- Flutter
|
||||
- workmanager (0.0.1):
|
||||
- wc_flutter_share (0.0.1):
|
||||
- Flutter
|
||||
|
||||
DEPENDENCIES:
|
||||
- audio_service (from `.symlinks/plugins/audio_service/ios`)
|
||||
- audio_session (from `.symlinks/plugins/audio_session/ios`)
|
||||
- connectivity (from `.symlinks/plugins/connectivity/ios`)
|
||||
- connectivity_macos (from `.symlinks/plugins/connectivity_macos/ios`)
|
||||
- device_info (from `.symlinks/plugins/device_info/ios`)
|
||||
- file_picker (from `.symlinks/plugins/file_picker/ios`)
|
||||
- Flutter (from `Flutter`)
|
||||
- flutter_downloader (from `.symlinks/plugins/flutter_downloader/ios`)
|
||||
- flutter_file_dialog (from `.symlinks/plugins/flutter_file_dialog/ios`)
|
||||
- flutter_isolate (from `.symlinks/plugins/flutter_isolate/ios`)
|
||||
- flutter_plugin_android_lifecycle (from `.symlinks/plugins/flutter_plugin_android_lifecycle/ios`)
|
||||
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
|
||||
- just_audio (from `.symlinks/plugins/just_audio/ios`)
|
||||
- path_provider (from `.symlinks/plugins/path_provider/ios`)
|
||||
- path_provider_macos (from `.symlinks/plugins/path_provider_macos/ios`)
|
||||
- permission_handler (from `.symlinks/plugins/permission_handler/ios`)
|
||||
- shared_preferences (from `.symlinks/plugins/shared_preferences/ios`)
|
||||
- shared_preferences_macos (from `.symlinks/plugins/shared_preferences_macos/ios`)
|
||||
- shared_preferences_web (from `.symlinks/plugins/shared_preferences_web/ios`)
|
||||
- sqflite (from `.symlinks/plugins/sqflite/ios`)
|
||||
- url_launcher (from `.symlinks/plugins/url_launcher/ios`)
|
||||
- url_launcher_macos (from `.symlinks/plugins/url_launcher_macos/ios`)
|
||||
- url_launcher_web (from `.symlinks/plugins/url_launcher_web/ios`)
|
||||
- workmanager (from `.symlinks/plugins/workmanager/ios`)
|
||||
- wc_flutter_share (from `.symlinks/plugins/wc_flutter_share/ios`)
|
||||
|
||||
SPEC REPOS:
|
||||
trunk:
|
||||
- DKImagePickerController
|
||||
- DKPhotoGallery
|
||||
- FLAnimatedImage
|
||||
- FMDB
|
||||
- Reachability
|
||||
- SDWebImage
|
||||
- SDWebImageFLPlugin
|
||||
- SwiftyGif
|
||||
|
||||
EXTERNAL SOURCES:
|
||||
audio_service:
|
||||
:path: ".symlinks/plugins/audio_service/ios"
|
||||
audio_session:
|
||||
:path: ".symlinks/plugins/audio_session/ios"
|
||||
connectivity:
|
||||
:path: ".symlinks/plugins/connectivity/ios"
|
||||
connectivity_macos:
|
||||
:path: ".symlinks/plugins/connectivity_macos/ios"
|
||||
device_info:
|
||||
:path: ".symlinks/plugins/device_info/ios"
|
||||
file_picker:
|
||||
:path: ".symlinks/plugins/file_picker/ios"
|
||||
Flutter:
|
||||
|
@ -139,66 +122,48 @@ EXTERNAL SOURCES:
|
|||
:path: ".symlinks/plugins/flutter_file_dialog/ios"
|
||||
flutter_isolate:
|
||||
:path: ".symlinks/plugins/flutter_isolate/ios"
|
||||
flutter_plugin_android_lifecycle:
|
||||
:path: ".symlinks/plugins/flutter_plugin_android_lifecycle/ios"
|
||||
fluttertoast:
|
||||
:path: ".symlinks/plugins/fluttertoast/ios"
|
||||
just_audio:
|
||||
:path: ".symlinks/plugins/just_audio/ios"
|
||||
path_provider:
|
||||
:path: ".symlinks/plugins/path_provider/ios"
|
||||
path_provider_macos:
|
||||
:path: ".symlinks/plugins/path_provider_macos/ios"
|
||||
permission_handler:
|
||||
:path: ".symlinks/plugins/permission_handler/ios"
|
||||
shared_preferences:
|
||||
:path: ".symlinks/plugins/shared_preferences/ios"
|
||||
shared_preferences_macos:
|
||||
:path: ".symlinks/plugins/shared_preferences_macos/ios"
|
||||
shared_preferences_web:
|
||||
:path: ".symlinks/plugins/shared_preferences_web/ios"
|
||||
sqflite:
|
||||
:path: ".symlinks/plugins/sqflite/ios"
|
||||
url_launcher:
|
||||
:path: ".symlinks/plugins/url_launcher/ios"
|
||||
url_launcher_macos:
|
||||
:path: ".symlinks/plugins/url_launcher_macos/ios"
|
||||
url_launcher_web:
|
||||
:path: ".symlinks/plugins/url_launcher_web/ios"
|
||||
workmanager:
|
||||
:path: ".symlinks/plugins/workmanager/ios"
|
||||
wc_flutter_share:
|
||||
:path: ".symlinks/plugins/wc_flutter_share/ios"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
audio_service: f509d65da41b9521a61f1c404dd58651f265a567
|
||||
audio_session: 4f3e461722055d21515cf3261b64c973c062f345
|
||||
connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467
|
||||
connectivity_macos: e2e9731b6b22dda39eb1b128f6969d574460e191
|
||||
DKImagePickerController: 4a3e7948a848c4348e600b3fe5ce41478835fa10
|
||||
DKPhotoGallery: 0290d32343574f06eaa4c26f8f2f8a1035e916be
|
||||
device_info: d7d233b645a32c40dfdc212de5cf646ca482f175
|
||||
DKImagePickerController: b5eb7f7a388e4643264105d648d01f727110fc3d
|
||||
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
|
||||
file_picker: 3e6c3790de664ccf9b882732d9db5eaf6b8d4eb1
|
||||
FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31
|
||||
Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
|
||||
Flutter: 434fef37c0980e73bb6479ef766c45957d4b510c
|
||||
flutter_downloader: 058b9c41564a90500f67f3e432e3524613a7fd83
|
||||
flutter_file_dialog: 34ab8c55c460c69cb70e75a8d74bfe8b5c852824
|
||||
flutter_isolate: 0edf5081826d071adf21759d1eb10ff5c24503b5
|
||||
flutter_plugin_android_lifecycle: dc0b544e129eebb77a6bfb1239d4d1c673a60a35
|
||||
fluttertoast: b644586ef3b16f67fae9a1f8754cef6b2d6b634b
|
||||
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
|
||||
just_audio: c695d6e7e37f9e96672dd84039d7530e7fd5c205
|
||||
path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c
|
||||
path_provider_macos: f760a3c5b04357c380e2fddb6f9db6f3015897e0
|
||||
permission_handler: 6226fcb78b97c7c7458a95c7346a11d5184fec12
|
||||
permission_handler: ccb20a9fad0ee9b1314a52b70b76b473c5f8dab0
|
||||
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
|
||||
SDWebImage: 48b88379b798fd1e4298f95bb25d2cdabbf4deb3
|
||||
SDWebImageFLPlugin: 6c2295fb1242d44467c6c87dc5db6b0a13228fd8
|
||||
SDWebImage: b969dcfc02c40a5da71eac0b03b8f1a0c794a86f
|
||||
shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d
|
||||
shared_preferences_macos: f3f29b71ccbb56bf40c9dd6396c9acf15e214087
|
||||
shared_preferences_web: 141cce0c3ed1a1c5bf2a0e44f52d31eeb66e5ea9
|
||||
sqflite: 4001a31ff81d210346b500c55b17f4d6c7589dd0
|
||||
sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904
|
||||
SwiftyGif: e466e86c660d343357ab944a819a101c4127cb40
|
||||
url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef
|
||||
url_launcher_macos: fd7894421cd39320dce5f292fc99ea9270b2a313
|
||||
url_launcher_web: e5527357f037c87560776e36436bf2b0288b965c
|
||||
workmanager: ffff78bf18495e2bc5b8c955ead94a81db340681
|
||||
wc_flutter_share: 4f17b4e14f1c34b1427495583af99a21c07fccf7
|
||||
|
||||
PODFILE CHECKSUM: 7a493bdf8e8fed20acf4793e6605bdc446895cf3
|
||||
PODFILE CHECKSUM: 5c91de82f174f8b2d99a661163650879bd2a5f0b
|
||||
|
||||
COCOAPODS: 1.9.1
|
||||
COCOAPODS: 1.10.1
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
|
||||
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
|
||||
8CF9779B9A79168FBFA6066E /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 06AA1B089A6D985A4089F4BD /* Pods_Runner.framework */; };
|
||||
8EFABE4625ADBC8C0008EA57 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 8E4DBAFB2467BE8D00105DDB /* libsqlite3.tbd */; };
|
||||
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
|
||||
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
|
||||
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
|
||||
|
@ -55,6 +56,7 @@
|
|||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8EFABE4625ADBC8C0008EA57 /* libsqlite3.tbd in Frameworks */,
|
||||
8CF9779B9A79168FBFA6066E /* Pods_Runner.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
|
@ -165,11 +167,12 @@
|
|||
97C146E61CF9000F007C117D /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 1020;
|
||||
LastUpgradeCheck = 1240;
|
||||
ORGANIZATIONNAME = "";
|
||||
TargetAttributes = {
|
||||
97C146ED1CF9000F007C117D = {
|
||||
CreatedOnToolsVersion = 7.3.1;
|
||||
DevelopmentTeam = 2J468J3268;
|
||||
LastSwiftMigration = 1100;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
|
@ -253,51 +256,49 @@
|
|||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
|
||||
"${BUILT_PRODUCTS_DIR}/DKImagePickerController/DKImagePickerController.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/DKPhotoGallery/DKPhotoGallery.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework",
|
||||
"${PODS_ROOT}/../Flutter/Flutter.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/Reachability/Reachability.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/SDWebImageFLPlugin/SDWebImageFLPlugin.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/SwiftyGif/SwiftyGif.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/audio_service/audio_service.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/audio_session/audio_session.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/connectivity/connectivity.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/device_info/device_info.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/file_picker/file_picker.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/flutter_downloader/flutter_downloader.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/flutter_file_dialog/flutter_file_dialog.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/flutter_isolate/flutter_isolate.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/flutter_plugin_android_lifecycle/flutter_plugin_android_lifecycle.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/fluttertoast/fluttertoast.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/just_audio/just_audio.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/path_provider/path_provider.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/shared_preferences/shared_preferences.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/url_launcher/url_launcher.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/workmanager/workmanager.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/wc_flutter_share/wc_flutter_share.framework",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DKImagePickerController.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DKPhotoGallery.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FLAnimatedImage.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Reachability.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImageFLPlugin.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyGif.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/audio_service.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/audio_session.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/connectivity.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/file_picker.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_downloader.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_file_dialog.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_isolate.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_plugin_android_lifecycle.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/fluttertoast.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/just_audio.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/workmanager.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/wc_flutter_share.framework",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
|
@ -354,7 +355,6 @@
|
|||
/* Begin XCBuildConfiguration section */
|
||||
249021D3217E4FDB00AE95B9 /* Profile */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
|
@ -376,6 +376,7 @@
|
|||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
|
@ -394,7 +395,7 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SUPPORTED_PLATFORMS = iphoneos;
|
||||
|
@ -412,7 +413,7 @@
|
|||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DEVELOPMENT_TEAM = 2J468J3268;
|
||||
ENABLE_BITCODE = NO;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
@ -424,7 +425,7 @@
|
|||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/Flutter",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.stonegate.tsacdop;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = me.stonegate.tsacdop;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
|
@ -435,7 +436,6 @@
|
|||
};
|
||||
97C147031CF9000F007C117D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
|
@ -457,6 +457,7 @@
|
|||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
|
@ -481,7 +482,7 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
|
@ -491,7 +492,6 @@
|
|||
};
|
||||
97C147041CF9000F007C117D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
|
@ -513,6 +513,7 @@
|
|||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
|
@ -531,7 +532,7 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SUPPORTED_PLATFORMS = iphoneos;
|
||||
|
@ -550,7 +551,7 @@
|
|||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DEVELOPMENT_TEAM = 2J468J3268;
|
||||
ENABLE_BITCODE = NO;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
@ -562,7 +563,7 @@
|
|||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/Flutter",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.stonegate.tsacdop;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = me.stonegate.tsacdop;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
|
@ -581,7 +582,7 @@
|
|||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DEVELOPMENT_TEAM = 2J468J3268;
|
||||
ENABLE_BITCODE = NO;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
@ -593,7 +594,7 @@
|
|||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/Flutter",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.stonegate.tsacdop;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = me.stonegate.tsacdop;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
|
|
|
@ -2,6 +2,6 @@
|
|||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:Runner.xcodeproj">
|
||||
location = "self:">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>PreviewsEnabled</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1020"
|
||||
LastUpgradeVersion = "1240"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
|
@ -27,8 +27,6 @@
|
|||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
|
@ -38,8 +36,8 @@
|
|||
ReferencedContainer = "container:Runner.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
<Testables>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
|
@ -61,8 +59,6 @@
|
|||
ReferencedContainer = "container:Runner.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Profile"
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:Runner.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:Pods/Pods.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:Runner.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:Pods/Pods.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
|
|