mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-20 13:23:59 +00:00
Merge commit '20c9fc5f' into traffic-2025072304
# Conflicts: # android/app/src/main/res/xml/prefs_main.xml # qt/CMakeLists.txt
This commit is contained in:
470
.clang-format
470
.clang-format
@@ -2,447 +2,47 @@
|
||||
|
||||
---
|
||||
BasedOnStyle: Google
|
||||
IndentWidth: 2
|
||||
BreakBeforeBraces: Allman
|
||||
ColumnLimit: 120
|
||||
|
||||
---
|
||||
Language: Cpp
|
||||
AccessModifierOffset: -2
|
||||
AllowShortBlocksOnASingleLine: false
|
||||
AlignOperands: AlignAfterOperator
|
||||
AllowShortBlocksOnASingleLine: Empty
|
||||
AllowShortIfStatementsOnASingleLine: Never
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
AllowShortCaseLabelsOnASingleLine: true
|
||||
AllowShortFunctionsOnASingleLine: true
|
||||
AllowShortIfStatementsOnASingleLine: false
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
BreakConstructorInitializersBeforeComma: true
|
||||
ConstructorInitializerIndentWidth: 2
|
||||
DerivePointerAlignment: false
|
||||
IndentCaseLabels: false
|
||||
NamespaceIndentation: None
|
||||
PointerAlignment: Middle
|
||||
SortIncludes: true
|
||||
Standard: c++20
|
||||
IncludeBlocks: Regroup
|
||||
IncludeCategories:
|
||||
# Tests --------------------------------------------------------------------------------------------
|
||||
- Regex: '^"track_analyzing/track_analyzing_tests/'
|
||||
Priority: 4730
|
||||
|
||||
- Regex: '^"poly_borders/poly_borders_tests/'
|
||||
Priority: 4740
|
||||
|
||||
- Regex: '^"generator/generator_integration_tests/'
|
||||
Priority: 4750
|
||||
- Regex: '^"generator/generator_tests/'
|
||||
Priority: 4751
|
||||
- Regex: '^"generator/mwm_diff_tests/'
|
||||
Priority: 4752
|
||||
|
||||
- Regex: '^"map/style_tests/'
|
||||
Priority: 4760
|
||||
- Regex: '^"map/mwm_tests/'
|
||||
Priority: 4761
|
||||
- Regex: '^"map/map_tests/'
|
||||
Priority: 4762
|
||||
- Regex: '^"map/map_integration_tests/'
|
||||
Priority: 4763
|
||||
|
||||
- Regex: '^"ge0/ge0_tests/'
|
||||
Priority: 4765
|
||||
|
||||
- Regex: '^"openlr/openlr_tests/'
|
||||
Priority: 4770
|
||||
|
||||
- Regex: '^"descriptions/descriptions_tests/'
|
||||
Priority: 4790
|
||||
|
||||
- Regex: '^"ugc/ugc_tests'
|
||||
Priority: 4810
|
||||
|
||||
- Regex: '^"search/search_integration_tests/'
|
||||
Priority: 4820
|
||||
- Regex: '^"search/search_tests/'
|
||||
Priority: 4821
|
||||
- Regex: '^"search/search_quality/search_quality_tests/'
|
||||
Priority: 4822
|
||||
|
||||
- Regex: '^"drape_frontend/drape_frontend_tests/'
|
||||
Priority: 4830
|
||||
|
||||
- Regex: '^"routing/routing_tests/'
|
||||
Priority: 4840
|
||||
- Regex: '^"routing/routing_integration_tests/'
|
||||
Priority: 4841
|
||||
- Regex: '^"routing/routing_quality/routing_quality_tests/'
|
||||
Priority: 4842
|
||||
- Regex: '^"routing/routing_consistency_tests/'
|
||||
Priority: 4843
|
||||
- Regex: '^"routing/routing_benchmarks/'
|
||||
Priority: 4844
|
||||
|
||||
- Regex: '^"kml/kml_tests'
|
||||
Priority: 4850
|
||||
|
||||
- Regex: '^"tracking/tracking_tests/'
|
||||
Priority: 4860
|
||||
|
||||
- Regex: '^"partners_api/partners_api_tests/'
|
||||
Priority: 4870
|
||||
|
||||
- Regex: '^"traffic/traffic_tests/'
|
||||
Priority: 4880
|
||||
|
||||
- Regex: '^"storage/storage_tests/'
|
||||
Priority: 4890
|
||||
- Regex: '^"storage/storage_integration_tests/'
|
||||
Priority: 4891
|
||||
|
||||
- Regex: '^"editor/editor_tests/'
|
||||
Priority: 4900
|
||||
- Regex: '^"editor/osm_auth_tests/'
|
||||
Priority: 4910
|
||||
|
||||
- Regex: '^"drape/drape_tests/'
|
||||
Priority: 4920
|
||||
|
||||
- Regex: '^"transit/transit_tests'
|
||||
Priority: 4930
|
||||
|
||||
- Regex: '^"routing_common/routing_common_tests/'
|
||||
Priority: 4940
|
||||
|
||||
- Regex: '^"indexer/indexer_tests/'
|
||||
Priority: 4950
|
||||
|
||||
- Regex: '^"platform/platform_tests/'
|
||||
Priority: 4960
|
||||
|
||||
- Regex: '^"coding/coding_tests/'
|
||||
Priority: 4970
|
||||
|
||||
- Regex: '^"geometry/geometry_tests/'
|
||||
Priority: 4980
|
||||
|
||||
- Regex: '^"base/base_tests/'
|
||||
Priority: 4990
|
||||
|
||||
- Regex: '^"testing/'
|
||||
Priority: 5000
|
||||
|
||||
# Binaries (tools) ---------------------------------------------------------------------------------
|
||||
|
||||
- Regex: '^"openlr/openlr_match_quality/openlr_assessment_tool/'
|
||||
Priority: 18908
|
||||
- Regex: '^"search/search_quality/assessment_tool/'
|
||||
Priority: 18909
|
||||
- Regex: '^"qt/'
|
||||
Priority: 18910
|
||||
|
||||
- Regex: '^"track_analyzing/track_analyzer/'
|
||||
Priority: 19000
|
||||
|
||||
- Regex: '^"feature_list/'
|
||||
Priority: 19100
|
||||
|
||||
- Regex: '^"generator/booking_quality_check/'
|
||||
Priority: 19206
|
||||
- Regex: '^"generator/complex_generator/'
|
||||
Priority: 19207
|
||||
- Regex: '^"generator/feature_segments_checker/'
|
||||
Priority: 19208
|
||||
- Regex: '^"generator/srtm_coverage_checker/'
|
||||
Priority: 19209
|
||||
- Regex: '^"generator/generator_tool/'
|
||||
Priority: 19210
|
||||
|
||||
- Regex: '^"map/extrapolation_benchmark/'
|
||||
Priority: 19309
|
||||
- Regex: '^"map/benchmark_tool/'
|
||||
Priority: 19310
|
||||
|
||||
- Regex: '^"openlr/openlr_stat/'
|
||||
Priority: 19400
|
||||
|
||||
|
||||
- Regex: '^"search/search_quality/booking_dataset_generator/'
|
||||
Priority: 19707
|
||||
- Regex: '^"search/search_quality/features_collector_tool/'
|
||||
Priority: 19708
|
||||
- Regex: '^"search/search_quality/samples_generation_tool/'
|
||||
Priority: 19709
|
||||
- Regex: '^"search/search_quality/search_quality_tool/'
|
||||
Priority: 19710
|
||||
|
||||
- Regex: '^"track_generator/'
|
||||
Priority: 19800
|
||||
|
||||
- Regex: '^"routing/routing_quality/routing_quality_tool/'
|
||||
Priority: 19909
|
||||
- Regex: '^"routing/routes_builder/routes_builder_tool/'
|
||||
Priority: 19910
|
||||
|
||||
- Regex: '^"skin_generator/'
|
||||
Priority: 20000
|
||||
|
||||
# Libraries ----------------------------------------------------------------------------------------
|
||||
|
||||
- Regex: '^"poly_borders/'
|
||||
Priority: 46700
|
||||
|
||||
- Regex: '^"track_analyzing/'
|
||||
Priority: 46800
|
||||
|
||||
- Regex: '^"generator/mwm_diff/pymwm_diff/'
|
||||
Priority: 46907
|
||||
- Regex: '^"generator/mwm_diff/'
|
||||
Priority: 46908
|
||||
- Regex: '^"generator/generator_tests_support/'
|
||||
Priority: 46909
|
||||
- Regex: '^"generator/'
|
||||
Priority: 46910
|
||||
|
||||
- Regex: '^"map/'
|
||||
Priority: 47000
|
||||
|
||||
- Regex: '^"ge0/'
|
||||
Priority: 47050
|
||||
|
||||
- Regex: '^"openlr/'
|
||||
Priority: 47100
|
||||
|
||||
- Regex: '^"descriptions/'
|
||||
Priority: 47300
|
||||
|
||||
- Regex: '^"search/search_quality/'
|
||||
Priority: 47407
|
||||
- Regex: '^"search/search_tests_support/'
|
||||
Priority: 47408
|
||||
- Regex: '^"search/pysearch/'
|
||||
Priority: 47409
|
||||
- Regex: '^"search/'
|
||||
Priority: 47410
|
||||
|
||||
- Regex: '^"ugc/'
|
||||
Priority: 47500
|
||||
|
||||
- Regex: '^"track_generator/pytrack_generator/'
|
||||
Priority: 47600
|
||||
|
||||
- Regex: '^"routing/routing_quality/api/'
|
||||
Priority: 47707
|
||||
- Regex: '^"routing/routing_quality/'
|
||||
Priority: 47708
|
||||
- Regex: '^"routing/routes_builder/'
|
||||
Priority: 47709
|
||||
- Regex: '^"routing/'
|
||||
Priority: 47710
|
||||
|
||||
- Regex: '^"tracking/pytracking/'
|
||||
Priority: 47809
|
||||
- Regex: '^"tracking/'
|
||||
Priority: 47810
|
||||
|
||||
- Regex: '^"partners_api/'
|
||||
Priority: 47900
|
||||
|
||||
- Regex: '^"traffic/pytraffic/'
|
||||
Priority: 48109
|
||||
- Regex: '^"traffic/'
|
||||
Priority: 48110
|
||||
|
||||
- Regex: '^"storage/'
|
||||
Priority: 48200
|
||||
|
||||
- Regex: '^"editor/editor_tests_support/'
|
||||
Priority: 48309
|
||||
- Regex: '^"editor/'
|
||||
Priority: 48310
|
||||
|
||||
- Regex: '^"drape_frontend/'
|
||||
Priority: 48500
|
||||
|
||||
- Regex: '^"shaders/'
|
||||
Priority: 48600
|
||||
|
||||
- Regex: '^"drape/'
|
||||
Priority: 48700
|
||||
|
||||
- Regex: '^"qt_tstfrm/'
|
||||
Priority: 48800
|
||||
|
||||
- Regex: '^"kml/pykmlib/'
|
||||
Priority: 48909
|
||||
- Regex: '^"kml/'
|
||||
Priority: 48910
|
||||
|
||||
- Regex: '^"transit/'
|
||||
Priority: 49000
|
||||
|
||||
- Regex: '^"routing_common/'
|
||||
Priority: 49100
|
||||
|
||||
- Regex: '^"indexer/'
|
||||
Priority: 49200
|
||||
|
||||
- Regex: '^"platform/platform_tests_support/'
|
||||
Priority: 49409
|
||||
- Regex: '^"platform/'
|
||||
Priority: 49410
|
||||
|
||||
- Regex: '^"coding/'
|
||||
Priority: 49500
|
||||
|
||||
- Regex: '^"geometry/'
|
||||
Priority: 49600
|
||||
|
||||
- Regex: '^"base/'
|
||||
Priority: 49700
|
||||
|
||||
- Regex: '^"pyhelpers/'
|
||||
Priority: 49800
|
||||
|
||||
- Regex: '^"app/organicmaps/util/'
|
||||
Priority: 49840
|
||||
|
||||
- Regex: '^"app/organicmaps/maps/'
|
||||
Priority: 49850
|
||||
|
||||
- Regex: '^"app/organicmaps/platform/'
|
||||
Priority: 49860
|
||||
|
||||
- Regex: '^"app/organicmaps/opengl/'
|
||||
Priority: 49870
|
||||
|
||||
- Regex: '^"app/organicmaps/vulkan/'
|
||||
Priority: 49880
|
||||
|
||||
- Regex: '^"app/organicmaps/core/'
|
||||
Priority: 49890
|
||||
|
||||
- Regex: '^"private\.h"$'
|
||||
Priority: 49900
|
||||
|
||||
- Regex: '^"std/'
|
||||
Priority: 50000
|
||||
|
||||
- Regex: '^"defines\.hpp"$'
|
||||
Priority: 50100
|
||||
|
||||
- Regex: '^<Qt.*>$'
|
||||
Priority: 50140
|
||||
|
||||
- Regex: '^<jni.h>$'
|
||||
Priority: 50180
|
||||
|
||||
- Regex: '^<.*>$'
|
||||
Priority: 50200
|
||||
|
||||
- Regex: '^"(3party/boost|boost)/'
|
||||
Priority: 50300
|
||||
- Regex: '^<boost'
|
||||
Priority: 50300
|
||||
|
||||
- Regex: '^"3party/.*'
|
||||
Priority: 50400
|
||||
|
||||
- Regex: '^"build_version\.hpp"$'
|
||||
Priority: 99999
|
||||
|
||||
---
|
||||
Language: Java
|
||||
BreakAfterJavaFieldAnnotations: true
|
||||
|
||||
---
|
||||
Language: ObjC
|
||||
AccessModifierOffset: -2
|
||||
AlignAfterOpenBracket: Align
|
||||
AlignConsecutiveAssignments: false
|
||||
AlignConsecutiveDeclarations: false
|
||||
AlignEscapedNewlines: Left
|
||||
AlignOperands: true
|
||||
AlignTrailingComments: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: true
|
||||
AllowShortBlocksOnASingleLine: false
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortFunctionsOnASingleLine: All
|
||||
AllowShortIfStatementsOnASingleLine: false
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
AlwaysBreakAfterDefinitionReturnType: None
|
||||
AlwaysBreakAfterReturnType: None
|
||||
AlwaysBreakBeforeMultilineStrings: true
|
||||
AlwaysBreakTemplateDeclarations: Yes
|
||||
BinPackArguments: true
|
||||
BinPackParameters: true
|
||||
BreakBeforeBinaryOperators: None
|
||||
BreakBeforeBraces: Attach
|
||||
BreakBeforeInheritanceComma: false
|
||||
BreakInheritanceList: AfterColon
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakStringLiterals: true
|
||||
BraceWrapping:
|
||||
AfterCaseLabel: true
|
||||
AfterClass: true
|
||||
AfterControlStatement: Always
|
||||
AfterEnum: true
|
||||
AfterFunction: true
|
||||
AfterNamespace: true
|
||||
AfterObjCDeclaration: true
|
||||
AfterStruct: true
|
||||
AfterUnion: true
|
||||
AfterExternBlock: true
|
||||
BeforeCatch: true
|
||||
BeforeElse: true
|
||||
BeforeLambdaBody: true
|
||||
BeforeWhile: true
|
||||
IndentBraces: false
|
||||
SplitEmptyFunction: false
|
||||
SplitEmptyRecord: false
|
||||
SplitEmptyNamespace: false
|
||||
BreakBeforeBraces: Custom
|
||||
BreakConstructorInitializers: BeforeComma
|
||||
BreakInheritanceList: BeforeComma
|
||||
ColumnLimit: 120
|
||||
CompactNamespaces: false
|
||||
ConstructorInitializerAllOnOneLineOrOnePerLine: true
|
||||
ConstructorInitializerIndentWidth: 4
|
||||
ConstructorInitializerIndentWidth: 2
|
||||
ContinuationIndentWidth: 2
|
||||
Cpp11BracedListStyle: true
|
||||
DerivePointerAlignment: false
|
||||
DisableFormat: false
|
||||
ExperimentalAutoDetectBinPacking: false
|
||||
FixNamespaceComments: true
|
||||
ForEachMacros:
|
||||
- foreach
|
||||
- Q_FOREACH
|
||||
- BOOST_FOREACH
|
||||
IncludeBlocks: Preserve
|
||||
IncludeCategories:
|
||||
- Regex: '^<.*\.h>'
|
||||
Priority: 1
|
||||
- Regex: '^<.*'
|
||||
Priority: 2
|
||||
- Regex: '.*'
|
||||
Priority: 3
|
||||
IncludeIsMainRegex: '([-_](test|unittest))?$'
|
||||
IndentCaseLabels: true
|
||||
IndentPPDirectives: None
|
||||
IndentWrappedFunctionNames: false
|
||||
JavaScriptQuotes: Leave
|
||||
JavaScriptWrapImports: true
|
||||
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||
MacroBlockBegin: ''
|
||||
MacroBlockEnd: ''
|
||||
MaxEmptyLinesToKeep: 1
|
||||
NamespaceIndentation: None
|
||||
ObjCBinPackProtocolList: Never
|
||||
ObjCBlockIndentWidth: 2
|
||||
ObjCSpaceAfterProperty: false
|
||||
ObjCSpaceBeforeProtocolList: true
|
||||
PenaltyBreakAssignment: 2
|
||||
PenaltyBreakBeforeFirstCallParameter: 1
|
||||
PenaltyBreakComment: 300
|
||||
PenaltyBreakFirstLessLess: 120
|
||||
PenaltyBreakString: 1000
|
||||
PenaltyBreakTemplateDeclaration: 10
|
||||
PenaltyExcessCharacter: 1000000
|
||||
PenaltyReturnTypeOnItsOwnLine: 200
|
||||
PointerAlignment: Right
|
||||
ReflowComments: true
|
||||
SortIncludes: true
|
||||
SortUsingDeclarations: true
|
||||
SpaceAfterCStyleCast: false
|
||||
SpaceAfterTemplateKeyword: true
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
SpaceBeforeCpp11BracedList: false
|
||||
SpaceBeforeCtorInitializerColon: true
|
||||
SpaceBeforeInheritanceColon: true
|
||||
SpaceBeforeParens: ControlStatements
|
||||
SpaceBeforeRangeBasedForLoopColon: true
|
||||
SpaceInEmptyParentheses: false
|
||||
SpacesBeforeTrailingComments: 2
|
||||
SpacesInAngles: false
|
||||
IndentCaseLabels: false
|
||||
IndentExternBlock: NoIndent
|
||||
InsertNewlineAtEOF: true
|
||||
PackConstructorInitializers: Never
|
||||
PointerAlignment: Middle
|
||||
QualifierAlignment: Right
|
||||
SpacesInContainerLiterals: false
|
||||
SpacesInCStyleCastParentheses: false
|
||||
SpacesInParentheses: false
|
||||
SpacesInSquareBrackets: false
|
||||
Standard: Auto
|
||||
TabWidth: 8
|
||||
Standard: Latest
|
||||
TabWidth: 2
|
||||
UseTab: Never
|
||||
|
||||
@@ -49,13 +49,13 @@
|
||||
/docs/STYLES.md
|
||||
/tools/kothic/ @organicmaps/styles
|
||||
# DevOps.
|
||||
/.github/workflows @organicmaps/devops
|
||||
/.forgejo/workflows @organicmaps/devops
|
||||
/android/*gradle* @organicmaps/devops
|
||||
/docs/RELEASE_MANAGEMENT.md @organicmaps/devops
|
||||
/xcode/fastlane/ @organicmaps/devops
|
||||
# Growth.
|
||||
README.md @organicmaps/growth
|
||||
/.github/FUNDING.yml @organicmaps/growth
|
||||
/.forgejo/FUNDING.yml @organicmaps/growth
|
||||
/android/app/src/fdroid/play/ @organicmaps/growth
|
||||
/android/app/src/google/play/ @organicmaps/growth
|
||||
/iphone/metadata/ @organicmaps/growth
|
||||
1
.forgejo/FUNDING.yml
Normal file
1
.forgejo/FUNDING.yml
Normal file
@@ -0,0 +1 @@
|
||||
open_collective: comaps
|
||||
70
.forgejo/ISSUE_TEMPLATE/bug-report.yaml
Normal file
70
.forgejo/ISSUE_TEMPLATE/bug-report.yaml
Normal file
@@ -0,0 +1,70 @@
|
||||
name: 🐞 Bug Report
|
||||
description: Report a problem you've encountered
|
||||
title: "bug: "
|
||||
labels:
|
||||
- bug
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
⚠ **Have you searched for similar, already existing issues?**
|
||||
Please do that before submitting a new one.
|
||||
|
||||
- type: textarea
|
||||
id: issue-description
|
||||
attributes:
|
||||
label: Describe the issue
|
||||
description: Please write a clear and concise description of the issue here.
|
||||
placeholder: Describe what is not working as expected...
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: steps-to-reproduce
|
||||
attributes:
|
||||
label: Steps to reproduce
|
||||
description: Describe the steps needed to reproduce the issue.
|
||||
placeholder: |
|
||||
1. Go to '...'
|
||||
2. Click on '...'
|
||||
3. Scroll down to '...'
|
||||
4. See the error
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: expected-behavior
|
||||
attributes:
|
||||
label: Expected behaviour
|
||||
description: A clear and concise description of what you expected to happen.
|
||||
placeholder: I expected that...
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
id: screenshots
|
||||
attributes:
|
||||
label: Screenshots
|
||||
description: If applicable, add screenshots or screen recordings to help explain your problem.
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
id: system-info
|
||||
attributes:
|
||||
label: System information
|
||||
description: Provide information about the system where the issue occurred.
|
||||
placeholder: |
|
||||
- OS: e.g. Ubuntu 22, iOS 12
|
||||
- CoMaps version: e.g. 1.2.3
|
||||
- Device model: e.g. iPhone 6, Samsung S22
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: additional-context
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: Add any other context or comments that may be useful.
|
||||
validations:
|
||||
required: false
|
||||
8
.forgejo/ISSUE_TEMPLATE/config.yml
Normal file
8
.forgejo/ISSUE_TEMPLATE/config.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
blank_issues_enabled: true
|
||||
contact_links:
|
||||
- name: Translations
|
||||
url: https://codeberg.org/comaps/comaps/src/branch/main/docs/TRANSLATIONS.md
|
||||
about: Translate CoMaps into your language
|
||||
- name: News
|
||||
url: https://comaps.app/news/
|
||||
about: Check the latest project news
|
||||
47
.forgejo/ISSUE_TEMPLATE/feature-request.yaml
Normal file
47
.forgejo/ISSUE_TEMPLATE/feature-request.yaml
Normal file
@@ -0,0 +1,47 @@
|
||||
name: "💡 Feature Request"
|
||||
description: "Suggest an idea or improvement for CoMaps"
|
||||
title: "feat: "
|
||||
labels:
|
||||
- "enhancement"
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
⚠ **Have you searched for similar, already existing issues?**
|
||||
Please make sure your idea hasn't been suggested before.
|
||||
|
||||
- type: textarea
|
||||
id: related-problem
|
||||
attributes:
|
||||
label: "What problem would this feature help solve?"
|
||||
description: "Share how this feature could make the experience better, smoother, or more enjoyable."
|
||||
placeholder: "It would be great if..."
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: ideal-solution
|
||||
attributes:
|
||||
label: "Describe the ideal solution"
|
||||
description: "What would you like to see in CoMaps?"
|
||||
placeholder: "I would like CoMaps to..."
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
id: alternatives
|
||||
attributes:
|
||||
label: "Describe alternatives you have considered"
|
||||
description: |
|
||||
How do you solve this issue now with CoMaps or other apps?
|
||||
You can also share screenshots or examples from other apps.
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
id: additional-context
|
||||
attributes:
|
||||
label: "Additional context"
|
||||
description: "Any other context, comments, or screenshots to support your request."
|
||||
validations:
|
||||
required: false
|
||||
@@ -3,11 +3,11 @@ on:
|
||||
workflow_dispatch: # Manual trigger
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
paths-ignore:
|
||||
- .gitignore
|
||||
- .github/**
|
||||
- '!.github/workflows/android-beta.yaml' # Run check on self change
|
||||
- .forgejo/**
|
||||
- '!.forgejo/workflows/android-beta.yaml' # Run check on self change
|
||||
- '**/*_tests/**'
|
||||
- '**/CMakeLists.txt'
|
||||
- CONTRIBUTORS
|
||||
121
.forgejo/workflows/android-check.yaml
Normal file
121
.forgejo/workflows/android-check.yaml
Normal file
@@ -0,0 +1,121 @@
|
||||
name: Android Check
|
||||
on:
|
||||
workflow_dispatch: # Manual trigger
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- .gitignore
|
||||
- .forgejo/**
|
||||
- '!.forgejo/workflows/android-check.yaml' # Run check on self change
|
||||
- '**/*_tests/**'
|
||||
- CONTRIBUTORS
|
||||
- LICENSE
|
||||
- NOTICE
|
||||
- README.md
|
||||
- android/app/src/fdroid/**
|
||||
- android/app/src/google/**
|
||||
- iphone/**
|
||||
- data/strings/**
|
||||
- docs/**
|
||||
- generator/**
|
||||
- packaging/**
|
||||
- platform/*apple*
|
||||
- platform/*_ios*
|
||||
- platform/*_linux*
|
||||
- platform/*_mac*
|
||||
- platform/*qt*
|
||||
- platform/*_win*
|
||||
- pyhelpers/**
|
||||
- qt*/**
|
||||
- skin_generator/**
|
||||
- tools/**
|
||||
- track_generator/**
|
||||
- xcode/**
|
||||
|
||||
env:
|
||||
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
name: Android Lint
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Parallel submodules checkout
|
||||
shell: bash
|
||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||
|
||||
- name: Configure repository
|
||||
shell: bash
|
||||
run: ./configure.sh
|
||||
|
||||
- name: Lint
|
||||
shell: bash
|
||||
working-directory: android
|
||||
run: ./gradlew -Pandroidauto=true lint
|
||||
|
||||
android-check:
|
||||
name: Build Android Debug
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
flavor: [WebDebug, FdroidDebug]
|
||||
include:
|
||||
- flavor: WebDebug
|
||||
arch: arm64
|
||||
- flavor: FdroidDebug
|
||||
arch: arm32
|
||||
# Cancels previous jobs if the same branch or PR was updated again.
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ matrix.flavor }}-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
steps:
|
||||
- name: Install build tools and dependencies
|
||||
shell: bash
|
||||
run: |
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y ninja-build
|
||||
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 200 # enough to get all commits for the current day
|
||||
|
||||
- name: Parallel submodules checkout
|
||||
shell: bash
|
||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||
|
||||
- name: Configure repository
|
||||
shell: bash
|
||||
run: ./configure.sh
|
||||
|
||||
- name: Configure ccache
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
with:
|
||||
key: ${{ github.workflow }}-${{ matrix.flavor }}
|
||||
|
||||
- name: Compile ${{ matrix.flavor }}
|
||||
shell: bash
|
||||
working-directory: android
|
||||
env:
|
||||
CMAKE_C_COMPILER_LAUNCHER: ccache
|
||||
CMAKE_CXX_COMPILER_LAUNCHER: ccache
|
||||
run: |
|
||||
cmake --version
|
||||
ninja --version
|
||||
./gradlew -P${{ matrix.arch }} assemble${{ matrix.flavor }}
|
||||
|
||||
- name: Upload ${{ matrix.flavor }} apk
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: android-${{ matrix.flavor }}
|
||||
path: android/app/build/outputs/apk/**/OrganicMaps-*.apk
|
||||
if-no-files-found: error
|
||||
@@ -12,19 +12,12 @@ jobs:
|
||||
environment: production
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
# TODO: use shallow (and sparse?) checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Parallel submodules checkout
|
||||
shell: bash
|
||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||
|
||||
- name: Checkout screenshots
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ secrets.SCREENSHOTS_REPO }}
|
||||
ssh-key: ${{ secrets.SCREENSHOTS_SSH_KEY }}
|
||||
ref: master
|
||||
path: screenshots
|
||||
# - name: Parallel submodules checkout
|
||||
# shell: bash
|
||||
# run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||
|
||||
- name: Restore release keys
|
||||
shell: bash
|
||||
@@ -37,6 +30,6 @@ jobs:
|
||||
|
||||
- name: Upload
|
||||
shell: bash
|
||||
run: ./gradlew prepareGoogleReleaseListing publishGoogleReleaseListing
|
||||
run: ./gradlew publishGoogleReleaseListing
|
||||
working-directory: android
|
||||
timeout-minutes: 5
|
||||
@@ -97,7 +97,7 @@ jobs:
|
||||
with:
|
||||
repository: ${{ secrets.SCREENSHOTS_REPO }}
|
||||
ssh-key: ${{ secrets.SCREENSHOTS_SSH_KEY }}
|
||||
ref: master
|
||||
ref: main
|
||||
path: screenshots
|
||||
|
||||
- name: Restore release keys
|
||||
@@ -156,7 +156,7 @@ jobs:
|
||||
cat ${{ env.RELEASE_NOTES }}
|
||||
echo ""
|
||||
echo "See [a detailed announce](https://organicmaps.app/news/) on our website when app updates are published in all stores."
|
||||
echo "You can get automatic app updates from GitHub [using Obtainium](https://github.com/organicmaps/organicmaps/wiki/Installing-Organic-Maps-from-GitHub-using-Obtainium)."
|
||||
echo "You can get automatic app updates from Codeberg [using Obtainium](https://codeberg.org/comaps/comaps/wiki/Installing-Organic-Maps-from-GitHub-using-Obtainium)."
|
||||
echo ""
|
||||
echo "sha256sum:"
|
||||
echo -e '\n```'
|
||||
@@ -164,7 +164,7 @@ jobs:
|
||||
echo -e '\n```'
|
||||
} > ${{ runner.temp }}/release-notes.txt
|
||||
|
||||
- name: Upload universal APK to GitHub
|
||||
- name: Upload universal APK to Codeberg
|
||||
uses: softprops/action-gh-release@v1
|
||||
if: ${{ matrix.flavor == 'web' }}
|
||||
with:
|
||||
@@ -4,7 +4,7 @@ on:
|
||||
pull_request:
|
||||
paths:
|
||||
- packaging/app.organicmaps.desktop.metainfo.xml
|
||||
- .github/workflows/appstream-check.yaml # Run check on self change
|
||||
- .forgejo/workflows/appstream-check.yaml # Run check on self change
|
||||
|
||||
jobs:
|
||||
validate-appstream:
|
||||
@@ -25,11 +25,7 @@ jobs:
|
||||
sudo apt install -y \
|
||||
flatpak
|
||||
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||
sudo flatpak install -y org.freedesktop.appstream-glib org.flatpak.Builder
|
||||
|
||||
- name: Validate appstream data
|
||||
shell: bash
|
||||
run: flatpak run org.freedesktop.appstream-glib validate --nonet packaging/app.organicmaps.desktop.metainfo.xml
|
||||
sudo flatpak install -y org.flatpak.Builder
|
||||
|
||||
- name: Lint appstream data with flatpak Builder
|
||||
shell: bash
|
||||
8
.forgejo/workflows/dco.yml
Normal file
8
.forgejo/workflows/dco.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
name: dco
|
||||
on: [pull_request]
|
||||
|
||||
jobs:
|
||||
check:
|
||||
runs-on: codeberg-tiny
|
||||
steps:
|
||||
- uses: https://github.com/KineticCafe/actions-dco@v1
|
||||
@@ -4,7 +4,7 @@ on:
|
||||
pull_request:
|
||||
paths:
|
||||
- qt/res/app.organicmaps.desktop.desktop
|
||||
- .github/workflows/desktop-file-check.yaml # Run check on self change
|
||||
- .forgejo/workflows/desktop-file-check.yaml # Run check on self change
|
||||
|
||||
jobs:
|
||||
validate-desktop-file:
|
||||
@@ -3,11 +3,11 @@ on:
|
||||
workflow_dispatch: # Manual trigger
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
paths-ignore:
|
||||
- .gitignore
|
||||
- .github/**
|
||||
- '!.github/workflows/ios-beta.yaml' # Run check on self change
|
||||
- .forgejo/**
|
||||
- '!.forgejo/workflows/ios-beta.yaml' # Run check on self change
|
||||
- '**/*_tests/**'
|
||||
- '**/CMakeLists.txt'
|
||||
- CONTRIBUTORS
|
||||
@@ -3,7 +3,7 @@ on:
|
||||
workflow_dispatch: # Manual trigger
|
||||
pull_request:
|
||||
paths:
|
||||
- .github/workflows/ios-check-metadata.yaml # Run check on self change
|
||||
- .forgejo/workflows/ios-check-metadata.yaml # Run check on self change
|
||||
- iphone/metadata/**
|
||||
- tools/python/check_store_metadata.py
|
||||
|
||||
106
.forgejo/workflows/ios-check.yaml
Normal file
106
.forgejo/workflows/ios-check.yaml
Normal file
@@ -0,0 +1,106 @@
|
||||
name: iOS Check
|
||||
on:
|
||||
workflow_dispatch: # Manual trigger
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- .gitignore
|
||||
- .forgejo/**
|
||||
- '!.forgejo/workflows/ios-check.yaml' # Run check on self change
|
||||
- '**/*_tests/**'
|
||||
- '**/CMakeLists.txt'
|
||||
- CONTRIBUTORS
|
||||
- LICENSE
|
||||
- NOTICE
|
||||
- README.md
|
||||
- android/**
|
||||
- data/strings/**
|
||||
- docs/**
|
||||
- generator/**
|
||||
- iphone/metadata/**
|
||||
- packaging/**
|
||||
- platform/*_android*
|
||||
- platform/*_linux*
|
||||
- platform/*_mac*
|
||||
- platform/*qt*
|
||||
- platform/*_win*
|
||||
- pyhelpers/**
|
||||
- qt*/**
|
||||
- skin_generator/**
|
||||
- tools/**
|
||||
- track_generator/**
|
||||
|
||||
jobs:
|
||||
ios-check:
|
||||
name: Build iOS
|
||||
runs-on: macos-15
|
||||
env:
|
||||
DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
|
||||
LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII.
|
||||
LANGUAGE: en_US.UTF-8
|
||||
LC_ALL: en_US.UTF-8
|
||||
TEST_RESULTS_BUNDLE_NAME: CoMaps-Test-Results
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
buildType: [Debug, Release]
|
||||
# Cancels previous jobs if the same branch or PR was updated again.
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ matrix.buildType }}-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Parallel submodules checkout
|
||||
shell: bash
|
||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(sysctl -n hw.logicalcpu) * 20))
|
||||
|
||||
- name: Configure repository
|
||||
shell: bash
|
||||
run: ./configure.sh
|
||||
|
||||
- name: Configure XCode cache
|
||||
uses: irgaly/xcode-cache@v1
|
||||
with:
|
||||
key: xcode-cache-deriveddata-${{ github.workflow }}-${{ matrix.buildType }}-${{ github.sha }}
|
||||
restore-keys: xcode-cache-deriveddata-${{ github.workflow }}-${{ matrix.buildType }}
|
||||
|
||||
- name: Build and Run Tests (Debug)
|
||||
if: matrix.buildType == 'Debug'
|
||||
shell: bash
|
||||
run: |
|
||||
xcodebuild test \
|
||||
-workspace xcode/CoMaps.xcworkspace \
|
||||
-scheme CoMaps \
|
||||
-configuration Debug \
|
||||
-sdk iphonesimulator \
|
||||
-destination 'platform=iOS Simulator,name=iPhone 16 Pro Max,OS=latest' \
|
||||
-quiet \
|
||||
-resultBundlePath ${{ env.TEST_RESULTS_BUNDLE_NAME }}.xcresult \
|
||||
CODE_SIGNING_REQUIRED=NO \
|
||||
CODE_SIGNING_ALLOWED=NO
|
||||
|
||||
- name: Upload Test Results On Failure (Debug)
|
||||
if: ${{ matrix.buildType == 'Debug' && failure() }}
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ env.TEST_RESULTS_BUNDLE_NAME }}-${{ github.run_number }}.xcresult
|
||||
path: ${{ env.TEST_RESULTS_BUNDLE_NAME }}.xcresult
|
||||
if-no-files-found: error
|
||||
|
||||
- name: Build (Release)
|
||||
if: matrix.buildType == 'Release'
|
||||
shell: bash
|
||||
run: |
|
||||
xcodebuild build \
|
||||
-workspace xcode/CoMaps.xcworkspace \
|
||||
-scheme CoMaps \
|
||||
-configuration Release \
|
||||
-destination 'generic/platform=iOS' \
|
||||
-quiet \
|
||||
CODE_SIGNING_REQUIRED=NO \
|
||||
CODE_SIGNING_ALLOWED=NO
|
||||
@@ -29,7 +29,7 @@ jobs:
|
||||
with:
|
||||
repository: ${{ secrets.SCREENSHOTS_REPO }}
|
||||
ssh-key: ${{ secrets.SCREENSHOTS_SSH_KEY }}
|
||||
ref: master
|
||||
ref: main
|
||||
path: screenshots
|
||||
|
||||
- name: Checkout keywords
|
||||
@@ -37,7 +37,7 @@ jobs:
|
||||
with:
|
||||
repository: ${{ secrets.KEYWORDS_REPO }}
|
||||
ssh-key: ${{ secrets.KEYWORDS_SSH_KEY }}
|
||||
ref: master
|
||||
ref: main
|
||||
path: keywords
|
||||
|
||||
- name: Update metadata
|
||||
@@ -3,7 +3,7 @@ on:
|
||||
workflow_dispatch: # Manual trigger
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- .gitignore
|
||||
@@ -90,7 +90,7 @@ jobs:
|
||||
# -g1 should slightly reduce build time.
|
||||
run: |
|
||||
cmake . -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug \
|
||||
-DCMAKE_CXX_FLAGS=-g1 -DUNITY_DISABLE=ON
|
||||
-DCMAKE_CXX_FLAGS=-g1 -DCMAKE_UNITY_BUILD=OFF
|
||||
|
||||
- name: Compile
|
||||
shell: bash
|
||||
@@ -3,12 +3,12 @@ on:
|
||||
workflow_dispatch: # Manual trigger
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- .gitignore
|
||||
- .github/**
|
||||
- '!.github/workflows/macos-check.yaml' # Run check on self change
|
||||
- .forgejo/**
|
||||
- '!.forgejo/workflows/macos-check.yaml' # Run check on self change
|
||||
- CONTRIBUTORS
|
||||
- LICENSE
|
||||
- NOTICE
|
||||
4
.github/FUNDING.yml
vendored
4
.github/FUNDING.yml
vendored
@@ -1,4 +0,0 @@
|
||||
github: organicmaps
|
||||
liberapay: OrganicMaps
|
||||
open_collective: organicmaps
|
||||
custom: ["https://organicmaps.app/donate/", "https://donate.organicmaps.app/"]
|
||||
38
.github/ISSUE_TEMPLATE/bug_report.md
vendored
38
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -1,38 +0,0 @@
|
||||
---
|
||||
name: Bug Report
|
||||
about: Describe your issue in detail to help us improve Organic Maps
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
⚠ Have you searched for similar, already existing issues?
|
||||
|
||||
**Describe the issue**
|
||||
Please write a clear and concise description of the issue here.
|
||||
|
||||
|
||||
**Steps to reproduce**
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
|
||||
**Expected behaviour**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots or screen recordings to help explain your problem.
|
||||
|
||||
|
||||
**System information:**
|
||||
- Operating system and its version: [iOS 12, Android 10, Ubuntu 22, MacOS Big Sur, etc.]
|
||||
- Organic Maps version: [you can find it by tapping the button with the green Organic Maps logo]
|
||||
- Device Model: [e.g. iPhone 6, Samsung S22]
|
||||
|
||||
|
||||
**Additional context**
|
||||
Please add any other context or comments here that may be useful.
|
||||
11
.github/ISSUE_TEMPLATE/config.yml
vendored
11
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1,11 +0,0 @@
|
||||
blank_issues_enabled: true
|
||||
contact_links:
|
||||
- name: Discussions
|
||||
url: https://github.com/organicmaps/organicmaps/discussions
|
||||
about: Discuss the usage of Organic Maps, ask questions, or talk about ideas that aren't yet actionable.
|
||||
- name: Translations
|
||||
url: https://github.com/organicmaps/organicmaps/blob/master/docs/TRANSLATIONS.md
|
||||
about: Translate Organic Maps into your language
|
||||
- name: News
|
||||
url: https://organicmaps.app/news/
|
||||
about: Check the latest project news
|
||||
27
.github/ISSUE_TEMPLATE/feature_request.md
vendored
27
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@@ -1,27 +0,0 @@
|
||||
---
|
||||
name: Feature Request
|
||||
about: Suggest an idea for Organic Maps
|
||||
title: ''
|
||||
labels: []
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
⚠ Have you searched for similar, already existing issues?
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. For example:
|
||||
I'm always frustrated when [...]
|
||||
|
||||
|
||||
**Describe the ideal solution**
|
||||
A clear and concise description of what you want to see in Organic Maps.
|
||||
|
||||
|
||||
**Describe alternatives you have considered**
|
||||
- How do you solve this issue now with Organic Maps or other apps?
|
||||
- Attach any examples, screenshots, or screen recordings from other apps that help us to better understand the idea.
|
||||
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
61
.github/workflows/android-check.yaml
vendored
61
.github/workflows/android-check.yaml
vendored
@@ -3,36 +3,7 @@ on:
|
||||
workflow_dispatch: # Manual trigger
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- .gitignore
|
||||
- .github/**
|
||||
- '!.github/workflows/android-check.yaml' # Run check on self change
|
||||
- '**/*_tests/**'
|
||||
- CONTRIBUTORS
|
||||
- LICENSE
|
||||
- NOTICE
|
||||
- README.md
|
||||
- android/app/src/fdroid/**
|
||||
- android/app/src/google/**
|
||||
- iphone/**
|
||||
- data/strings/**
|
||||
- docs/**
|
||||
- generator/**
|
||||
- packaging/**
|
||||
- platform/*apple*
|
||||
- platform/*_ios*
|
||||
- platform/*_linux*
|
||||
- platform/*_mac*
|
||||
- platform/*qt*
|
||||
- platform/*_win*
|
||||
- pyhelpers/**
|
||||
- qt*/**
|
||||
- skin_generator/**
|
||||
- tools/**
|
||||
- track_generator/**
|
||||
- xcode/**
|
||||
- main
|
||||
|
||||
env:
|
||||
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
|
||||
@@ -51,9 +22,9 @@ jobs:
|
||||
shell: bash
|
||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||
|
||||
- name: Configure repository
|
||||
- name: Init boost, generate textures
|
||||
shell: bash
|
||||
run: ./configure.sh
|
||||
run: ./configure.sh --skip-map-download
|
||||
|
||||
- name: Lint
|
||||
shell: bash
|
||||
@@ -61,14 +32,14 @@ jobs:
|
||||
run: ./gradlew -Pandroidauto=true lint
|
||||
|
||||
android-check:
|
||||
name: Build Android Debug
|
||||
name: Build Android apps
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
flavor: [WebDebug, FdroidDebug]
|
||||
flavor: [WebBeta, FdroidDebug]
|
||||
include:
|
||||
- flavor: WebDebug
|
||||
- flavor: WebBeta
|
||||
arch: arm64
|
||||
- flavor: FdroidDebug
|
||||
arch: arm32
|
||||
@@ -82,7 +53,19 @@ jobs:
|
||||
shell: bash
|
||||
run: |
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y ninja-build
|
||||
sudo apt-get install -y ninja-build \
|
||||
qt6-base-dev \
|
||||
qt6-declarative-dev \
|
||||
qt6-positioning-dev \
|
||||
libqt6svg6-dev \
|
||||
optipng \
|
||||
libfreetype-dev \
|
||||
libharfbuzz-dev \
|
||||
libxrandr-dev \
|
||||
libxinerama-dev \
|
||||
libxcursor-dev \
|
||||
libxi-dev \
|
||||
zlib1g-dev
|
||||
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
@@ -93,9 +76,9 @@ jobs:
|
||||
shell: bash
|
||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||
|
||||
- name: Configure repository
|
||||
- name: Init boost, generate textures
|
||||
shell: bash
|
||||
run: ./configure.sh
|
||||
run: ./configure.sh --skip-map-download
|
||||
|
||||
- name: Configure ccache
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
@@ -117,5 +100,5 @@ jobs:
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: android-${{ matrix.flavor }}
|
||||
path: android/app/build/outputs/apk/**/OrganicMaps-*.apk
|
||||
path: android/app/build/outputs/apk/**/CoMaps-*.apk
|
||||
if-no-files-found: error
|
||||
|
||||
51
.github/workflows/ios-check.yaml
vendored
51
.github/workflows/ios-check.yaml
vendored
@@ -3,34 +3,7 @@ on:
|
||||
workflow_dispatch: # Manual trigger
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- .gitignore
|
||||
- .github/**
|
||||
- '!.github/workflows/ios-check.yaml' # Run check on self change
|
||||
- '**/*_tests/**'
|
||||
- '**/CMakeLists.txt'
|
||||
- CONTRIBUTORS
|
||||
- LICENSE
|
||||
- NOTICE
|
||||
- README.md
|
||||
- android/**
|
||||
- data/strings/**
|
||||
- docs/**
|
||||
- generator/**
|
||||
- iphone/metadata/**
|
||||
- packaging/**
|
||||
- platform/*_android*
|
||||
- platform/*_linux*
|
||||
- platform/*_mac*
|
||||
- platform/*qt*
|
||||
- platform/*_win*
|
||||
- pyhelpers/**
|
||||
- qt*/**
|
||||
- skin_generator/**
|
||||
- tools/**
|
||||
- track_generator/**
|
||||
- main
|
||||
|
||||
jobs:
|
||||
ios-check:
|
||||
@@ -41,7 +14,8 @@ jobs:
|
||||
LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII.
|
||||
LANGUAGE: en_US.UTF-8
|
||||
LC_ALL: en_US.UTF-8
|
||||
TEST_RESULTS_BUNDLE_NAME: OMaps-Test-Results
|
||||
TEST_RESULTS_BUNDLE_NAME: CoMaps-Test-Results
|
||||
SIMULATOR_DEVICE: 'iPhone 16 Pro Max'
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
@@ -52,6 +26,10 @@ jobs:
|
||||
cancel-in-progress: true
|
||||
|
||||
steps:
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
brew install qt \
|
||||
optipng
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
|
||||
@@ -59,7 +37,7 @@ jobs:
|
||||
shell: bash
|
||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(sysctl -n hw.logicalcpu) * 20))
|
||||
|
||||
- name: Configure repository
|
||||
- name: Init boost, download World map, generate textures
|
||||
shell: bash
|
||||
run: ./configure.sh
|
||||
|
||||
@@ -73,12 +51,15 @@ jobs:
|
||||
if: matrix.buildType == 'Debug'
|
||||
shell: bash
|
||||
run: |
|
||||
# Start sim before the build to make sure it's booted when tests start.
|
||||
xcrun simctl boot "${{ env.SIMULATOR_DEVICE }}" || true
|
||||
xcrun simctl bootstatus "${{ env.SIMULATOR_DEVICE }}" -b
|
||||
xcodebuild test \
|
||||
-workspace xcode/omim.xcworkspace \
|
||||
-scheme OMaps \
|
||||
-workspace xcode/CoMaps.xcworkspace \
|
||||
-scheme CoMaps \
|
||||
-configuration Debug \
|
||||
-sdk iphonesimulator \
|
||||
-destination 'platform=iOS Simulator,name=iPhone 16 Pro Max,OS=latest' \
|
||||
-destination "platform=iOS Simulator,name=${{ env.SIMULATOR_DEVICE }},OS=latest" \
|
||||
-quiet \
|
||||
-resultBundlePath ${{ env.TEST_RESULTS_BUNDLE_NAME }}.xcresult \
|
||||
CODE_SIGNING_REQUIRED=NO \
|
||||
@@ -97,8 +78,8 @@ jobs:
|
||||
shell: bash
|
||||
run: |
|
||||
xcodebuild build \
|
||||
-workspace xcode/omim.xcworkspace \
|
||||
-scheme OMaps \
|
||||
-workspace xcode/CoMaps.xcworkspace \
|
||||
-scheme CoMaps \
|
||||
-configuration Release \
|
||||
-destination 'generic/platform=iOS' \
|
||||
-quiet \
|
||||
|
||||
18
.gitignore
vendored
18
.gitignore
vendored
@@ -16,11 +16,16 @@ screenlog.0
|
||||
|
||||
data/styles/*/*/out/*
|
||||
data/resources-*_design/*
|
||||
# symbols png/sdf are now generated at build
|
||||
data/resources-*_*/symbols.png
|
||||
data/resources-*_*/symbols.sdf
|
||||
data/drules_proto_default_design.bin
|
||||
data/colors_design.txt
|
||||
data/patterns_design.txt
|
||||
data/bookmarks
|
||||
data/edits.xml
|
||||
data/World.mwm
|
||||
data/WorldCoasts.mwm
|
||||
|
||||
# Compiled Python
|
||||
*.pyc
|
||||
@@ -57,7 +62,7 @@ iphone/*/build/*
|
||||
tools/emacsmode/build
|
||||
**/DerivedData/*
|
||||
**/xcshareddata/*
|
||||
!iphone/Maps/Maps.xcodeproj/xcshareddata/xcschemes/OMaps.xcscheme
|
||||
!iphone/Maps/Maps.xcodeproj/xcshareddata/xcschemes/CoMaps.xcscheme
|
||||
**/xcuserdata
|
||||
**/xcschemes
|
||||
iphone/**/*.moved-aside
|
||||
@@ -134,10 +139,7 @@ private.h
|
||||
android/release.keystore
|
||||
android/secure.properties
|
||||
android/libnotify.properties
|
||||
android/google-services.json
|
||||
android/google-play.json
|
||||
android/firebase-app-distribution.json
|
||||
android/firebase-test-lab.json
|
||||
android/huawei-appgallery.json
|
||||
android/res/xml/network_security_config.xml
|
||||
./server/
|
||||
@@ -173,6 +175,7 @@ tools/python/*/venv/
|
||||
# Configs
|
||||
tools/python/maps_generator/var/etc/map_generator.ini
|
||||
tools/python/routing/etc/*.ini
|
||||
tools/unix/maps/settings.sh
|
||||
|
||||
# Helpers
|
||||
/node_modules/
|
||||
@@ -183,9 +186,4 @@ tools/python/routing/etc/*.ini
|
||||
|
||||
# VS Code
|
||||
.vscode
|
||||
|
||||
# AppStore metadata
|
||||
screenshots/
|
||||
android/src/google/play/listings/
|
||||
keywords/
|
||||
iphone/metadata/**/keywords.txt
|
||||
.cache
|
||||
|
||||
10
.gitmodules
vendored
10
.gitmodules
vendored
@@ -1,12 +1,12 @@
|
||||
[submodule "tools/osmctools"]
|
||||
path = tools/osmctools
|
||||
url = https://git.omaps.dev/organicmaps/osmctools.git
|
||||
url = https://github.com/organicmaps/osmctools.git
|
||||
[submodule "tools/kothic"]
|
||||
path = tools/kothic
|
||||
url = https://git.omaps.dev/organicmaps/kothic.git
|
||||
url = https://codeberg.org/comaps/kothic.git
|
||||
[submodule "3party/protobuf/protobuf"]
|
||||
path = 3party/protobuf/protobuf
|
||||
url = https://git.omaps.dev/organicmaps/protobuf.git
|
||||
url = https://codeberg.org/comaps/protobuf.git
|
||||
[submodule "3party/Vulkan-Headers"]
|
||||
path = 3party/Vulkan-Headers
|
||||
url = https://github.com/KhronosGroup/Vulkan-Headers.git
|
||||
@@ -17,7 +17,7 @@
|
||||
ignore = dirty
|
||||
[submodule "3party/just_gtfs"]
|
||||
path = 3party/just_gtfs
|
||||
url = https://git.omaps.dev/organicmaps/just_gtfs.git
|
||||
url = https://github.com/organicmaps/just_gtfs.git
|
||||
branch = for-usage-as-submodule
|
||||
[submodule "3party/expat"]
|
||||
path = 3party/expat
|
||||
@@ -31,7 +31,7 @@
|
||||
url = https://github.com/unicode-org/icu.git
|
||||
[submodule "3party/freetype/freetype"]
|
||||
path = 3party/freetype/freetype
|
||||
url = https://git.omaps.dev/organicmaps/freetype.git
|
||||
url = https://gitlab.freedesktop.org/freetype/freetype.git
|
||||
[submodule "3party/googletest"]
|
||||
path = 3party/googletest
|
||||
url = https://github.com/google/googletest.git
|
||||
|
||||
@@ -31,9 +31,10 @@ if (NOT WITH_SYSTEM_PROVIDED_3PARTY)
|
||||
set(JANSSON_WITHOUT_TESTS ON)
|
||||
add_subdirectory(jansson/jansson/)
|
||||
target_include_directories(jansson INTERFACE "${PROJECT_BINARY_DIR}/3party/jansson/jansson/include")
|
||||
add_library(jansson::jansson ALIAS jansson)
|
||||
|
||||
# Add gflags library.
|
||||
set(GFLAGS_BUILD_TESTING OFF)
|
||||
set(GFLAGS_BUILD_PACKAGING OFF)
|
||||
add_subdirectory(gflags)
|
||||
target_compile_options(gflags_nothreads_static PRIVATE $<$<CXX_COMPILER_ID:GNU>:-Wno-subobject-linkage>)
|
||||
|
||||
|
||||
201
CMakeLists.txt
201
CMakeLists.txt
@@ -11,11 +11,28 @@ set(CMAKE_C_VISIBILITY_PRESET hidden)
|
||||
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
||||
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
|
||||
|
||||
# Disable build-id generation to make builds reproducible.
|
||||
if (NOT APPLE)
|
||||
add_link_options("LINKER:--build-id=none")
|
||||
endif()
|
||||
|
||||
# Fixes warning ld: warning: ignoring duplicate libraries on Mac and Windows.
|
||||
if (POLICY CMP0156)
|
||||
cmake_policy(SET CMP0156 NEW)
|
||||
endif()
|
||||
|
||||
set(OMIM_ROOT ${CMAKE_SOURCE_DIR})
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${OMIM_ROOT}/cmake")
|
||||
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
include(OmimPlatform)
|
||||
include(OmimOptions)
|
||||
include(OmimConfig)
|
||||
include(OmimHelpers)
|
||||
include(OmimTesting)
|
||||
|
||||
if (APPLE AND NOT ("${CMAKE_SYSTEM_NAME}" STREQUAL Android))
|
||||
# OBJC/OBJCXX are needed to skip m/mm files in Unity builds.
|
||||
# https://gitlab.kitware.com/cmake/cmake/-/issues/21963
|
||||
@@ -33,24 +50,14 @@ endif()
|
||||
|
||||
message(STATUS "Using compiler ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
|
||||
|
||||
option(COVERAGE_REPORT "Configure for coverage report" OFF)
|
||||
|
||||
option(UNITY_DISABLE "Disable unity build" OFF)
|
||||
if (NOT UNITY_DISABLE AND NOT DEFINED ENV{UNITY_DISABLE})
|
||||
set(CMAKE_UNITY_BUILD ON)
|
||||
if (DEFINED ENV{UNITY_BUILD_BATCH_SIZE})
|
||||
set(CMAKE_UNITY_BUILD_BATCH_SIZE $ENV{UNITY_BUILD_BATCH_SIZE})
|
||||
else()
|
||||
set(CMAKE_UNITY_BUILD_BATCH_SIZE 50)
|
||||
endif()
|
||||
message(STATUS "Using Unity Build with batch ${CMAKE_UNITY_BUILD_BATCH_SIZE}, export UNITY_DISABLE=1 or use -DUNITY_DISABLE=ON to disable it.")
|
||||
if (CMAKE_UNITY_BUILD)
|
||||
message(STATUS "Using Unity Build with batch ${CMAKE_UNITY_BUILD_BATCH_SIZE}, use -DCMAKE_UNITY_BUILD=OFF to disable it.")
|
||||
endif()
|
||||
|
||||
option(CCACHE_DISABLE "Disable ccache" OFF)
|
||||
if (NOT CCACHE_DISABLE AND NOT DEFINED ENV{CCACHE_DISABLE})
|
||||
if (USE_CCACHE)
|
||||
find_program(CCACHE_PROGRAM ccache HINTS /usr/local/bin/)
|
||||
if (CCACHE_PROGRAM)
|
||||
message(STATUS "Using ccache, export CCACHE_DISABLE=1 or use -DCCACHE_DISABLE=ON to disable it.")
|
||||
message(STATUS "Using ccache, use -DUSE_CCACHE=OFF to disable it.")
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "${CCACHE_PROGRAM}")
|
||||
set(CMAKE_C_COMPILER_LAUNCHER "${CCACHE_PROGRAM}")
|
||||
@@ -58,44 +65,13 @@ if (NOT CCACHE_DISABLE AND NOT DEFINED ENV{CCACHE_DISABLE})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
option(COLORS_DISABLE "Disable colored compiler output" OFF)
|
||||
if (NOT DEFINED ENV{COLORS_DISABLE} AND CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
|
||||
message(STATUS "export COLORS_DISABLE=1 or use -DCOLORS_DISABLE=ON to disable colored compiler output.")
|
||||
add_compile_options($<$<CXX_COMPILER_ID:GNU>:-fdiagnostics-color=always> $<$<CXX_COMPILER_ID:Clang,AppleClang>:-fcolor-diagnostics>)
|
||||
add_link_options($<$<CXX_COMPILER_ID:GNU>:-fdiagnostics-color=always> $<$<CXX_COMPILER_ID:Clang,AppleClang>:-fcolor-diagnostics>)
|
||||
endif()
|
||||
|
||||
option(WITH_SYSTEM_PROVIDED_3PARTY "Enable compilation with system provided dependencies" OFF)
|
||||
set(OMIM_ROOT ${CMAKE_SOURCE_DIR})
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${OMIM_ROOT}/cmake")
|
||||
|
||||
include(OmimHelpers)
|
||||
include(OmimTesting)
|
||||
|
||||
set(PLATFORM_DESKTOP TRUE)
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
set(PLATFORM_LINUX TRUE)
|
||||
elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||
set(PLATFORM_MAC TRUE)
|
||||
elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
set(PLATFORM_WIN TRUE)
|
||||
elseif (CMAKE_SYSTEM_NAME STREQUAL "Android")
|
||||
set(PLATFORM_ANDROID TRUE)
|
||||
set(PLATFORM_DESKTOP FALSE)
|
||||
elseif (CMAKE_SYSTEM_NAME STREQUAL "iOS")
|
||||
set(PLATFORM_IPHONE TRUE)
|
||||
set(PLATFORM_DESKTOP FALSE)
|
||||
else()
|
||||
message(FATAL_ERROR "Unsupported platform: ${CMAKE_SYSTEM_NAME}")
|
||||
endif()
|
||||
|
||||
if(${PLATFORM_MAC})
|
||||
set(XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES)
|
||||
|
||||
# Metal language support
|
||||
list(APPEND CMAKE_MODULE_PATH ${OMIM_ROOT}/3party/CMake-MetalShaderSupport/cmake)
|
||||
include(CheckLanguage)
|
||||
include(CMakeMetalInformation)
|
||||
include(MetalShaderSupport)
|
||||
check_language(Metal)
|
||||
if(CMAKE_Metal_COMPILER)
|
||||
@@ -103,23 +79,6 @@ if(${PLATFORM_MAC})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Sanitizer
|
||||
if (PLATFORM_DESKTOP)
|
||||
# https://clang.llvm.org/docs/UsersManual.html#controlling-code-generation
|
||||
set(BUILD_WITH_SANITIZER None CACHE STRING "Set to 'address' or others to enable sanitizer")
|
||||
|
||||
if (NOT ${BUILD_WITH_SANITIZER} MATCHES "None")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=${BUILD_WITH_SANITIZER} -fno-omit-frame-pointer")
|
||||
set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} -fsanitize=${BUILD_WITH_SANITIZER} -fno-omit-frame-pointer")
|
||||
message(STATUS "Enable sanitizer: ${BUILD_WITH_SANITIZER}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Set build type:
|
||||
if (NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE "Release")
|
||||
endif()
|
||||
|
||||
# Global compile options for all configurations.
|
||||
if (MSVC)
|
||||
add_compile_options(/utf-8)
|
||||
@@ -151,103 +110,11 @@ else()
|
||||
endif()
|
||||
|
||||
message(STATUS "Build type: " ${CMAKE_BUILD_TYPE})
|
||||
# End of setting build type
|
||||
|
||||
# Options
|
||||
|
||||
# Call `make package` after cmake to build design tool.
|
||||
option(BUILD_DESIGNER "Build application as design tool" OFF)
|
||||
if (BUILD_DESIGNER)
|
||||
message(STATUS "Designer tool building is enabled")
|
||||
add_definitions(-DBUILD_DESIGNER)
|
||||
endif()
|
||||
|
||||
option(BUILD_STANDALONE "Build standalone application" OFF)
|
||||
if (BUILD_STANDALONE)
|
||||
message(STATUS "Standalone building is enabled")
|
||||
add_definitions(-DBUILD_STANDALONE)
|
||||
endif()
|
||||
|
||||
option(USE_ASAN "Enable Address Sanitizer" OFF)
|
||||
option(USE_TSAN "Enable Thread Sanitizer" OFF)
|
||||
option(USE_LIBFUZZER "Enable LibFuzzer" OFF)
|
||||
option(PYBINDINGS "Create makefiles for building python bindings" OFF)
|
||||
option(SKIP_QT_GUI "Skip building of Qt GUI" OFF)
|
||||
option(USE_PCH "Use precompiled headers" OFF)
|
||||
option(NJOBS "Number of parallel processes" OFF)
|
||||
option(ENABLE_VULKAN_DIAGNOSTICS "Enable Vulkan diagnostics" OFF)
|
||||
option(ENABLE_TRACE "Enable Tracing" OFF)
|
||||
|
||||
if (NJOBS)
|
||||
message(STATUS "Number of parallel processes: ${NJOBS}")
|
||||
set(CMAKE_JOB_POOLS custom=${NJOBS})
|
||||
set(CMAKE_JOB_POOL_COMPILE custom)
|
||||
set(CMAKE_JOB_POOL_LINK custom)
|
||||
set(CMAKE_JOB_POOL_PRECOMPILE_HEADER custom)
|
||||
endif()
|
||||
|
||||
# GCC 10.0 is required to support <charconv> header inclusion in base/string_utils.hpp
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 10.0)
|
||||
message(FATAL_ERROR "Minimum supported g++ version is 10.0, yours is ${CMAKE_CXX_COMPILER_VERSION}")
|
||||
endif()
|
||||
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
set(PCH_EXTENSION "pch")
|
||||
endif()
|
||||
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
set(PCH_EXTENSION "gch")
|
||||
endif()
|
||||
|
||||
if (PLATFORM_LINUX)
|
||||
option(USE_PPROF "Enable Google Profiler" OFF)
|
||||
endif()
|
||||
|
||||
if (USE_ASAN)
|
||||
message(STATUS "Address Sanitizer is enabled")
|
||||
endif()
|
||||
|
||||
if (USE_TSAN)
|
||||
message(STATUS "Thread Sanitizer is enabled")
|
||||
endif()
|
||||
|
||||
if (USE_ASAN AND USE_TSAN)
|
||||
message(FATAL_ERROR "Can't use two different sanitizers together")
|
||||
endif()
|
||||
|
||||
if (USE_LIBFUZZER)
|
||||
message(STATUS "LibFuzzer is enabled")
|
||||
endif()
|
||||
|
||||
if (USE_PPROF)
|
||||
message(STATUS "Google Profiler is enabled")
|
||||
add_definitions(-DUSE_PPROF)
|
||||
endif()
|
||||
|
||||
if (USE_HEAPPROF)
|
||||
message(STATUS "Heap Profiler is enabled")
|
||||
endif()
|
||||
|
||||
if (ENABLE_VULKAN_DIAGNOSTICS)
|
||||
message(WARNING "Vulkan diagnostics are enabled. Be aware of performance impact!")
|
||||
add_definitions(-DENABLE_VULKAN_DIAGNOSTICS)
|
||||
endif()
|
||||
|
||||
if (ENABLE_TRACE)
|
||||
message(STATUS "Tracing is enabled")
|
||||
add_definitions(-DENABLE_TRACE)
|
||||
endif()
|
||||
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
# Set environment variables
|
||||
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR})
|
||||
set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
if (PLATFORM_LINUX OR PLATFORM_ANDROID)
|
||||
find_program(LLD_FOUND ld.lld)
|
||||
if (LLD_FOUND)
|
||||
message(STATUS "Using ld.ldd linker")
|
||||
message(STATUS "Using ld.lld linker")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "-fuse-ld=lld")
|
||||
else()
|
||||
find_program(GOLD_FOUND ld.gold)
|
||||
@@ -300,28 +167,6 @@ endif()
|
||||
# To allow #include "base/file_name.hpp" in all sources.
|
||||
include_directories(${CMAKE_HOME_DIRECTORY})
|
||||
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
if (USE_ASAN)
|
||||
add_compile_options(
|
||||
"-fsanitize=address"
|
||||
"-fno-omit-frame-pointer"
|
||||
)
|
||||
endif()
|
||||
|
||||
if (USE_TSAN)
|
||||
add_compile_options(
|
||||
"-fsanitize=thread"
|
||||
"-fno-omit-frame-pointer"
|
||||
)
|
||||
endif()
|
||||
|
||||
if (USE_LIBFUZZER)
|
||||
add_compile_options(
|
||||
"-fsanitize=fuzzer"
|
||||
)
|
||||
endif()
|
||||
|
||||
if (USE_PCH)
|
||||
message(STATUS "Precompiled headers are ON")
|
||||
set(OMIM_PCH_TARGET_NAME "omim_pch")
|
||||
|
||||
11
CONTRIBUTORS
11
CONTRIBUTORS
@@ -2,6 +2,17 @@ This file contains a list of people who have contributed to this project.
|
||||
Its not neccesarily comprehensive.
|
||||
Feel free to add yourself here along with your first contribution!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
CoMaps contributors:
|
||||
(in alphabetic order)
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Bastian Greshake Tzovaras
|
||||
clover sage
|
||||
Harry Bond <me@hbond.xyz>
|
||||
vikiawv
|
||||
Yannik Bloscheck
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
Organic Maps (formerly OMaps) contributors:
|
||||
(in alphabetic order)
|
||||
|
||||
9
LEGAL
9
LEGAL
@@ -1,9 +0,0 @@
|
||||
Certain project resources, including but not limited to domain names, trademarks, hosting accounts, payment accounts, and others, are overseen and managed by Organic Maps OÜ. The governance of these digital assets is subject to policies established by Organic Maps OÜ, in compliance with applicable statutory laws.
|
||||
|
||||
Organic Maps OÜ is a legal entity established on 2021-05-01 under the laws of the Republic of Estonia and the European Union, with registration number 16225385. The primary purpose of the entity is to shield the project's members from personal liability and to ensure the legal protection of the project's assets. Official up-to-date information about the entity can be found in the Estonian Business Register:
|
||||
|
||||
https://ariregister.rik.ee/eng/company/16225385/Organic-Maps-O%C3%9C
|
||||
|
||||
Organic Maps OÜ does not require contributors to transfer copyright ownership and does not retain any copyright over the code contributed to the repository. See the NOTICE file and docs/DCO.md for additional information.
|
||||
|
||||
For any legal inquiries, feel free to contact legal@organicmaps.app.
|
||||
3
NOTICE
3
NOTICE
@@ -1,5 +1,6 @@
|
||||
Copyright 2020 My.com B.V. (Mail.Ru Group)
|
||||
Copyright 2024 Organic Maps Contributors
|
||||
Copyright 2025 Organic Maps Contributors
|
||||
Copyright 2025 CoMaps Contributors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
||||
286
README.md
286
README.md
@@ -1,185 +1,163 @@
|
||||
<div align="center">
|
||||
<img src="qt/res/logo.png" height="100"/>
|
||||
<!-- Navigation Bar -->
|
||||
<p align="center">
|
||||
<a href="https://codeberg.org/comaps#comaps">Project Intro</a> |
|
||||
<a href="https://codeberg.org/comaps/Governance#comaps-project-governance-docs">Governance</a> |
|
||||
<a href="https://codeberg.org/comaps/Governance/src/branch/main/FAQ.md">FAQ</a> |
|
||||
<a href="#contributing">Contribute</a> |
|
||||
<a href="https://www.comaps.app/donate">Donate</a> |
|
||||
<a href="https://codeberg.org/comaps#keep-connected">Keep Connected</a>
|
||||
</p>
|
||||
|
||||
<div align="center" >
|
||||
<img src="docs/badges/logo.svg" width="150">
|
||||
</div>
|
||||
<h1 align="center"">Organic Maps</h1>
|
||||
|
||||
[Organic Maps](https://organicmaps.app) is a free Android & iOS offline maps app for travellers, tourists, drivers, hikers, and cyclists.
|
||||
It uses crowd-sourced [OpenStreetMap](https://www.openstreetmap.org) data and is developed with love by the creators of **MapsWithMe** (later renamed to **Maps.Me**) and by our community.
|
||||
No ads, no tracking, no data collection, no crapware. Your [donations](https://organicmaps.app/donate/) and positive reviews motivate and inspire us, thanks ❤️!
|
||||
|
||||
[<img src="docs/badges/apple-appstore.png" alt="App Store" width="160">](https://apps.apple.com/app/organic-maps/id1567437057)
|
||||
[<img src="docs/badges/google-play.png" alt="Google Play" width="160">](https://play.google.com/store/apps/details?id=app.organicmaps)
|
||||
[<img src="docs/badges/huawei-appgallery.png" alt="AppGallery" width="160">](https://appgallery.huawei.com/#/app/C104325611)
|
||||
[<img src="docs/badges/obtainium.png" alt="Obtainium" width="160">](https://github.com/organicmaps/organicmaps/wiki/Installing-Organic-Maps-from-GitHub-using-Obtainium)
|
||||
[<img src="docs/badges/fdroid.png" alt="F-Droid" width="160">](https://f-droid.org/en/packages/app.organicmaps/)
|
||||
<div align="center">
|
||||
<h1><a href="https://comaps.app/">CoMaps</a></h1>
|
||||
<h2>Hike, Bike, Drive Offline - Easy Map Navigation with Privacy</h2>
|
||||
</div>
|
||||
<div align="center">
|
||||
<p align="center">
|
||||
<a href="https://codeberg.org/comaps/comaps/releases">
|
||||
<img src="https://img.shields.io/github/license/comaps/comaps?style=for-the-badge&logo=opensourceinitiative&logoColor=white&color=588157" alt="License" style="width: 90%; max-width: 150px;"/>
|
||||
</a>
|
||||
<a href="https://github.com/comaps/comaps/actions/workflows/android-check.yaml">
|
||||
<img src="https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github/workflows/android-check.yaml?label=Android%20Build&logo=android&logoColor=white&style=for-the-badge&color=588157" alt="Android Build Status" style="width: 90%; max-width: 170px;"/>
|
||||
</a>
|
||||
<a href="https://github.com/comaps/comaps/actions/workflows/ios-check.yaml">
|
||||
<img src="https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github/workflows/ios-check.yaml?label=iOS%20Build&logo=apple&logoColor=white&style=for-the-badge&color=588157" alt="iOS Build Status" style="width: 90%; max-width: 145px;"/>
|
||||
</a>
|
||||
<a href="https://opencollective.com/comaps">
|
||||
<img src="https://img.shields.io/opencollective/all/comaps?label=Open%20Collective%20Donors&logo=opencollective&logoColor=white&style=for-the-badge&color=588157" alt="Open Collective Donors" style="width: 90%; max-width: 191px;"/>
|
||||
</a>
|
||||
<a href="https://liberapay.com/CoMaps">
|
||||
<img src="https://img.shields.io/liberapay/patrons/CoMaps.svg?label=Liberapay%20Patrons&logo=liberapay&logoColor=white&style=for-the-badge&color=588157" alt="Liberapay Patrons" style="width: 90%; max-width: 160px;"/>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p float="left">
|
||||
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/1.jpg" width="400" />
|
||||
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/2.jpg" width="400" />
|
||||
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/3.jpg" width="400" />
|
||||
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/4.jpg" width="400" />
|
||||
---
|
||||
|
||||
A community-led free & open source maps app based on [OpenStreetMap](https://www.openstreetmap.org), built for transparency, privacy, and not-for-profit values. A fork of Organic Maps, originally based on Maps.ME.
|
||||
|
||||
**Available for:** Android, iOS, ARM macOS, and alpha Linux/macOS desktop builds (also usable on Linux phones).
|
||||
|
||||
<p align="center">
|
||||
<a href="https://apps.apple.com/app/comaps/id6747180809">
|
||||
<img src="docs/badges/apple-appstore.png" alt="App Store" width="160"/>
|
||||
</a>
|
||||
<a href="https://play.google.com/store/apps/details?id=app.comaps.google">
|
||||
<img src="docs/badges/google-play.png" alt="Google Play" width="160"/>
|
||||
</a>
|
||||
<a href="https://f-droid.org/en/packages/app.comaps.fdroid/">
|
||||
<img src="docs/badges/fdroid.png" alt="F-Droid" width="160"/>
|
||||
</a>
|
||||
<a href="https://codeberg.org/comaps/comaps/releases">
|
||||
<img src="docs/badges/codeberg.png" alt="Codeberg" width="160"/>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
## Features
|
||||
|
||||
Organic Maps is the ultimate companion app for travellers, tourists, hikers, and cyclists:
|
||||
|
||||
- Detailed offline maps with places that don't exist on other maps, thanks to [OpenStreetMap](https://openstreetmap.org)
|
||||
- Cycling routes, hiking trails, and walking paths
|
||||
- Contour lines, elevation profiles, peaks, and slopes
|
||||
- Turn-by-turn walking, cycling, and car navigation with voice guidance
|
||||
- Fast offline search on the map
|
||||
- Bookmarks and tracks import and export in KML, KMZ & GPX formats
|
||||
- Dark Mode to protect your eyes
|
||||
- Countries and regions don't take a lot of space
|
||||
- Free and open-source
|
||||
|
||||
## Why Organic?
|
||||
|
||||
Organic Maps is pure and organic, made with love:
|
||||
|
||||
- Respects your privacy
|
||||
- Saves your battery
|
||||
- No unexpected mobile data charges
|
||||
|
||||
Organic Maps is free from trackers and other bad stuff:
|
||||
|
||||
- No ads
|
||||
- No tracking
|
||||
- No data collection
|
||||
- No phoning home
|
||||
- No annoying registration
|
||||
- No mandatory tutorials
|
||||
- No noisy email spam
|
||||
- No push notifications
|
||||
- No crapware
|
||||
- ~~No pesticides~~ Purely organic!
|
||||
|
||||
The Android application is verified by the <a href="https://reports.exodus-privacy.eu.org/en/reports/app.organicmaps/latest/">Exodus Privacy Project:
|
||||
|
||||
<img src="docs/privacy/exodus.png" width="400">
|
||||
</a>
|
||||
|
||||
The iOS application is verified by <a href="https://ios.trackercontrol.org/analysis/app.organicmaps">TrackerControl for iOS:
|
||||
|
||||
<img src="docs/privacy/trackercontrol-ios.png" width="400">
|
||||
</a>
|
||||
|
||||
<br/>
|
||||
|
||||
Organic Maps doesn't request excessive permissions to spy on you:
|
||||
|
||||
<p float="left">
|
||||
<img src="docs/privacy/om.jpg" width="400">
|
||||
<img src="docs/privacy/mm.jpg" width="400">
|
||||
<!-- Screenshots -->
|
||||
<p align="center">
|
||||
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/1.png" width="180" />
|
||||
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/2.png" width="180" />
|
||||
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/3.png" width="180" />
|
||||
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/4.png" width="180" />
|
||||
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/5.png" width="180" />
|
||||
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/6.png" width="180" />
|
||||
</p>
|
||||
|
||||
At Organic Maps, we believe that privacy is a fundamental human right:
|
||||
---
|
||||
|
||||
- Organic Maps is an indie community-driven open-source project
|
||||
- We protect your privacy from Big Tech's prying eyes
|
||||
- Stay safe no matter where you are
|
||||
## ⚡️ Highlights
|
||||
|
||||
Reject surveillance - embrace your freedom.
|
||||
- **Offline-first**: Navigate without a connection
|
||||
- **Privacy-respecting**: No tracking, Ads or data collection
|
||||
- **Lightweight**: Battery- and space-efficient
|
||||
- **Simple**: Polished, user-focused interface
|
||||
- **Community-built**: Free, open source, and collaborative
|
||||
- **Transparent**: Open finances and governance
|
||||
|
||||
[**Give Organic Maps a try!**](#install)
|
||||
---
|
||||
|
||||
## Who is paying for the development?
|
||||
## 🚀 Main Features
|
||||
|
||||
The app is free for everyone, so we rely on donations. Please donate at [organicmaps.app/donate](https://organicmaps.app/donate) to support us!
|
||||
- Downloadable detailed maps with places which are not available with Google Maps
|
||||
|
||||
Beloved institutional sponsors below have provided targeted grants to cover some infrastructure costs and fund development of new selected features:
|
||||
- Outdoor mode with highlighted hiking trails, campsites, water sources, peaks, contour lines, etc
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="https://nlnet.nl/"><img src="docs/sponsors/nlnet.svg" alt="The NLnet Foundation" width="200px"></a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="https://github.com/organicmaps/organicmaps/milestone/7">The Search & Fonts improvement project</a> has been <a href="https://nlnet.nl/project/OrganicMaps/">funded</a> through NGI0 Entrust Fund. <a href="https://nlnet.nl/entrust/">NGI0 Entrust Fund</a> is established by the <a href="https://nlnet.nl/">NLnet Foundation</a> with financial support from the European Commission's <a href="https://www.ngi.eu/">Next Generation Internet programme</a>, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101069594.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="https://summerofcode.withgoogle.com/"><img src="docs/sponsors/gsoc.svg" alt="Google Summer of Code" width="200px"></a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="https://summerofcode.withgoogle.com/">Google</a> backed 5 student's projects in the Google Summer of Code program during <a href="https://summerofcode.withgoogle.com/programs/2022/organizations/organic-maps">2022</a> and <a href="https://summerofcode.withgoogle.com/programs/2023/organizations/organic-maps">2023</a> programs. Noteworthy projects included Android Auto and Wikipedia Dump Extractor.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="https://www.mythic-beasts.com/"><img src="docs/sponsors/mythic-beasts.png" alt="Mythic Beasts" width="200px"></a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="https://www.mythic-beasts.com/">Mythic Beasts</a> ISP <a href="https://www.mythic-beasts.com/blog/2021/10/06/improving-the-world-bit-by-expensive-bit/">provides us</a> two virtual servers with 400 TB/month of free bandwidth to host and serve maps downloads and updates.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="https://44plus.vn"><img src="docs/sponsors/44plus.svg" alt="44+ Technologies" width="200px"></a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="https://44plus.vn">44+ Technologies</a> is <a href="https://44plus.vn/organicmaps">providing us </a>with a free dedicated server worth around $12,000/year to serve maps across Vietnam & Southeast Asia.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="https://futo.org"><img src="docs/sponsors/futo.svg" alt="FUTO" width="200px"></a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="https://futo.org">FUTO</a> has <a href="https://www.youtube.com/watch?v=fJJclgBHrEw">awarded $1000 micro-grant</a> to Organic Maps in February 2023.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
- Walking paths and cycleways
|
||||
|
||||
The majority of all expenses have been funded by founders of the project since its inception. The project is far from achieving any sort of financial sustainability. The current level of voluntary donations falls significantly short of covering efforts needed to sustain the app. Any new developments of features are beyond the scope of possibility due to the absence of the necessary financial resources.
|
||||
- Points of interest like restaurants, gas stations, hotels, shops, sightseeings and many more
|
||||
|
||||
Please consider [donating](https://organicmaps.app/donate) if you want to see this open-source project thriving, not dying. There are [other ways how to support the project](#contributing). No coding skills required.
|
||||
- Search by name or an address or by point of interest category
|
||||
|
||||
## Copyrights
|
||||
- Navigation with voice announcements for walking, cycling, or driving
|
||||
|
||||
Licensed under the Apache License, Version 2.0. See
|
||||
[LICENSE](https://github.com/organicmaps/organicmaps/blob/master/LICENSE),
|
||||
[NOTICE](https://github.com/organicmaps/organicmaps/blob/master/NOTICE)
|
||||
and [data/copyright.html](http://htmlpreview.github.io/?https://github.com/organicmaps/organicmaps/blob/master/data/copyright.html)
|
||||
for more information.
|
||||
- Bookmark your favorite places with a single tap
|
||||
|
||||
## Governance
|
||||
- Offline Wikipedia articles
|
||||
|
||||
See [docs/GOVERNANCE.md](docs/GOVERNANCE.md).
|
||||
- Subway transit layer and directions
|
||||
|
||||
<a name="contributing">
|
||||
- Track recording
|
||||
|
||||
## Contributing
|
||||
- Export and import bookmarks and tracks in KML, KMZ, GPX formats
|
||||
|
||||
If you want to build the project, check [docs/INSTALL.md](docs/INSTALL.md). If you want to help the project,
|
||||
see [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md). You can [help in many ways](https://organicmaps.app/support-us/), the ability to code is not necessary.
|
||||
- A dark mode to use during the night
|
||||
|
||||
## Beta
|
||||
- Improve map data for everyone using a basic built-in editor
|
||||
|
||||
Please join our beta program, suggest your features, and report bugs:
|
||||
- Android Auto and CarPlay support
|
||||
|
||||
- [iOS Beta (TestFlight)](https://testflight.apple.com/join/lrKCl08I)
|
||||
- [Android Beta (Firebase)](https://appdistribution.firebase.dev/i/2f0fee463107b137)
|
||||
***Freedom Is Here – Navigate the world with privacy and community at the forefront.***
|
||||
|
||||
## Feedback
|
||||
---
|
||||
|
||||
- **Rate us on the [App Store](https://apps.apple.com/app/organic-maps/id1567437057)
|
||||
and [Google Play](https://play.google.com/store/apps/details?id=app.organicmaps)**.
|
||||
- **Star us on Forgejo**.
|
||||
- Report bugs or issues to [the issue tracker](https://git.omaps.dev/organicmaps/organicmaps/issues).
|
||||
- Subscribe to our [Telegram Channel](https://t.me/OrganicMapsApp) or to the [[matrix] space](https://matrix.to/#/#organicmaps:matrix.org) for updates.
|
||||
- Join our [Telegram Group](https://t.me/OrganicMaps) to discuss with other users.
|
||||
- Присоединяйтесь к нашей [русскоязычной группе в Telegram](https://t.me/OrganicMapsRu) для обратной связи и помощи.
|
||||
- Diğer kullanıcılarla tartışmak için [Telegram Grubumuza](https://t.me/OrganicMapsTR) katılın.
|
||||
- Rejoignez notre groupe [Telegram](https://t.me/OrganicMapsFR) pour obtenir de l'aide.
|
||||
- Contact us by [email](mailto:hello@organicmaps.app).
|
||||
- Follow our updates in
|
||||
[Mastodon](https://fosstodon.org/@organicmaps),
|
||||
[Facebook](https://facebook.com/OrganicMaps),
|
||||
[X (Twitter)](https://x.com/OrganicMapsApp),
|
||||
[Instagram](https://instagram.com/organicmaps.app/).
|
||||
- Güncellemelerimizi [Instagram](https://instagram.com/organicmapstr/) üzerinden takip edin.
|
||||
## 🤝 Contributing
|
||||
|
||||
The Organic Maps community abides by the CNCF [code of conduct](https://github.com/organicmaps/organicmaps/blob/master/docs/CODE_OF_CONDUCT.md).
|
||||
You can help by donating, contributing code, translating, or by telling others about it. To build the best maps app there is a need for software development, design, product, community development, and other areas. Reach out to us and let us know how you want to help.
|
||||
|
||||
- Build instructions: [docs/INSTALL.md](docs/INSTALL.md)
|
||||
- Contribution guide: [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md)
|
||||
> [!NOTE]
|
||||
> Some docs might be outdated, contain broken links or old references to Organic Maps, etc. Its a work in progress and help is much appreciated!
|
||||
|
||||
There is a dedicated Zulip chat for active contributors: [Zulip](https://comaps.zulipchat.com)
|
||||
|
||||
---
|
||||
|
||||
## 💬 Feedback
|
||||
|
||||
- Rate us on [App Store](https://apps.apple.com/app/comaps/id6747180809) and [Google Play](https://play.google.com/store/apps/details?id=app.comaps.google)
|
||||
- Star our repos on Codeberg
|
||||
- Report bugs or request features on the [issue tracker](https://codeberg.org/comaps/comaps/issues)
|
||||
|
||||
---
|
||||
|
||||
## 💸 Funding
|
||||
|
||||
CoMaps is free. To stay that way, it relies on your support.
|
||||
Donate via [OpenCollective](https://opencollective.com/comaps/donate) or [Liberapay](https://liberapay.com/CoMaps).
|
||||
The project's financial information is completely open and transparent at [our Open Collective](https://opencollective.com/comaps).
|
||||
|
||||
---
|
||||
|
||||
## 🔒 Privacy
|
||||
|
||||
The Android app has been reviewed by [Exodus Privacy](https://reports.exodus-privacy.eu.org/en/reports/app.comaps.google/latest/).
|
||||
|
||||
To [verify](https://developer.android.com/studio/command-line/apksigner#usage-verify) the APK, use the following signing certificate fingerprints:
|
||||
```
|
||||
SHA-256: 4894e8e6963627ef660031d8593fe77297f835acb4e23810003e926135023b4c
|
||||
SHA-1: 8b7b5739f917e9f7c681671ced0c9c8562123ade
|
||||
MD5: 9cce0ffea281dc2f0e0a154d6d2e281e
|
||||
```
|
||||
---
|
||||
|
||||
## ⚖️ License
|
||||
|
||||
Licensed under the Apache License 2.0.
|
||||
See [LICENSE](LICENSE), [NOTICE](NOTICE), and [data/copyright.html](data/copyright.html).
|
||||
10
android/.idea/icon.svg
generated
10
android/.idea/icon.svg
generated
@@ -1,8 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg version="1.1" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
|
||||
<g inkscape:groupmode="layer" inkscape:label="Layer 1">
|
||||
<rect fill="#006c35" fill-opacity="1.0" x="0" y="0" width="1024" height="1024"/>
|
||||
<path fill="#ffffff" d="m861.3562052 256.9139426c18.220574 48.4374573-79.2585233 166.2022835-172.1806378 196.4226995-168.0803471-58.2153969-173.5457836 39.5504743-311.1096159 132.4296677 162.6149552 112.4329497 332.9737882 24.8856325 329.7844002-85.7673036-127.9956457 73.3254376-208.1650824 81.3238121-254.1719349 79.1032962 154.8710218-30.6636026 322.0404219-125.7633124 357.0667834-165.7616685 0.032202 1.7749817 0.049863 3.5523114 0.049863 5.33456 0 191.0905993-295.1650572 474.6148576-295.1650572 474.6148576s-154.5086464-147.95159-239.9499331-302.4701423c-11.943516-0.1614425-83.8230022 25.9633002-110.3310391-9.051445-29.6082623-39.1049397 80.1693081-170.2028122 175.3699196-209.3102117 170.3563508 77.3261904 263.7351577-123.0971499 317.0292402-134.2068293-158.9688193-94.2135154-316.1183714-55.5493358-333.8847017 84.4353407 88.3675802-50.2172465 196.7775505-78.65765 246.8822227-76.4346744-140.7606999 28.7623957-301.9981102 132.8752019-350.2809443 172.4255642 0-159.041983 132.1505407-287.9677052 295.1650569-287.9677052 96.4018995 0 182.0095151 45.0859887 235.8744518 114.8252613 0.00335 0 96.1884344-31.2834041 109.851981 11.3787329zm-33.7059144 14.218972c-12.6607646-17.2289278-56.7341326 2.8936807-56.7341326 2.8936807 6.1678152 10.3446685 11.7002555 21.0960758 16.5352245 32.2084942 4.8995467 11.2622344 9.0867303 22.8954305 12.5044868 34.8382086 0 0 45.0041042-46.3863227 27.6944213-69.9403835zm-629.5734431 294.3797539c13.6858848 18.6189721 61.3258973-3.1309266 61.3258973-3.1309266-6.6716772-11.1802827-12.6484216-22.8033047-17.8755617-34.8139472-5.2966478-12.1727565-9.8213865-24.7454316-13.5171072-37.6545218 0 0-48.6427553 50.1397674-29.9332284 75.5993956z"/>
|
||||
</g>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="64pt" height="64pt" viewBox="0 0 835 835">
|
||||
<path d="M698.5 141.1a20 20 0 0 1 30.8-1.3A416 416 0 0 1 835 417.4a416 416 0 0 1-93.3 263 20 20 0 0 1-31.3-.6l-43-56.6a20 20 0 0 1-.2-24 307 307 0 0 0 59.3-181.8c0-74.2-26.2-142.3-69.9-195.6a20 20 0 0 1-.5-24.8zM260.7 456.4a20 20 0 0 1-7.7-36.7l282-177.4a20 20 0 0 1 29.9 22.7l-97 318.9a20 20 0 0 1-37.5 2.2l-49.2-111.5z" style="fill:#ccdfca"/>
|
||||
<path d="M626.3 753a20 20 0 0 1-6.2 29.6A416 416 0 0 1 417.5 835 417.7 417.7 0 0 1 0 417.4 417.7 417.7 0 0 1 603.3 43.5a20 20 0 0 1 7 30l-42.4 55.8a20 20 0 0 1-24.2 6.1 307 307 0 0 0-126.2-27 309 309 0 0 0-309 309c0 170.6 138.5 309 309 309a307 307 0 0 0 141.6-34.3 20 20 0 0 1 25.1 5.6z" style="fill:#fefdf6"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 753 B |
22
android/Dockerfile
Normal file
22
android/Dockerfile
Normal file
@@ -0,0 +1,22 @@
|
||||
FROM ubuntu:latest
|
||||
|
||||
ENV TZ=Etc/UTC
|
||||
ENV QT_QPA_PLATFORM=offscreen
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
build-essential \
|
||||
cmake \
|
||||
qt6-base-dev \
|
||||
qt6-svg-dev \
|
||||
qt6-positioning-dev \
|
||||
libicu-dev \
|
||||
libfreetype-dev \
|
||||
libharfbuzz-dev \
|
||||
libxrandr-dev \
|
||||
libxinerama-dev \
|
||||
libxcursor-dev \
|
||||
libxi-dev \
|
||||
optipng
|
||||
WORKDIR /root/comaps
|
||||
RUN ./configure.sh
|
||||
CMD ./gradlew -Parm64 assembleFdroidDebug
|
||||
@@ -1,8 +1,8 @@
|
||||
To build, install and run e.g. a Web Debug version on your device/emulator: './gradlew runWebDebug'
|
||||
|
||||
Or to compile a redistributable Fdroid Beta apk for testing: './gradlew assembleFdroidBeta'
|
||||
Or to compile a redistributable Fdroid Test apk for testing: './gradlew assembleFdroidBeta'
|
||||
|
||||
Or to build beta apks for all flavors: './gradlew assembleBeta'
|
||||
Or to build test apks for all flavors: './gradlew assembleBeta'
|
||||
|
||||
To see all available build targets './gradlew tasks'
|
||||
|
||||
|
||||
15
android/app/.gitignore
vendored
15
android/app/.gitignore
vendored
@@ -2,18 +2,14 @@
|
||||
/nativeOutputs
|
||||
|
||||
# ignore private keys
|
||||
/google-services.json
|
||||
/secure.properties
|
||||
/release.keystore
|
||||
/secure.properties
|
||||
/secure.properties.test
|
||||
/secure.properties.release
|
||||
/comaps-test.keystore
|
||||
/comaps-release.keystore
|
||||
/libnotify.properties
|
||||
/google-services.json
|
||||
/google-play.json
|
||||
/firebase-app-distribution.json
|
||||
/firebase-test-lab.json
|
||||
/huawei-appgallery.json
|
||||
/agconnect-services.json
|
||||
/src/main/res/xml/network_security_config.xml
|
||||
|
||||
# ignore flags symlinks
|
||||
/src/main/res/drawable-xhdpi/??.png
|
||||
@@ -28,6 +24,3 @@
|
||||
/src/main/res/drawable-mdpi/uk_northern_ireland.png
|
||||
/src/main/res/drawable-mdpi/uk_scotland.png
|
||||
/src/main/res/drawable-mdpi/uk_wales.png
|
||||
|
||||
# ignore autogenerated metadata (see prepareGoogleReleaseListing in build.gradle)
|
||||
/src/google/play/listings
|
||||
|
||||
@@ -3,38 +3,15 @@ buildscript {
|
||||
google()
|
||||
mavenCentral()
|
||||
}
|
||||
//
|
||||
// The magic below is needed to disable Google Firebase Services during the build time.
|
||||
// Unfortunately, the only way to disable Gradle plugins is to add these hardcore switches to buildscript().
|
||||
//
|
||||
|
||||
// Detect flavors from the task name.
|
||||
def taskName = getGradle().getStartParameter().getTaskRequests().toString().toLowerCase()
|
||||
def isFdroid = taskName.contains('fdroid')
|
||||
def isBeta = taskName.contains('beta')
|
||||
|
||||
// Firebase Crashlytics compile-time feature flag: -Pfirebase=true|false
|
||||
def googleFirebaseServicesFlag = findProperty('firebase')
|
||||
// Enable Firebase for all beta flavors except fdroid only if google-services.json exists.
|
||||
def googleFirebaseServicesDefault = isBeta && !isFdroid && file("$projectDir/google-services.json").exists()
|
||||
ext.googleFirebaseServicesEnabled = googleFirebaseServicesFlag != null ?
|
||||
googleFirebaseServicesFlag == '' || googleFirebaseServicesFlag.toBoolean() :
|
||||
googleFirebaseServicesDefault
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:8.7.3'
|
||||
|
||||
if (googleFirebaseServicesEnabled) {
|
||||
println('Building with Google Firebase Services')
|
||||
classpath 'com.google.gms:google-services:4.4.2'
|
||||
classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.2'
|
||||
classpath 'com.google.firebase:firebase-appdistribution-gradle:5.0.0'
|
||||
} else {
|
||||
println('Building without Google Firebase Services')
|
||||
}
|
||||
|
||||
classpath('com.github.triplet.gradle:play-publisher:3.10.1')
|
||||
classpath('ru.cian:huawei-publish-gradle-plugin:1.4.2')
|
||||
classpath libs.android.tools
|
||||
classpath(libs.triplet.play.publisher)
|
||||
classpath(libs.huawei.publish)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,11 +22,6 @@ repositories {
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
if (googleFirebaseServicesEnabled) {
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
apply plugin: 'com.google.firebase.crashlytics'
|
||||
apply plugin: 'com.google.firebase.appdistribution'
|
||||
}
|
||||
apply plugin: 'com.github.triplet.play'
|
||||
apply plugin: 'ru.cian.huawei-publish-gradle-plugin'
|
||||
|
||||
@@ -80,8 +52,8 @@ def getCommitMessage() {
|
||||
|
||||
def osName = System.properties['os.name'].toLowerCase()
|
||||
|
||||
project.ext.appId = 'app.organicmaps'
|
||||
project.ext.appName = 'Organic Maps'
|
||||
project.ext.appId = 'app.comaps'
|
||||
project.ext.appName = 'CoMaps'
|
||||
|
||||
// I have Java 21 installed, but this doesn't work on MacOS.
|
||||
//java {
|
||||
@@ -93,6 +65,13 @@ project.ext.appName = 'Organic Maps'
|
||||
android {
|
||||
namespace 'app.organicmaps'
|
||||
|
||||
dependenciesInfo {
|
||||
// Disables dependency metadata when building APKs (for IzzyOnDroid/F-Droid)
|
||||
includeInApk = false
|
||||
// Disables dependency metadata when building Android App Bundles (for Google Play)
|
||||
includeInBundle = false
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
dataBinding = true
|
||||
buildConfig = true
|
||||
@@ -103,7 +82,7 @@ android {
|
||||
ndkVersion '27.2.12479018'
|
||||
|
||||
defaultConfig {
|
||||
// Default package name is taken from the manifest and should be app.organicmaps
|
||||
// Default package name is taken from the manifest and should be app.comaps
|
||||
def ver = getVersion()
|
||||
versionCode = ver.V1
|
||||
versionName = ver.V2
|
||||
@@ -112,10 +91,9 @@ android {
|
||||
minSdk propMinSdkVersion.toInteger()
|
||||
targetSdk propTargetSdkVersion.toInteger()
|
||||
applicationId project.ext.appId
|
||||
buildConfigField 'String', 'SUPPORT_MAIL', '"android@organicmaps.app"'
|
||||
buildConfigField 'String', 'SUPPORT_MAIL', '"android@comaps.app"'
|
||||
// Should be customized in flavors.
|
||||
buildConfigField 'String', 'REVIEW_URL', '""'
|
||||
resourceConfigurations += [project.ext.supportedLocalizations]
|
||||
|
||||
externalNativeBuild {
|
||||
def pchFlag = 'OFF'
|
||||
@@ -182,30 +160,33 @@ android {
|
||||
|
||||
google {
|
||||
dimension 'default'
|
||||
applicationIdSuffix '.google'
|
||||
versionName = android.defaultConfig.versionName + '-Google'
|
||||
buildConfigField 'String', 'SUPPORT_MAIL', '"googleplay@organicmaps.app"'
|
||||
buildConfigField 'String', 'REVIEW_URL', '"market://details?id=app.organicmaps"'
|
||||
buildConfigField 'String', 'SUPPORT_MAIL', '"gplay@comaps.app"'
|
||||
buildConfigField 'String', 'REVIEW_URL', '"market://details?id=app.comaps.google"'
|
||||
}
|
||||
|
||||
// Distributed directly by the project, e.g. in repo releases, chats, etc.
|
||||
web {
|
||||
dimension 'default'
|
||||
applicationIdSuffix '.web'
|
||||
versionName = android.defaultConfig.versionName + '-Web'
|
||||
buildConfigField 'String', 'SUPPORT_MAIL', '"apk@organicmaps.app"'
|
||||
versionName = android.defaultConfig.versionName
|
||||
buildConfigField 'String', 'SUPPORT_MAIL', '"apk@comaps.app"'
|
||||
}
|
||||
|
||||
fdroid {
|
||||
dimension 'default'
|
||||
applicationIdSuffix '.fdroid'
|
||||
versionName = android.defaultConfig.versionName + '-FDroid'
|
||||
buildConfigField 'String', 'SUPPORT_MAIL', '"fdroid@organicmaps.app"'
|
||||
buildConfigField 'String', 'SUPPORT_MAIL', '"fdroid@comaps.app"'
|
||||
}
|
||||
|
||||
huawei {
|
||||
dimension 'default'
|
||||
applicationIdSuffix '.huawei'
|
||||
versionName = android.defaultConfig.versionName + '-Huawei'
|
||||
versionCode = HUAWEI_VERSION_CODE_BASE + android.defaultConfig.versionCode
|
||||
buildConfigField 'String', 'SUPPORT_MAIL', '"huawei@organicmaps.app"'
|
||||
buildConfigField 'String', 'REVIEW_URL', '"appmarket://details?id=app.organicmaps"'
|
||||
buildConfigField 'String', 'SUPPORT_MAIL', '"huawei@comaps.app"'
|
||||
buildConfigField 'String', 'REVIEW_URL', '"appmarket://details?id=app.comaps"'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -246,54 +227,72 @@ android {
|
||||
}
|
||||
}
|
||||
|
||||
def securityPropertiesFileExists = file('secure.properties').exists()
|
||||
if (securityPropertiesFileExists) {
|
||||
apply from: 'secure.properties'
|
||||
def secureReleasePropertiesFileExists = file('secure.properties.release').exists()
|
||||
if (secureReleasePropertiesFileExists) {
|
||||
apply from: 'secure.properties.release'
|
||||
}
|
||||
|
||||
def secureTestPropertiesFileExists = file('secure.properties.test').exists()
|
||||
if (secureTestPropertiesFileExists) {
|
||||
apply from: 'secure.properties.test'
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
debug {
|
||||
storeFile file('debug.keystore')
|
||||
storeFile file('comaps-debug.keystore')
|
||||
storePassword '12345678'
|
||||
keyAlias 'debug'
|
||||
keyAlias 'CoMaps Debug'
|
||||
keyPassword '12345678'
|
||||
}
|
||||
|
||||
release {
|
||||
if (securityPropertiesFileExists) {
|
||||
println('The release signing keys are available')
|
||||
storeFile file(spropStoreFile)
|
||||
storePassword spropStorePassword
|
||||
keyAlias spropKeyAlias
|
||||
keyPassword spropKeyPassword
|
||||
test {
|
||||
if (secureTestPropertiesFileExists) {
|
||||
storeFile file(secretTestStoreFile)
|
||||
storePassword secretTestStorePassword
|
||||
keyAlias secretTestKeyAlias
|
||||
keyPassword secretTestKeyPassword
|
||||
} else {
|
||||
println('The release signing keys are unavailable')
|
||||
println('secure.properties.test doesn\'t exist')
|
||||
}
|
||||
}
|
||||
|
||||
release {
|
||||
if (secureReleasePropertiesFileExists) {
|
||||
storeFile file(secretReleaseStoreFile)
|
||||
storePassword secretReleaseStorePassword
|
||||
keyAlias secretReleaseKeyAlias
|
||||
keyPassword secretReleaseKeyPassword
|
||||
} else {
|
||||
println('secure.properties.release doesn\'t exist')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
def taskName = getGradle().getStartParameter().getTaskRequests().toString().toLowerCase()
|
||||
|
||||
debug {
|
||||
applicationIdSuffix '.debug' // Allows to install debug and release builds together
|
||||
versionNameSuffix '-debug'
|
||||
jniDebuggable true // Enable jni debug build
|
||||
zipAlignEnabled true
|
||||
signingConfig signingConfigs.debug
|
||||
resValue 'string', 'app_name', 'Debug Organic Maps'
|
||||
resValue 'string', 'app_name', 'CoMaps Debug'
|
||||
// Do not generate separate debug symbols for debug apps, because we don't distribute them.
|
||||
ndk.debugSymbolLevel = 'none'
|
||||
|
||||
if (googleFirebaseServicesEnabled) {
|
||||
// Keep debug symbols for test lab.
|
||||
ndk.debugSymbolLevel = 'symbol_table'
|
||||
firebaseCrashlytics {
|
||||
nativeSymbolUploadEnabled true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
release {
|
||||
if (taskName.contains('release')) {
|
||||
if (secureReleasePropertiesFileExists) {
|
||||
println('Using RELEASE signing keys from secure.properties.release')
|
||||
signingConfig signingConfigs.release
|
||||
} else {
|
||||
println('NO RELEASE signing keys found')
|
||||
println('Using DEBUG signing keys')
|
||||
signingConfig signingConfigs.debug
|
||||
}
|
||||
}
|
||||
minifyEnabled true
|
||||
shrinkResources true
|
||||
// Includes the default ProGuard rules files that are packaged with the Android Gradle plugin.
|
||||
@@ -302,40 +301,30 @@ android {
|
||||
resValue 'string', 'app_name', project.ext.appName
|
||||
// Full size symbols are too big for Google, 217mb aab vs 95mb.
|
||||
ndk.debugSymbolLevel = 'symbol_table'
|
||||
|
||||
if (googleFirebaseServicesEnabled) {
|
||||
firebaseCrashlytics {
|
||||
nativeSymbolUploadEnabled true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
beta {
|
||||
applicationIdSuffix '.beta'
|
||||
versionNameSuffix '-beta'
|
||||
signingConfig signingConfigs.release
|
||||
applicationIdSuffix '.test'
|
||||
versionNameSuffix '-test'
|
||||
if (taskName.contains('beta')) {
|
||||
if (secureTestPropertiesFileExists) {
|
||||
println('Using TEST signing keys from secure.properties.test')
|
||||
signingConfig signingConfigs.test
|
||||
} else {
|
||||
println('NO TEST signing keys found')
|
||||
println('Using DEBUG signing keys')
|
||||
signingConfig signingConfigs.debug
|
||||
}
|
||||
}
|
||||
minifyEnabled true
|
||||
shrinkResources true
|
||||
// Includes the default ProGuard rules files that are packaged with the Android Gradle plugin.
|
||||
// To learn more, go to the documentation section about R8 configuration files.
|
||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||
matchingFallbacks = ['debug', 'release']
|
||||
resValue 'string', 'app_name', 'Beta Organic Maps'
|
||||
matchingFallbacks = ['release'] // use dependencies of "release" build type
|
||||
resValue 'string', 'app_name', 'CoMaps Test'
|
||||
// Full size symbols are too big for Google, 217mb aab vs 95mb.
|
||||
ndk.debugSymbolLevel = 'symbol_table'
|
||||
|
||||
if (googleFirebaseServicesEnabled) {
|
||||
firebaseCrashlytics {
|
||||
nativeSymbolUploadEnabled true
|
||||
}
|
||||
firebaseAppDistribution {
|
||||
// A new beta release is created for each commit.
|
||||
// Use the last commit message for the release notes.
|
||||
releaseNotes = getCommitMessage()
|
||||
groups = 'qa' // Notify only selected people.
|
||||
serviceCredentialsFile = "$projectDir/firebase-app-distribution.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -352,6 +341,58 @@ android {
|
||||
androidResources {
|
||||
ignoreAssetsPattern '!.svn:!.git:!.DS_Store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~'
|
||||
noCompress = ['txt', 'bin', 'html', 'png', 'json', 'mwm', 'ttf', 'sdf', 'ui', 'config', 'csv', 'spv', 'obj']
|
||||
localeFilters += [
|
||||
"af",
|
||||
"ar",
|
||||
"az",
|
||||
"be",
|
||||
"bg",
|
||||
"ca",
|
||||
"cs",
|
||||
"da",
|
||||
"de",
|
||||
"el",
|
||||
"en",
|
||||
"en-rGB",
|
||||
"es",
|
||||
"es-rMX",
|
||||
"et",
|
||||
"eu",
|
||||
"fa",
|
||||
"fi",
|
||||
"fr",
|
||||
"fr-rCA",
|
||||
"iw",
|
||||
"hi",
|
||||
"hu",
|
||||
"in",
|
||||
"it",
|
||||
"ja",
|
||||
"ko",
|
||||
"lt",
|
||||
"lv",
|
||||
"mr",
|
||||
"mt",
|
||||
"nb",
|
||||
"nl",
|
||||
"pl",
|
||||
"pt",
|
||||
"pt-rBR",
|
||||
"ro",
|
||||
"ru",
|
||||
"sk",
|
||||
"sr",
|
||||
"sv",
|
||||
"sw",
|
||||
"th",
|
||||
"tr",
|
||||
"uk",
|
||||
"vi",
|
||||
"zh",
|
||||
"zh-rHK",
|
||||
"zh-rMO",
|
||||
"zh-rTW"
|
||||
]
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
@@ -363,9 +404,11 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.4'
|
||||
coreLibraryDesugaring libs.android.tools.desugar
|
||||
|
||||
// Google Play Location Services
|
||||
// TODO(@pastk): enabled via microG in all flavors,
|
||||
// so move google/java/app/organicmaps/location/* into main/ and remove symlinks.
|
||||
//
|
||||
// Please add symlinks to google/java/app/organicmaps/location for each new gms-enabled flavor below:
|
||||
// ```
|
||||
@@ -374,51 +417,36 @@ dependencies {
|
||||
// ls -la src/$flavor/java/app/organicmaps/location/GoogleFusedLocationProvider.java
|
||||
// ```
|
||||
//
|
||||
webImplementation 'com.google.android.gms:play-services-location:21.3.0'
|
||||
googleImplementation 'com.google.android.gms:play-services-location:21.3.0'
|
||||
huaweiImplementation 'com.google.android.gms:play-services-location:21.3.0'
|
||||
// This is the microG project's re-implementation which is permissible on
|
||||
// F-droid because it's Apache-2.0.
|
||||
fdroidImplementation 'org.microg.gms:play-services-location:0.3.6.244735'
|
||||
|
||||
// Google Firebase Services
|
||||
if (googleFirebaseServicesEnabled) {
|
||||
// Import the BoM for the Firebase platform
|
||||
implementation platform('com.google.firebase:firebase-bom:33.5.1')
|
||||
// Add the dependencies for the Crashlytics and Analytics libraries
|
||||
// When using the BoM, you don't specify versions in Firebase library dependencies
|
||||
implementation 'com.google.firebase:firebase-crashlytics'
|
||||
implementation 'com.google.firebase:firebase-crashlytics-ndk'
|
||||
}
|
||||
// microG project's FOSS re-implementation of the proprietary libs.google.services.location
|
||||
implementation libs.microg.services.location
|
||||
|
||||
// This line is added as a workaround for duplicate classes error caused by some outdated dependency:
|
||||
// > A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
|
||||
// We don't use Kotlin, but some dependencies are actively using it.
|
||||
// See https://stackoverflow.com/a/75719642
|
||||
implementation 'androidx.core:core:1.15.0'
|
||||
implementation(platform('org.jetbrains.kotlin:kotlin-bom:2.1.10'))
|
||||
implementation 'androidx.annotation:annotation:1.9.1'
|
||||
implementation 'androidx.appcompat:appcompat:1.7.0'
|
||||
implementation 'androidx.car.app:app:1.7.0-rc01'
|
||||
implementation 'androidx.car.app:app-projected:1.7.0-rc01'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.2.0'
|
||||
implementation 'androidx.fragment:fragment:1.8.5'
|
||||
implementation 'androidx.preference:preference:1.2.1'
|
||||
implementation 'androidx.recyclerview:recyclerview:1.3.2'
|
||||
implementation 'androidx.work:work-runtime:2.10.0'
|
||||
implementation 'androidx.lifecycle:lifecycle-process:2.8.7'
|
||||
implementation 'com.google.android.material:material:1.12.0'
|
||||
implementation libs.androidx.core
|
||||
implementation(platform(libs.jetbrains.kotlin.bom))
|
||||
implementation libs.androidx.annotation
|
||||
implementation libs.androidx.appcompat
|
||||
implementation libs.androidx.car.app
|
||||
implementation libs.androidx.car.app.projected
|
||||
implementation libs.androidx.constraintlayout
|
||||
implementation libs.androidx.fragment
|
||||
implementation libs.androidx.preference
|
||||
implementation libs.androidx.recyclerview
|
||||
implementation libs.androidx.work.runtime
|
||||
implementation libs.androidx.lifecycle.process
|
||||
implementation libs.android.material
|
||||
// Fix for app/organicmaps/util/FileUploadWorker.java:14: error: cannot access ListenableFuture
|
||||
// https://github.com/organicmaps/organicmaps/issues/6106
|
||||
implementation 'com.google.guava:guava:33.3.0-android'
|
||||
implementation 'com.github.devnullorthrow:MPAndroidChart:3.2.0-alpha'
|
||||
implementation 'net.jcip:jcip-annotations:1.0'
|
||||
implementation libs.google.guava
|
||||
implementation libs.devnullorthrow.mpandroidchart
|
||||
implementation libs.jcip.annotations
|
||||
|
||||
// Test Dependencies
|
||||
androidTestImplementation 'androidx.test.ext:junit:1.2.1'
|
||||
testImplementation 'junit:junit:4.13.2'
|
||||
testImplementation 'org.mockito:mockito-core:5.15.2'
|
||||
testImplementation 'org.mockito:mockito-inline:5.2.0'
|
||||
androidTestImplementation libs.androidx.test.junit
|
||||
testImplementation libs.junit
|
||||
testImplementation libs.mockito.core
|
||||
}
|
||||
|
||||
tasks.withType(JavaCompile) {
|
||||
@@ -434,32 +462,6 @@ android.applicationVariants.all { variant ->
|
||||
variant.resValue 'string', 'app_id', variant.applicationId
|
||||
}
|
||||
|
||||
task prepareGoogleReleaseListing {
|
||||
// Prepares Google Play metainfo from F-Droid metainfo.
|
||||
final sourceFlavor = 'fdroid'
|
||||
final targetFlavor = 'google'
|
||||
doLast {
|
||||
final sourceDir = new File("${projectDir}/src/$sourceFlavor/play/listings")
|
||||
final targetDir = new File("${projectDir}/src/$targetFlavor/play/listings")
|
||||
final sourceFiles = fileTree(dir: sourceDir,
|
||||
include: '**/*.txt', exclude: "**/*-${targetFlavor}.txt")
|
||||
sourceFiles.each { File sourceFile ->
|
||||
final locale = sourceFile.parentFile.getName()
|
||||
final targetLocaleDir = new File(targetDir, locale)
|
||||
if (!targetLocaleDir.isDirectory())
|
||||
targetLocaleDir.mkdirs()
|
||||
final targetFile = new File(targetLocaleDir, sourceFile.getName())
|
||||
// Override Google-specific values by using ${name}-google.txt files.
|
||||
final overrideFile = new File(sourceFile.getPath().replace('.txt', "-${targetFlavor}.txt"))
|
||||
targetFile.text = overrideFile.exists() ? overrideFile.text : sourceFile.text
|
||||
}
|
||||
copy {
|
||||
from "${projectDir}/../../screenshots/android"
|
||||
into targetDir
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
play {
|
||||
enabled.set(false)
|
||||
track.set('production')
|
||||
|
||||
BIN
android/app/comaps-debug.keystore
Normal file
BIN
android/app/comaps-debug.keystore
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 34 KiB |
@@ -1 +1 @@
|
||||
fdroid@organicmaps.app
|
||||
fdroid@comaps.app
|
||||
|
||||
@@ -1 +1 @@
|
||||
https://organicmaps.app/
|
||||
https://www.comaps.app/
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
‣ تطبيقنا المجاني لا يتتبعك ولا يحتوي على إعلانات ويحتاج إلى دعمك.
|
||||
‣ يتم تحسينه باستمرار من قبل المساهمين وفريقنا الصغير، في أوقات فراغنا.
|
||||
‣ إذا كان هناك شيء خاطئ أو مفقود على الخريطة، يرجى إصلاحه في <b>OpenStreetMap</b> وانظر إلى تعديلاتك في تحديث الخرائط المستقبلية.
|
||||
‣ إذا لم ينجح التنقل أو البحث، يرجى إرسال بريد إلكتروني إلينا. نرد على <i>كل بريد إلكتروني</i> وسنصلحه في أسرع وقت ممكن!
|
||||
|
||||
<b>ملاحظاتك ومراجعات الخمس نجوم هي أفضل المحفزات لنا!</b>
|
||||
|
||||
الميزات الرئيسية:
|
||||
|
||||
• مجاني، مفتوح المصدر، لا إعلانات، لا تتبع
|
||||
• خرائط مفصلة غير متصلة بالإنترنت مع أماكن غير موجودة على خرائط Google، وذلك بفضل مجتمع <b>OpenStreetMap</b>
|
||||
• طرق ركوب الدراجات ومسارات المشي لمسافات طويلة ومسارات المشي
|
||||
• خطوط الكنتور وملامح الارتفاع والقمم والمنحدرات
|
||||
• المشي بدوران وركوب الدراجات والملاحة التجريبية بالسيارة مع التوجيه الصوتي
|
||||
• البحث السريع في وضع عدم الاتصال
|
||||
• العلامات المرجعية وتتبع التصدير والاستيراد بأشكال KML و KMZ و GPX
|
||||
• الوضع المظلم لحماية عينيك
|
||||
|
||||
لا يوجد نظام وسائل النقل العام وخرائط الأقمار الصناعية وغيرها من الميزات الرائعة <i>حتى الآن</i> في الخرائط العضوية. ولكن مع <i>مساعدتك ودعمك</i>، يمكننا أن نجعل هذا العالم أفضل خطوة بخطوة.
|
||||
|
||||
الخرائط العضوية هي <b>نقية وعضوية، مصنوعة من الحب</b>:
|
||||
|
||||
• تجربة سريعة مشتعلة في وضع عدم الاتصال
|
||||
• يحترم خصوصيتك
|
||||
• يحفظ بطاريتك
|
||||
• لا توجد رسوم غير متوقعة لبيانات الهاتف المحمول
|
||||
• سهل الاستخدام، مع تضمين أهم الميزات فقط
|
||||
|
||||
خالية من أجهزة التعقب والأشياء السيئة الأخرى:
|
||||
|
||||
• لا إعلانات
|
||||
• لا تتبع
|
||||
• عدم جمع البيانات
|
||||
• لا يوجد اتصال هاتفي بالمنزل
|
||||
• لا تسجيل مزعج
|
||||
• لا توجد دروس إلزامية
|
||||
• لا بريد إلكتروني مزعج
|
||||
• لا توجد إشعارات دفع
|
||||
• لا توجد أواني حلوى
|
||||
• لا مبيدات عضوية بالكامل
|
||||
|
||||
في Organic Maps نعتقد أن <b>الخصوصية هي حق أساسي من حقوق الإنسان:</b>
|
||||
|
||||
• Organic Maps هو مشروع مفتوح المصدر يحركه المجتمع المستقل
|
||||
• نحن نحمي خصوصيتك من أعين المتطفلين لدى شركات التقنيات الكبيرة
|
||||
•ابق آمنًا بغض النظر عن مكان وجودك
|
||||
|
||||
يتم العثور على أجهزة تعقب صفرية والأذونات المطلوبة بشكل ضئيل فقط وفقًا لتقرير Exodus Privacy.
|
||||
|
||||
الرجاء زيارة <b><i>organicmaps.app</i></b> للحصول على مزيد من التفاصيل والأسئلة الشائعة، والاتصال بنا مباشرة على @OrganicMapsApp في Telegram.
|
||||
|
||||
ارفض المراقبة - احتضن حريتك.
|
||||
<b>أعطي Organic Maps تجربة!</b>
|
||||
@@ -1,8 +0,0 @@
|
||||
• New OpenStreetMap data as of February 27
|
||||
• Ability to manually arrange intermediate route points
|
||||
• Share a single selected track from the list
|
||||
• Improved routing for bicycles
|
||||
• Display a system notification when downloading maps and don't interrupt background downloads
|
||||
• Added a flashing Track Recording widget
|
||||
|
||||
…more details at omaps.org/news
|
||||
@@ -1 +0,0 @@
|
||||
التنقل بالخصوصية - مفتوح المصدر و مُدار من طرف المُجتمع
|
||||
@@ -1 +0,0 @@
|
||||
تنزه Organic Maps بدون إنترنت
|
||||
@@ -1 +0,0 @@
|
||||
Organic Maps: تنزه والدراجة والقيادة بدون إنترنت
|
||||
@@ -1 +0,0 @@
|
||||
https://www.youtube.com/watch?v=dK-CUuy82Uc
|
||||
@@ -1,53 +0,0 @@
|
||||
‣ Our free app does not track you, does not have ads, and it needs your support.
|
||||
‣ It is constantly being improved by contributors and our small team, in our free time.
|
||||
‣ If something is wrong or missing on the map, please fix it in <b>OpenStreetMap</b> and see your changes in the future maps update.
|
||||
‣ If navigation or search doesn't work, please check it on osm.org first, and then email us. We reply to <i>EVERY</i> email, and we'll fix it ASAP!
|
||||
|
||||
<b>Your feedback and 5-star reviews are the best motivators for us!</b>
|
||||
|
||||
Key features:
|
||||
|
||||
• Free, open-source, no ads, no tracking
|
||||
• Detailed offline maps with places that don't exist on Google maps, thanks to the <b>OpenStreetMap</b> community
|
||||
• Cycling routes, hiking trails, and walking paths
|
||||
• Contour lines, elevation profiles, peaks, and slopes
|
||||
• Turn-by-turn walking, cycling, and car navigation with voice guidance and Android Auto
|
||||
• Fast offline search
|
||||
• Bookmarks and tracks export and import in KML, KMZ, GPX formats
|
||||
• Dark mode to protect your eyes
|
||||
|
||||
There is no public transport, satellite maps, and other cool features <i>yet</i> in Organic Maps. But with <i>your help and support</i>, we can make better maps step by step.
|
||||
|
||||
Organic Maps is <b>pure and organic, made with love</b>:
|
||||
|
||||
• Blazing fast offline experience
|
||||
• Respects your privacy
|
||||
• Saves your battery
|
||||
• No unexpected mobile data charges
|
||||
• Simple to use, with only most important features included
|
||||
|
||||
Free from trackers and other bad stuff:
|
||||
|
||||
• No ads
|
||||
• No tracking
|
||||
• No data collection
|
||||
• No phoning home
|
||||
• No annoying registration
|
||||
• No mandatory tutorials
|
||||
• No noisy email spam
|
||||
• No push notifications
|
||||
• No crapware
|
||||
• N̶o̶ ̶p̶e̶s̶t̶i̶c̶i̶d̶e̶s̶ Purely organic
|
||||
|
||||
At Organic Maps, we believe that <b>privacy is a fundamental human right</b>:
|
||||
|
||||
• Organic Maps is an indie community-driven open-source project
|
||||
• We protect privacy from Big Tech's prying eyes
|
||||
• Stay safe no matter wherever you are
|
||||
|
||||
Zero trackers and only minimally required permissions are found according to Exodus Privacy Report.
|
||||
|
||||
Please visit <b><i>organicmaps.app</i></b> website for additional details and FAQ, and contact us directly at @OrganicMapsApp in Telegram.
|
||||
|
||||
Reject surveillance - embrace your freedom.
|
||||
<b>Give Organic Maps a try!</b>
|
||||
@@ -1,8 +0,0 @@
|
||||
• New OpenStreetMap data as of February 27
|
||||
• Ability to manually arrange intermediate route points
|
||||
• Share a single selected track from the list
|
||||
• Improved routing for bicycles
|
||||
• Display a system notification when downloading maps and don't interrupt background downloads
|
||||
• Added a flashing Track Recording widget
|
||||
|
||||
…more details at omaps.org/news
|
||||
@@ -1 +0,0 @@
|
||||
Open-source, community-driven maps for travelers, tourists, cyclists & hikers
|
||||
@@ -1 +0,0 @@
|
||||
Organic Maps: offline maps
|
||||
@@ -1 +0,0 @@
|
||||
Organic Maps Offline Hike, Bike, GPS Navigation
|
||||
@@ -1 +0,0 @@
|
||||
https://www.youtube.com/watch?v=dK-CUuy82Uc
|
||||
@@ -1,53 +0,0 @@
|
||||
‣ Our free app does not track you, does not have ads, and it needs your support.
|
||||
‣ It is constantly being improved by contributors and our small team, in our free time.
|
||||
‣ If something is wrong or missing on the map, please fix it in <b>OpenStreetMap</b> and see your changes in the future maps update.
|
||||
‣ If navigation or search doesn't work, please check it on osm.org first, and then email us. We reply to <i>EVERY</i> email, and we'll fix it ASAP!
|
||||
|
||||
<b>Your feedback and 5-star reviews are the best motivators for us!</b>
|
||||
|
||||
Key features:
|
||||
|
||||
• Free, open-source, no ads, no tracking
|
||||
• Detailed offline maps with places that don't exist on Google maps, thanks to the <b>OpenStreetMap</b> community
|
||||
• Cycling routes, hiking trails, and walking paths
|
||||
• Contour lines, elevation profiles, peaks, and slopes
|
||||
• Turn-by-turn walking, cycling, and car navigation with voice guidance and Android Auto
|
||||
• Fast offline search
|
||||
• Bookmarks and tracks export and import in KML, KMZ, GPX formats
|
||||
• Dark mode to protect your eyes
|
||||
|
||||
There is no public transport, satellite maps, and other cool features <i>yet</i> in Organic Maps. But with <i>your help and support</i>, we can make better maps step by step.
|
||||
|
||||
Organic Maps is <b>pure and organic, made with love</b>:
|
||||
|
||||
• Blazing fast offline experience
|
||||
• Respects your privacy
|
||||
• Saves your battery
|
||||
• No unexpected mobile data charges
|
||||
• Simple to use, with only most important features included
|
||||
|
||||
Free from trackers and other bad stuff:
|
||||
|
||||
• No ads
|
||||
• No tracking
|
||||
• No data collection
|
||||
• No phoning home
|
||||
• No annoying registration
|
||||
• No mandatory tutorials
|
||||
• No noisy email spam
|
||||
• No push notifications
|
||||
• No crapware
|
||||
• N̶o̶ ̶p̶e̶s̶t̶i̶c̶i̶d̶e̶s̶ Purely organic
|
||||
|
||||
At Organic Maps, we believe that <b>privacy is a fundamental human right</b>:
|
||||
|
||||
• Organic Maps is an indie community-driven open-source project
|
||||
• We protect privacy from Big Tech's prying eyes
|
||||
• Stay safe no matter wherever you are
|
||||
|
||||
Zero trackers and only minimally required permissions are found according to Exodus Privacy Report.
|
||||
|
||||
Please visit <b><i>organicmaps.app</i></b> website for additional details and FAQ, and contact us directly at @OrganicMapsApp in Telegram.
|
||||
|
||||
Reject surveillance - embrace your freedom.
|
||||
<b>Give Organic Maps a try!</b>
|
||||
@@ -1,8 +0,0 @@
|
||||
• Новыя дадзеныя OpenStreetMap ад 27 лютага
|
||||
• Магчымасць уручную расстаўляць прамежкавыя кропкі маршруту
|
||||
• Экспарт аднаго абранага трэка са спісу
|
||||
• Палепшаная маршрутызацыя для веласіпедыстаў
|
||||
• Дададзена сістэмнае апавяшчэнне пры загрузцы карт, фонавыя загрузкі больш не перарываюцца
|
||||
• Дададзены мігатлівы віджэт запісу трэка
|
||||
|
||||
…і шматлікае іншае на omaps.org/news
|
||||
@@ -1 +0,0 @@
|
||||
Open-source, community-driven maps for travelers, tourists, cyclists & hikers
|
||||
@@ -1 +0,0 @@
|
||||
Offline Organic Maps Hike Bike
|
||||
@@ -1 +0,0 @@
|
||||
Organic Maps Offline Hike, Bike, GPS Navigation
|
||||
@@ -1 +0,0 @@
|
||||
https://www.youtube.com/watch?v=dK-CUuy82Uc
|
||||
@@ -1,53 +0,0 @@
|
||||
‣ Our free app does not track you, does not have ads, and it needs your support.
|
||||
‣ It is constantly being improved by contributors and our small team, in our free time.
|
||||
‣ If something is wrong or missing on the map, please fix it in <b>OpenStreetMap</b> and see your changes in the future maps update.
|
||||
‣ If navigation or search doesn't work, please check it on osm.org first, and then email us. We reply to <i>EVERY</i> email, and we'll fix it ASAP!
|
||||
|
||||
<b>Your feedback and 5-star reviews are the best motivators for us!</b>
|
||||
|
||||
Key features:
|
||||
|
||||
• Free, open-source, no ads, no tracking
|
||||
• Detailed offline maps with places that don't exist on Google maps, thanks to the <b>OpenStreetMap</b> community
|
||||
• Cycling routes, hiking trails, and walking paths
|
||||
• Contour lines, elevation profiles, peaks, and slopes
|
||||
• Turn-by-turn walking, cycling, and car navigation with voice guidance and Android Auto
|
||||
• Fast offline search
|
||||
• Bookmarks and tracks export and import in KML, KMZ, GPX formats
|
||||
• Dark mode to protect your eyes
|
||||
|
||||
There is no public transport, satellite maps, and other cool features <i>yet</i> in Organic Maps. But with <i>your help and support</i>, we can make better maps step by step.
|
||||
|
||||
Organic Maps is <b>pure and organic, made with love</b>:
|
||||
|
||||
• Blazing fast offline experience
|
||||
• Respects your privacy
|
||||
• Saves your battery
|
||||
• No unexpected mobile data charges
|
||||
• Simple to use, with only most important features included
|
||||
|
||||
Free from trackers and other bad stuff:
|
||||
|
||||
• No ads
|
||||
• No tracking
|
||||
• No data collection
|
||||
• No phoning home
|
||||
• No annoying registration
|
||||
• No mandatory tutorials
|
||||
• No noisy email spam
|
||||
• No push notifications
|
||||
• No crapware
|
||||
• N̶o̶ ̶p̶e̶s̶t̶i̶c̶i̶d̶e̶s̶ Purely organic
|
||||
|
||||
At Organic Maps, we believe that <b>privacy is a fundamental human right</b>:
|
||||
|
||||
• Organic Maps is an indie community-driven open-source project
|
||||
• We protect privacy from Big Tech's prying eyes
|
||||
• Stay safe no matter wherever you are
|
||||
|
||||
Zero trackers and only minimally required permissions are found according to Exodus Privacy Report.
|
||||
|
||||
Please visit <b><i>organicmaps.app</i></b> website for additional details and FAQ, and contact us directly at @OrganicMapsApp in Telegram.
|
||||
|
||||
Reject surveillance - embrace your freedom.
|
||||
<b>Give Organic Maps a try!</b>
|
||||
@@ -1,8 +0,0 @@
|
||||
• New OpenStreetMap data as of February 27
|
||||
• Ability to manually arrange intermediate route points
|
||||
• Share a single selected track from the list
|
||||
• Improved routing for bicycles
|
||||
• Display a system notification when downloading maps and don't interrupt background downloads
|
||||
• Added a flashing Track Recording widget
|
||||
|
||||
…more details at omaps.org/news
|
||||
@@ -1 +0,0 @@
|
||||
Open-source, community-driven maps for travelers, tourists, cyclists & hikers
|
||||
@@ -1 +0,0 @@
|
||||
Organic Maps: gps и навигиране
|
||||
@@ -1 +0,0 @@
|
||||
Organic Maps Offline Hike, Bike, GPS Navigation
|
||||
@@ -1 +0,0 @@
|
||||
https://www.youtube.com/watch?v=dK-CUuy82Uc
|
||||
@@ -1,10 +0,0 @@
|
||||
Organic Maps হল একটি GPS নেভিগেশন অ্যাপ যার গোপনীয়তা রয়েছে, ড্রাইভার, হাইকার এবং সাইক্লিস্টদের জন্য। অ্যাপটিতে গোপনীয়তা সহ নেভিগেশন বৈশিষ্ট্য রয়েছে - কোন অবস্থান ট্র্যাকিং, কোন তথ্য সংগ্রহ এবং কোন বিজ্ঞাপন নেই। অনুসন্ধান, রাউটিং এবং নেভিগেশন সেল ফোন সিগন্যাল ছাড়াই কাজ করে, দূরবর্তী হাইকিং ট্রেইলে ভ্রমণের জন্য আদর্শ বা দুর্বল সংযোগ সহ অবস্থানগুলি। জৈব মানচিত্র সারা বিশ্ব থেকে অবদানকারীদের সাথে ক্রাউড-সোর্সড OpenStreetMap ডেটা ব্যবহার করে। প্রকল্পটি সম্প্রদায়-চালিত, কোডটি ওপেন সোর্স, এবং সম্প্রদায়ের উন্নয়ন এবং সহযোগিতাকে অগ্রাধিকার দেয়।
|
||||
|
||||
• কোন সেল সিগন্যাল প্রয়োজন নেই - অনুসন্ধান এবং একটি সংকেত ছাড়া রুট
|
||||
• দক্ষ ব্যাটারি ব্যবহার - ব্যাটারি ড্রেন হ্রাস
|
||||
• দ্রুত অনুসন্ধান - দ্রুত অবস্থান খুঁজুন
|
||||
|
||||
অর্গানিক ম্যাপে, আমরা গোপনীয়তাকে গুরুত্ব দিই:
|
||||
• কোন অবস্থান ট্র্যাকিং
|
||||
• কোন ডেটা সংগ্রহ নেই
|
||||
• কোন বিজ্ঞাপন নেই
|
||||
@@ -1,8 +0,0 @@
|
||||
• New OpenStreetMap data as of February 27
|
||||
• Ability to manually arrange intermediate route points
|
||||
• Share a single selected track from the list
|
||||
• Improved routing for bicycles
|
||||
• Display a system notification when downloading maps and don't interrupt background downloads
|
||||
• Added a flashing Track Recording widget
|
||||
|
||||
…more details at omaps.org/news
|
||||
@@ -1 +0,0 @@
|
||||
গোপনীয়তার সাথে নেভিগেট করুন - সম্প্রদায়-চালিত এবং ওপেন-সোর্স
|
||||
@@ -1 +0,0 @@
|
||||
Organic Maps: হাইক বাইক ড্রাইভ
|
||||
@@ -1 +0,0 @@
|
||||
Organic Maps: হাইক, বাইক, ড্রাইভ অফলাইন
|
||||
@@ -1 +0,0 @@
|
||||
https://www.youtube.com/watch?v=dK-CUuy82Uc
|
||||
@@ -1,52 +0,0 @@
|
||||
‣ La nostra aplicació gratuïta no té cap mena de publicitat ni us fa un seguiment.
|
||||
‣ És millorada constantment durant el temps lliure dels seus usuaris i el nostre petit equip.
|
||||
‣ Si hi ha res malament o inacabat al mapa, podeu arreglar-ho a l'<b>OpenStreetMap</b> i veureu els vostres canvis a la propera actualització dels mapes.
|
||||
‣ Si la navegació o la cerca no funciona, envieu-nos un correu electrònic. Responem a <i>TOTS</i> els correus-e i ho solucionem tan aviat com es pugui.
|
||||
|
||||
<b>Els vostres comentaris i comentaris de 5 estrelles són els millors motivadors per a nosaltres!</b>
|
||||
|
||||
Característiques clau:
|
||||
• Gratuït, de codi obert, sense anuncis, sense seguiment
|
||||
• Mapes detallats fora de línia amb llocs que no existeixen a Google Maps, gràcies a la comunitat de l'<b>OpenStreetMap</b>
|
||||
• Rutes amb bicicleta, rutes d'excursionisme i senderisme
|
||||
• Corbes de nivell, perfils d'elevació, cims i pendents
|
||||
• Passeig, bicicleta i navegació en cotxe amb guia de veu, Android Auto
|
||||
• Cerca ràpida fora de línia
|
||||
• Exportació i importació d'adreces d'interès en formats KML, KMZ i GPX
|
||||
• Mode fosc per a protegir els ulls
|
||||
|
||||
No hi ha <i>de moment</i> transport públic, mapes per satèl·lit i altres funcions interessants a l'Organic Maps. Però amb <i>la vostra ajuda i suport</i>, podem millorar aquest món pas a pas.
|
||||
|
||||
L'Organic Maps és <b>pur i orgànic, fet amb amor</b>:
|
||||
|
||||
• Experiència fora de línia ràpida i brillant
|
||||
• Respecta la vostra privadesa
|
||||
• Estalvia la bateria
|
||||
• Sense càrrecs inesperats de dades mòbils
|
||||
• Fàcil d'utilitzar, amb només les funcions més importants incloses
|
||||
|
||||
Lliure de rastrejadors i altres coses dolentes:
|
||||
|
||||
• Sense anuncis
|
||||
• Sense seguiment
|
||||
• Sense recollida de dades
|
||||
• Sense trucades per a vendre-us res
|
||||
• Sense cap mena de registre
|
||||
• Sense tutorials obligatoris
|
||||
• Sense enviar-vos correu brossa
|
||||
• Sense notificacions push
|
||||
• Sense crapware
|
||||
• So̶ns̶o̶ ̶p̶e̶s̶t̶i̶c̶i̶d̶e̶s̶ Purament orgànic
|
||||
|
||||
A Organic Maps, creiem que la privadesa <b> és un dret humà fonamental</b>:
|
||||
|
||||
• Organic Maps és un projecte de codi obert impulsat per la comunitat independent
|
||||
• Protegim la privadesa de les mirades indiscretes de les grans multinacionals
|
||||
• Estigueu segurs siguis on siguis
|
||||
|
||||
Segons l'informe de privadesa d'Exodus, no s'ha trobat cap rastrejador i s'utilitzen només els permisos mínims necessaris.
|
||||
|
||||
Per a més informació, visiteu el web <b><i>organicmaps.app</i></b> o bé contacteu-nos (en anglès) a @OrganicMapsApp al Telegram.
|
||||
|
||||
Rebutgeu la vigilància: accepteu la vostra llibertat.
|
||||
<b>Proveu els mapes orgànics!</b>
|
||||
@@ -1,8 +0,0 @@
|
||||
• New OpenStreetMap data as of February 27
|
||||
• Ability to manually arrange intermediate route points
|
||||
• Share a single selected track from the list
|
||||
• Improved routing for bicycles
|
||||
• Display a system notification when downloading maps and don't interrupt background downloads
|
||||
• Added a flashing Track Recording widget
|
||||
|
||||
…more details at omaps.org/news
|
||||
@@ -1 +0,0 @@
|
||||
Mapes comunitaris i de codi obert per a turistes, ciclistes i excursionistes
|
||||
@@ -1 +0,0 @@
|
||||
Organic Maps GPS fora de línia
|
||||
@@ -1 +0,0 @@
|
||||
Organic Maps: GPS, senderisme i BTT sense dades
|
||||
@@ -1 +0,0 @@
|
||||
https://www.youtube.com/watch?v=dK-CUuy82Uc
|
||||
@@ -1,53 +1,32 @@
|
||||
‣ Naše bezplatná aplikace vás nesleduje, neobsahuje reklamy a potřebuje vaši podporu.
|
||||
‣ Je neustále vylepšována přispěvateli a naším malým týmem v našem volném čase.
|
||||
‣ Pokud je na mapě něco špatně nebo na ní něco chybí, opravte to prosím na <b>OpenStreetMap</b>. Své změny uvidíte v pozdějších aktualizacích map.
|
||||
‣ Pokud nefunguje navigace nebo vyhledávání, zkontrolujte to prosím nejprve na osm.org a až poté nám napište e-mail. Odpovídáme na <i>KAŽDÝ</i> e-mail a problémy opravujeme jak nejdříve můžeme.
|
||||
Komunitou vedená bezplatná a otevřená mapová aplikace založená na datech z projektu OpenStreetMap a posílená závazkem k transparentnosti, soukromí a neziskovosti. Aplikace CoMaps je fork/odnož aplikace Organic Maps, která je zase forkem aplikace Maps.ME.
|
||||
|
||||
<b>Vaše zpětná vazba a 5-hvězdičková hodnocení jsou pro nás nejlepší motivací!</b>
|
||||
Důvody vzniku projektu a jeho směr si můžete přečíst na adrese <b><i>codeberg.org/comaps</i></b>.
|
||||
Můžete se zde také připojit ke komunitě pomáhat s vytvářením nejlepší mapové aplikace
|
||||
• Používejte aplikaci a sdílejte ji se známými
|
||||
• Poskytujte zpětnou vazbu a nahlašujte problémy
|
||||
• Aktualizujte mapová data v aplikaci nebo na webu OpenStreetMap
|
||||
|
||||
Klíčové funkce:
|
||||
‣ <b>Zaměřené na offline použití</b>: Plánujte a navigujte své cesty do zahraničí bez nutnosti mobilních dat, hledejte body na vzdálených túrách apod. Všechny funkce aplikace jsou navrženy tak, aby fungovaly offline.
|
||||
‣ <b>S ohledem na soukromí</b>: Aplikace je navržená s důrazem na soukromí – neidentifikuje lidi, nesleduje vás a nesbírá osobní údaje. Bez reklam.
|
||||
‣ <b>Jednoduché a vyladěné</b>: Základní, snadno použitelné funkce, které prostě fungují.
|
||||
‣ <b>Šetří vaši baterii a místo</b>: Nevybíjí vaší baterii, jako ostatní navigační aplikace. Kompaktní mapy šetří cenné místo ve vašem telefonu.
|
||||
‣ <b>Bezplatné a vytvořené komunitou</b>: S vytvářením aplikace pomáhají lidé, jako jste vy, přidáváním míst do projektu OpenStreetMap, testováním a poskytováním zpětné vazby k funkcím a přispíváním svými vývojářskými schopnostmi a penězi.
|
||||
‣ <b>Otevřené a transparentní rozhodování a nakládání s financemi, neziskovost a plně otevřený zdrojový kód.</b>
|
||||
|
||||
• Bezplatné, open-source, bez reklam, bez sledování
|
||||
• Podrobné offline mapy s místy, které neexistují v Mapách Google, díky komunitě <b>OpenStreetMap</b>
|
||||
• Cyklotrasy, turistické trasy a pěší stezky
|
||||
• Vrstevnice, výškové profily, vrcholy a svahy
|
||||
• Pěší, cyklistická a automobilová navigace krok po kroku s hlasovými pokyny a Android Auto
|
||||
• Rychlý offline vyhledávač
|
||||
<b>Hlavní funkce</b>:
|
||||
• Stahovatelné podrobné mapy s místy, která nenajdete ani v Mapách Google
|
||||
• Outdoorový režim se zvýrazněnými turistickými trasami, tábořišti, vodními zdroji, vrcholy, vrstevnicemi atd.
|
||||
• Pěší trasy a cyklostezky
|
||||
• Body zájmu, jako jsou restaurace, čerpací stanice, hotely, obchody, vyhlídky a mnoho dalšího
|
||||
• Hledání podle názvu nebo adresy nebo podle kategorie bodů zájmu
|
||||
• Navigace s hlasovými pokyny pro chůzi, jízdu na kole nebo řízení
|
||||
• Uložení oblíbených míst jedním klepnutím
|
||||
• Offline články z Wikipedie
|
||||
• Vrstva metra a navigace v něm
|
||||
• Záznam tras
|
||||
• Export a import záložek a tras ve formátech KML, KMZ a GPX
|
||||
• Tmavý režim pro ochranu vašich očí
|
||||
• Tmavý režim k použití během noci
|
||||
• Zlepšování mapových dat pro všechny pomocí jednoduchého vestavěného editoru
|
||||
|
||||
Organic Maps <i>zatím</i> neobsahují cool vychytávky jako veřejnou dopravu nebo satelitní mapy, <i>s vaší pomocí a podporou</i> ale můžeme postupně mapy vylepšovat.
|
||||
|
||||
Aplikace Organic Maps je <b>čistá a organická, vytvořená s láskou</b>:
|
||||
|
||||
• Neskutečně rychlý offline zážitek
|
||||
• Respektuje vaše soukromí
|
||||
• Šetří vaší baterii
|
||||
• Žádné neočekávané poplatky za mobilní data
|
||||
• Je jednoduchá na používání, obsahuje pouze nejdůležitější funkce
|
||||
|
||||
Neobsahuje sledovací prvky a další špatnosti:
|
||||
|
||||
• Žádné reklamy
|
||||
• Žádné sledování
|
||||
• Žádné sbírání dat
|
||||
• Žádné volání domů
|
||||
• Žádná otravná registrace
|
||||
• Žádné povinné tutoriály
|
||||
• Žádný e-mailový spam
|
||||
• Žádná vyskakovací oznámení
|
||||
• Žádný crapware
|
||||
• Ž̶á̶d̶n̶é̶ ̶p̶e̶s̶t̶i̶c̶i̶d̶y̶ Plně organické
|
||||
|
||||
V Organic Maps věříme, že <b>soukromí je základní lidské právo</b>:
|
||||
|
||||
• Organic Maps jsou nezávislý komunitní open-source projekt
|
||||
• Chráníme vaše soukromí před zvědavýma očima Big Tech firem
|
||||
• Nezávisle na vašem umístění jste v bezpečí
|
||||
|
||||
Podle hlášení Exodus Privacy neobsahuje aplikace žádné sledovací prvky a vyžaduje pouze minimální množství oprávnění.
|
||||
|
||||
Pro další podrobnosti a často kladené dotazy prosím navštivte webové stránky <b><i>organicmaps.app</i></b>. Kontaktovat nás můžete přes @OrganicMapsApp na Telegramu.
|
||||
|
||||
Odmítněte sledování - přijměte svou svobodu.
|
||||
<b>Vyzkoušejte Organic Maps!</b>
|
||||
<b>Svoboda je tady</b>
|
||||
Objevujte své cesty, navigujte se světem se soukromím a komunitou na prvním místě!
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
• New OpenStreetMap data as of February 27
|
||||
• Ability to manually arrange intermediate route points
|
||||
• Share a single selected track from the list
|
||||
• Improved routing for bicycles
|
||||
• Display a system notification when downloading maps and don't interrupt background downloads
|
||||
• Added a flashing Track Recording widget
|
||||
|
||||
…more details at omaps.org/news
|
||||
@@ -1 +1 @@
|
||||
Navigace s ochranou soukromí - vedená komunitou a open-source
|
||||
Jednoduchá navigace v mapě – Objevte více na své cestě – Vyvíjeno komunitou
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
Organic Maps: pěšky kolo auto
|
||||
@@ -1 +1 @@
|
||||
Organic Maps: pěšky, na kole a autem offline
|
||||
CoMaps – pěšky, na kole a autem offline a soukromě
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
https://www.youtube.com/watch?v=dK-CUuy82Uc
|
||||
@@ -1,53 +0,0 @@
|
||||
‣ Our free app does not track you, does not have ads, and it needs your support.
|
||||
‣ It is constantly being improved by contributors and our small team, in our free time.
|
||||
‣ If something is wrong or missing on the map, please fix it in <b>OpenStreetMap</b> and see your changes in the future maps update.
|
||||
‣ If navigation or search doesn't work, please check it on osm.org first, and then email us. We reply to <i>EVERY</i> email, and we'll fix it ASAP!
|
||||
|
||||
<b>Your feedback and 5-star reviews are the best motivators for us!</b>
|
||||
|
||||
Key features:
|
||||
|
||||
• Free, open-source, no ads, no tracking
|
||||
• Detailed offline maps with places that don't exist on Google maps, thanks to the <b>OpenStreetMap</b> community
|
||||
• Cycling routes, hiking trails, and walking paths
|
||||
• Contour lines, elevation profiles, peaks, and slopes
|
||||
• Turn-by-turn walking, cycling, and car navigation with voice guidance and Android Auto
|
||||
• Fast offline search
|
||||
• Bookmarks and tracks export and import in KML, KMZ, GPX formats
|
||||
• Dark mode to protect your eyes
|
||||
|
||||
There is no public transport, satellite maps, and other cool features <i>yet</i> in Organic Maps. But with <i>your help and support</i>, we can make better maps step by step.
|
||||
|
||||
Organic Maps is <b>pure and organic, made with love</b>:
|
||||
|
||||
• Blazing fast offline experience
|
||||
• Respects your privacy
|
||||
• Saves your battery
|
||||
• No unexpected mobile data charges
|
||||
• Simple to use, with only most important features included
|
||||
|
||||
Free from trackers and other bad stuff:
|
||||
|
||||
• No ads
|
||||
• No tracking
|
||||
• No data collection
|
||||
• No phoning home
|
||||
• No annoying registration
|
||||
• No mandatory tutorials
|
||||
• No noisy email spam
|
||||
• No push notifications
|
||||
• No crapware
|
||||
• N̶o̶ ̶p̶e̶s̶t̶i̶c̶i̶d̶e̶s̶ Purely organic
|
||||
|
||||
At Organic Maps, we believe that <b>privacy is a fundamental human right</b>:
|
||||
|
||||
• Organic Maps is an indie community-driven open-source project
|
||||
• We protect privacy from Big Tech's prying eyes
|
||||
• Stay safe no matter wherever you are
|
||||
|
||||
Zero trackers and only minimally required permissions are found according to Exodus Privacy Report.
|
||||
|
||||
Please visit <b><i>organicmaps.app</i></b> website for additional details and FAQ, and contact us directly at @OrganicMapsApp in Telegram.
|
||||
|
||||
Reject surveillance - embrace your freedom.
|
||||
<b>Give Organic Maps a try!</b>
|
||||
@@ -1,8 +0,0 @@
|
||||
• New OpenStreetMap data as of February 27
|
||||
• Ability to manually arrange intermediate route points
|
||||
• Share a single selected track from the list
|
||||
• Improved routing for bicycles
|
||||
• Display a system notification when downloading maps and don't interrupt background downloads
|
||||
• Added a flashing Track Recording widget
|
||||
|
||||
…more details at omaps.org/news
|
||||
@@ -1 +1 @@
|
||||
Open-source, community-driven maps for travelers, tourists, cyclists & hikers
|
||||
Nem kortnavigation - Oplev mere af din rejse - Drevet af fællesskabet
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
Offline Organic Maps Hike Bike
|
||||
@@ -1 +1 @@
|
||||
Organic Maps Offline Hike, Bike, GPS Navigation
|
||||
CoMaps - vandr, cykl og kør offline med privatliv
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
https://www.youtube.com/watch?v=dK-CUuy82Uc
|
||||
@@ -1,53 +1,32 @@
|
||||
‣ Unsere kostenlose App trackt niemanden, enthält keine Werbung und braucht deine Unterstützung.
|
||||
‣ Sie wird ständig von Mitwirkenden und unserem kleinen Team verbessert, in unserer Freizeit.
|
||||
‣ Wenn etwas auf der Karte falsch ist oder fehlt, dann korrigiere es bitte in <b>OpenStreetMap</b> und sieh deine Änderungen in der zukünftigen Kartenaktualisierung.
|
||||
‣ Sollte die Navigation oder die Suche nicht funktionieren, sende uns bitte eine E-Mail. Wir antworten auf <i>JEDE</i> E-Mail und werden das Problem so schnell wie möglich beheben!
|
||||
Eine von der Community betriebene, kostenlose Open-Source Karten-App, die auf OpenStreetMap Daten basiert. Transparent und nicht gewinnorientiert. CoMaps ist ein Fork/Abspaltung von Organic Maps, die wiederum ein Fork/Abspaltung von Maps.Me ist.
|
||||
|
||||
<b>Dein Feedback und deine 5-Sterne-Bewertungen sind die beste Motivation für uns!</b>
|
||||
Lese mehr über die Gründe und Ziele des Projektes unter <b><i>codeberg.org/comaps</i></b>.
|
||||
Werde Teil der Community und hilf mit, die beste Karten-App zu entwickeln
|
||||
• Nutze die App und erzähle anderen davon
|
||||
• Gib Feedback und melde Probleme
|
||||
• Aktualisiere Kartendaten in der App oder auf der OpenStreetMap-Webseite
|
||||
|
||||
Wichtigste Funktionen:
|
||||
‣ <b>Einfach und ausgereift</b>: Essenzielle, leicht zu bedienende Funktionen, die einfach funktionieren.
|
||||
‣ <b>Offline-orientiert</b>: Plane und navigiere im Ausland ohne Mobilfunkverbindung, finde Wegpunkte auf abgelegenen Wanderungen usw. Alle Funktionen sind für den Offline-Einsatz konzipiert.
|
||||
‣ <b>Datenschutzfreundlich</b>: Die App wurde mit Fokus auf Privatsphäre entwickelt – keine Personenidentifikation, kein Tracking, keine Erfassung persönlicher Daten, keine Werbung.
|
||||
‣ <b>Spart Akku und Speicherplatz</b>: Verbraucht nicht unnötig Akku wie andere Navi-Apps. Kompakte Karten sparen Speicherplatz auf deinem Gerät.
|
||||
‣ <b>Kostenlos und von der Community entwickelt</b>: Menschen wie du haben geholfen, diese App zu entwickeln – durch das Hinzufügen von Orten zu OpenStreetMap, Testen von neuen Funktionen, Softwareentwicklung oder Spenden.
|
||||
‣ <b>Offen und transparent bei Entscheidungen und Finanzen, gemeinnützig und vollständig Open-Source</b>
|
||||
|
||||
• Kostenlos, Open-Source, keine Werbung, kein Tracking
|
||||
• Detaillierte Offline-Karten mit Orten, die es auf anderen Karten nicht gibt, dank an die <b>OpenStreetMap</b> Community
|
||||
• Rad-, Wander- und Spazierwege
|
||||
• Höhenlinien, Höhenprofile, Bergspitzen und Steigungen
|
||||
• Schritt-für-Schritt-Navigation für Fußgänger, Radfahrer und Autos mit Sprachführung
|
||||
• Schnelle Offlinesuche
|
||||
• Export und Import von Lesezeichen im KML, KMZ, GPX-Format
|
||||
• Dunkler Modus zum Schutz deiner Augen
|
||||
<b>Hauptfunktionen</b>:
|
||||
• Detaillierte, herunterladbare Karten mit Orten, die bei Google Maps oft fehlen
|
||||
• Outdoor-Modus mit hervorgehobenen Wanderwegen, Campingplätzen, Wasserquellen, Gipfeln, Höhenlinien usw.
|
||||
• Geh- und Radwege
|
||||
• Orte wie Restaurants, Tankstellen, Hotels, Geschäfte, Sehenswürdigkeiten und viele mehr
|
||||
• Suche nach Namen, Adressen oder Kategorien
|
||||
• Sprachausgabe bei der Navigation zu Fuß, Rad oder Auto
|
||||
• Lesezeichen mit einem einzigen Tippen speichern
|
||||
• Offline verfügbare Wikipedia-Artikel
|
||||
• U- und S-Bahn-Netze
|
||||
• Aufzeichnen von GPS-Tracks
|
||||
• Import und Export von Favoriten und Routen im KML-, KMZ- oder GPX-Format
|
||||
• Dunkler Modus für die Nutzung bei Nacht
|
||||
• Kartenbearbeitung direkt in der App mit einem einfachen Editor
|
||||
|
||||
Öffentlichen Verkehrsmittel, Satellitenbildkarten und viele weitere wichtige Merkmale werden <i>noch</i> nicht unterstützt. Aber mit <i>deiner Hilfe und Unterstützung</i> können wir diese Welt und unsere Karten Schritt für Schritt besser machen.
|
||||
|
||||
Organic Maps ist <b>rein, organisch und mit Liebe gemacht</b>:
|
||||
|
||||
• Rasend schnelle Offline-Erfahrung
|
||||
• Respektiert deine Privatsphäre
|
||||
• Schont deinen Akku
|
||||
• Keine unerwarteten Gebühren für mobile Daten
|
||||
• Einfach zu bedienen, nur die wichtigsten Funktionen integriert
|
||||
|
||||
Frei von Trackern und schlechten Dingen:
|
||||
|
||||
• Keine Werbung
|
||||
• Kein Tracking
|
||||
• Keine Datenerfassung
|
||||
• Kein Telefonieren nach Hause
|
||||
• Keine lästige Registrierung
|
||||
• Keine obligatorischen Tutorials
|
||||
• Kein lästiger E-Mail-Spam
|
||||
• Keine Push-Benachrichtigungen
|
||||
• Keine Crapware
|
||||
• -K̶e̶i̶n̶e̶ ̶P̶e̶s̶t̶i̶z̶i̶d̶e̶ Rein organisch
|
||||
|
||||
Wir bei Organic Maps glauben, dass <b>Privatsphäre ein grundlegendes Menschenrecht</b> ist:
|
||||
|
||||
• Organic Maps ist ein von einer unabhängigen Gemeinschaft betriebenes Open-Source-Projekt
|
||||
• Wir schützen deine Privatsphäre vor den neugierigen Augen der großen Technologiekonzerne
|
||||
• Bleib sicher, egal wo du bist
|
||||
|
||||
Keine Tracker und nur minimal erforderliche Berechtigungen sind laut dem Exodus-Datenschutzbericht vorhanden.
|
||||
|
||||
Bitte besuche <b><i>organicmaps.app</i></b> Webseite für weitere Details und ein FAQ. Oder kontaktiere uns direkt unter @OrganicMapsApp in Telegram.
|
||||
|
||||
Lehne Überwachung ab - lebe deine Freiheit.
|
||||
<b>Teste Organic Maps!</b>
|
||||
<b>Entdecke die Unabhängigkeit</b>
|
||||
Entdecke deine Reise – navigiere in der Welt mit Datenschutz!
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
• Neue OpenStreetMap-Daten vom 27. Februar
|
||||
• Möglichkeit, Zwischenroutenpunkte manuell zu arrangieren
|
||||
• Einen einzelnen ausgewählten Track aus der Liste teilen
|
||||
• Verbesserte Routenführung für Fahrräder
|
||||
• Beim Herunterladen von Karten eine Systembenachrichtigung anzeigen und Hintergrunddownloads nicht unterbrechen
|
||||
• Ein blinkendes Trackaufzeichnungs-Widget hinzugefügt
|
||||
|
||||
…weitere Details unter omaps.org/news
|
||||
Wir stellen vor: Das neue CoMaps-Logo!
|
||||
• Verbesserte Höhenlinien in vielen Regionen (Stufen von 20/50 m)
|
||||
• Links zu Panoramax-Bildern für ausgewählte POIs
|
||||
• OpenStreetMap-Daten vom 13. Juli
|
||||
• Neue Farben für viele Objekte und Farben werden früher angezeigt
|
||||
• Öffnungszeiten werden beim Antippen eines POI angezeigt
|
||||
• Verschiedene Arten von Feuchtgebieten
|
||||
• Neue Farben für Vegetation und andere Features; einige neue Icons
|
||||
• Wandern: bessere Darstellung der Höhenlinien
|
||||
@@ -1 +1 @@
|
||||
Navigieren mit Datenschutz - Community-gesteuert & Open-Source
|
||||
Einfache Navigation - Entdecken Sie mehr von Ihrer Reise - Community-Entwickelt
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
Organic Maps Offline Karten
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user