Compare commits
196 Commits
2025.07.23
...
pastk-gpla
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
747b324e6e | ||
|
|
8616a92135 | ||
|
|
a3b3d32d4b | ||
|
|
dc93f34133 | ||
|
|
45e15e2edb | ||
|
|
1e358375c6 | ||
|
|
c3d0689d8a | ||
|
|
607191503c | ||
|
|
7ec05f16e5 | ||
|
|
b41bad5ea4 | ||
|
|
1e22b678e2 | ||
|
|
f88b0afa58 | ||
|
|
d7ece38279 | ||
|
|
722fc5e333 | ||
|
|
f05a9c9eb4 | ||
|
|
07c26a5ab8 | ||
|
|
8f5c8a5bd7 | ||
|
|
04246a55f2 | ||
|
|
b096199695 | ||
|
|
5de22c6de8 | ||
|
|
d7f73f4b9b | ||
|
|
d5ce81b20b | ||
|
|
905a823490 | ||
|
|
b195059fb6 | ||
|
|
460a7fa480 | ||
|
|
e65ab6e458 | ||
|
|
effc8ba5d1 | ||
|
|
014b54b1f7 | ||
|
|
a25ae124d7 | ||
|
|
372a7a90c5 | ||
|
|
9bd6e2cdf2 | ||
|
|
c2cc61e4d9 | ||
|
|
e3fa656f4f | ||
|
|
d7216b7ccc | ||
|
|
aaa61f7f75 | ||
|
|
ccfd2107f3 | ||
|
|
45ec96dd3c | ||
|
|
dd7739a8b2 | ||
|
|
ae0ef4d3f8 | ||
|
|
68d1ead44c | ||
|
|
09de87fd29 | ||
|
|
1a241121c4 | ||
|
|
fdeeb1ae34 | ||
|
|
c2bd2b897a | ||
|
|
e39b5eb507 | ||
|
|
96ef33a401 | ||
|
|
c6dcfc71bf | ||
|
|
053fe3c143 | ||
|
|
c6439aaa82 | ||
|
|
e50a668feb | ||
|
|
5ce753bd5c | ||
|
|
8058183f72 | ||
|
|
07f745411f | ||
|
|
2004c9bfc1 | ||
|
|
1e7715d10f | ||
|
|
e884e32bb6 | ||
|
|
660694aee0 | ||
|
|
99fa3ec551 | ||
|
|
f26db1a79b | ||
|
|
1151f0fb75 | ||
|
|
bbb28107b8 | ||
|
|
9c7b39fd5b | ||
|
|
0d9514bee9 | ||
|
|
a036edc9c5 | ||
|
|
90492e95e6 | ||
|
|
fc199252eb | ||
|
|
327d302aae | ||
|
|
0b8bd42cb0 | ||
|
|
962ee67833 | ||
|
|
69e3fdca90 | ||
|
|
ac8f945455 | ||
|
|
c8a4726500 | ||
|
|
40adb0f860 | ||
|
|
c600a4fd5d | ||
|
|
07420a3f19 | ||
|
|
3920988ef4 | ||
|
|
6136abb33a | ||
|
|
a0e40c98d7 | ||
|
|
3bdaa44c3a | ||
|
|
945c6205a0 | ||
|
|
ef4fd85883 | ||
|
|
83db427c40 | ||
|
|
946fea1e07 | ||
|
|
bd80e9160d | ||
|
|
5333ad3597 | ||
|
|
65b5234396 | ||
|
|
969c805182 | ||
|
|
8b03e99035 | ||
|
|
3aabde338a | ||
|
|
d5d86ffd36 | ||
|
|
d4cef9385b | ||
|
|
9c495ca616 | ||
|
|
a08f3df3e6 | ||
|
|
bb5da20fec | ||
|
|
e112dc2ac4 | ||
|
|
3e2e6cb487 | ||
|
|
21020429cb | ||
|
|
07025ff696 | ||
|
|
c13da0f0a2 | ||
|
|
dd023b65c7 | ||
|
|
0c8648d1e3 | ||
|
|
760e050110 | ||
|
|
db4b46f8ad | ||
|
|
29ebd8b725 | ||
|
|
6b53d1fb91 | ||
|
|
d1da6c197e | ||
|
|
0dc8d69375 | ||
|
|
3352279d9d | ||
|
|
6da8b69a1b | ||
|
|
fe1c371b5f | ||
|
|
309eed2365 | ||
|
|
979c713436 | ||
|
|
5e8a8de646 | ||
|
|
b0bdd2c665 | ||
|
|
dd949925f6 | ||
|
|
b37572000f | ||
|
|
332ab819b2 | ||
|
|
860f58e60e | ||
|
|
0e7d8a65cc | ||
|
|
4c6207a8ce | ||
|
|
b96afc6fbb | ||
|
|
8174eac134 | ||
|
|
f4dd133872 | ||
|
|
feddb98a81 | ||
|
|
886938c0dc | ||
|
|
5014b4018d | ||
|
|
084357a68e | ||
|
|
c6c758d7af | ||
|
|
e80679eeb0 | ||
|
|
1fda519032 | ||
|
|
57f543a0dd | ||
|
|
2b173cebe6 | ||
|
|
10f154858c | ||
|
|
20e0b0ff95 | ||
|
|
4588703f71 | ||
|
|
11ee2b121b | ||
|
|
4e9efa63ff | ||
|
|
161123245e | ||
|
|
8f11eb876e | ||
|
|
47741282cf | ||
|
|
115dbbea79 | ||
|
|
088a2bfd22 | ||
|
|
d8cdfb8080 | ||
|
|
b465b95854 | ||
|
|
cee3f24cd9 | ||
|
|
c7133364c1 | ||
|
|
cc6958282b | ||
|
|
21cc2bbf52 | ||
|
|
1cf4ff21ec | ||
|
|
1fe8f1f0e6 | ||
|
|
f8bfdb898b | ||
|
|
898c940de0 | ||
|
|
eca0e91ec4 | ||
|
|
26567a2220 | ||
|
|
539e5cdfeb | ||
|
|
dde65a918b | ||
|
|
c0469ddef2 | ||
|
|
34af5e26d9 | ||
|
|
d89ef42acc | ||
|
|
fb1279ca5a | ||
|
|
128b0f3e2b | ||
|
|
3b46dd1dee | ||
|
|
767f27e00a | ||
|
|
ac50520ca8 | ||
|
|
4f6455d6f8 | ||
|
|
c2c68c4a76 | ||
|
|
2f2c3b042f | ||
|
|
a5e7922d37 | ||
|
|
c05b668e38 | ||
|
|
58ea819936 | ||
|
|
038746b698 | ||
|
|
11585e07bb | ||
|
|
a576f529a4 | ||
|
|
e298da740e | ||
|
|
68711cae06 | ||
|
|
a3bb0bed46 | ||
|
|
0c7e6300f5 | ||
|
|
2529d5bf5d | ||
|
|
0ef61252c6 | ||
|
|
530847285c | ||
|
|
cdc2b1b5b5 | ||
|
|
606a94c818 | ||
|
|
6bac0d5f65 | ||
|
|
9a609f638c | ||
|
|
cfb97a3db6 | ||
|
|
9ad94eb95c | ||
|
|
aa71668eab | ||
|
|
d649e46ef2 | ||
|
|
12dbfc6622 | ||
|
|
8393402c02 | ||
|
|
972bb21264 | ||
|
|
bab869db2b | ||
|
|
56f9990a7b | ||
|
|
bef136a094 | ||
|
|
c4c08fc410 | ||
|
|
1433b0e866 |
@@ -1,48 +1,59 @@
|
|||||||
# Configuration file for clang-format, based on docs/CPP_STYLE.md.
|
# Configuration file for clang-format, based on docs/CPP_STYLE.md.
|
||||||
|
|
||||||
---
|
|
||||||
BasedOnStyle: Google
|
BasedOnStyle: Google
|
||||||
|
|
||||||
AccessModifierOffset: -2
|
AccessModifierOffset: -2
|
||||||
|
AlignAfterOpenBracket: Align
|
||||||
|
AlignArrayOfStructures: Right
|
||||||
|
AlignConsecutiveMacros: AcrossEmptyLinesAndComments
|
||||||
|
AlignEscapedNewlines: LeftWithLastLine
|
||||||
AlignOperands: AlignAfterOperator
|
AlignOperands: AlignAfterOperator
|
||||||
AllowShortBlocksOnASingleLine: Empty
|
AllowShortBlocksOnASingleLine: Empty
|
||||||
|
AllowShortCaseLabelsOnASingleLine: true
|
||||||
|
AllowShortFunctionsOnASingleLine: Inline
|
||||||
AllowShortIfStatementsOnASingleLine: Never
|
AllowShortIfStatementsOnASingleLine: Never
|
||||||
AllowShortLoopsOnASingleLine: false
|
AllowShortLoopsOnASingleLine: false
|
||||||
AllowShortCaseLabelsOnASingleLine: true
|
|
||||||
BraceWrapping:
|
BraceWrapping:
|
||||||
AfterCaseLabel: true
|
AfterCaseLabel: true
|
||||||
AfterClass: true
|
AfterClass: true
|
||||||
AfterControlStatement: Always
|
AfterControlStatement: Always
|
||||||
AfterEnum: true
|
AfterEnum: true
|
||||||
|
AfterExternBlock: true
|
||||||
AfterFunction: true
|
AfterFunction: true
|
||||||
AfterNamespace: true
|
AfterNamespace: true
|
||||||
AfterObjCDeclaration: true
|
AfterObjCDeclaration: true
|
||||||
AfterStruct: true
|
AfterStruct: true
|
||||||
AfterUnion: true
|
AfterUnion: true
|
||||||
AfterExternBlock: true
|
|
||||||
BeforeCatch: true
|
BeforeCatch: true
|
||||||
BeforeElse: true
|
BeforeElse: true
|
||||||
BeforeLambdaBody: true
|
BeforeLambdaBody: true
|
||||||
BeforeWhile: true
|
BeforeWhile: true
|
||||||
IndentBraces: false
|
|
||||||
SplitEmptyFunction: false
|
SplitEmptyFunction: false
|
||||||
SplitEmptyRecord: false
|
|
||||||
SplitEmptyNamespace: false
|
SplitEmptyNamespace: false
|
||||||
|
SplitEmptyRecord: false
|
||||||
|
BinPackArguments: true
|
||||||
|
BinPackParameters: true
|
||||||
|
BreakAfterJavaFieldAnnotations: true
|
||||||
BreakBeforeBraces: Custom
|
BreakBeforeBraces: Custom
|
||||||
BreakConstructorInitializers: BeforeComma
|
BreakConstructorInitializers: BeforeComma
|
||||||
BreakInheritanceList: BeforeComma
|
BreakInheritanceList: BeforeComma
|
||||||
ColumnLimit: 120
|
ColumnLimit: 120
|
||||||
ConstructorInitializerIndentWidth: 2
|
ConstructorInitializerIndentWidth: 2
|
||||||
ContinuationIndentWidth: 2
|
ContinuationIndentWidth: 4
|
||||||
DerivePointerAlignment: false
|
DerivePointerAlignment: false
|
||||||
IncludeBlocks: Preserve
|
IncludeBlocks: Preserve
|
||||||
IndentCaseLabels: false
|
IndentAccessModifiers: false
|
||||||
IndentExternBlock: NoIndent
|
IndentExternBlock: NoIndent
|
||||||
|
InsertBraces: false
|
||||||
InsertNewlineAtEOF: true
|
InsertNewlineAtEOF: true
|
||||||
PackConstructorInitializers: Never
|
LambdaBodyIndentation: OuterScope
|
||||||
|
PackConstructorInitializers: CurrentLine
|
||||||
PointerAlignment: Middle
|
PointerAlignment: Middle
|
||||||
|
RemoveBracesLLVM: true
|
||||||
QualifierAlignment: Right
|
QualifierAlignment: Right
|
||||||
SpacesInContainerLiterals: false
|
SpacesInContainerLiterals: false
|
||||||
Standard: Latest
|
Standard: Latest
|
||||||
TabWidth: 2
|
TabWidth: 2
|
||||||
UseTab: Never
|
|
||||||
|
---
|
||||||
|
Language: Java
|
||||||
|
AllowShortFunctionsOnASingleLine: Empty
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
name: 🐞 Bug Report
|
name: 🐞 Bug Report
|
||||||
description: Report a problem you've encountered
|
description: Report a problem you've encountered
|
||||||
title: "bug: "
|
|
||||||
labels:
|
labels:
|
||||||
- bug
|
- bug
|
||||||
body:
|
body:
|
||||||
@@ -67,4 +66,4 @@ body:
|
|||||||
label: Additional context
|
label: Additional context
|
||||||
description: Add any other context or comments that may be useful.
|
description: Add any other context or comments that may be useful.
|
||||||
validations:
|
validations:
|
||||||
required: false
|
required: false
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
name: "💡 Feature Request"
|
name: "💡 Feature Request"
|
||||||
description: "Suggest an idea or improvement for CoMaps"
|
description: "Suggest an idea or improvement for CoMaps"
|
||||||
title: "feat: "
|
|
||||||
labels:
|
labels:
|
||||||
- "enhancement"
|
- "enhancement"
|
||||||
body:
|
body:
|
||||||
@@ -44,4 +43,4 @@ body:
|
|||||||
label: "Additional context"
|
label: "Additional context"
|
||||||
description: "Any other context, comments, or screenshots to support your request."
|
description: "Any other context, comments, or screenshots to support your request."
|
||||||
validations:
|
validations:
|
||||||
required: false
|
required: false
|
||||||
|
|||||||
@@ -32,13 +32,12 @@ on:
|
|||||||
- track_generator/**
|
- track_generator/**
|
||||||
- xcode/**
|
- xcode/**
|
||||||
|
|
||||||
env:
|
|
||||||
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
android-google-beta:
|
android-google-beta:
|
||||||
name: Android Google Beta
|
name: Android Google Beta
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: runmymind/docker-android-sdk:latest
|
||||||
environment: beta
|
environment: beta
|
||||||
steps:
|
steps:
|
||||||
- name: Install build tools and dependencies
|
- name: Install build tools and dependencies
|
||||||
@@ -71,10 +70,6 @@ jobs:
|
|||||||
SECURE_PROPERTIES: ${{ secrets.SECURE_PROPERTIES }}
|
SECURE_PROPERTIES: ${{ secrets.SECURE_PROPERTIES }}
|
||||||
RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE }}
|
RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE }}
|
||||||
|
|
||||||
- name: Configure repository
|
|
||||||
shell: bash
|
|
||||||
run: ./configure.sh
|
|
||||||
|
|
||||||
- name: Compile
|
- name: Compile
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: android
|
working-directory: android
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
android-check-metadata:
|
android-check-metadata:
|
||||||
name: Check app metadata
|
name: Check app metadata
|
||||||
runs-on: ubuntu-latest
|
runs-on: codeberg-tiny
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|||||||
@@ -34,13 +34,12 @@ on:
|
|||||||
- track_generator/**
|
- track_generator/**
|
||||||
- xcode/**
|
- xcode/**
|
||||||
|
|
||||||
env:
|
|
||||||
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lint:
|
lint:
|
||||||
name: Android Lint
|
name: Android Lint
|
||||||
runs-on: ubuntu-latest
|
runs-on: codeberg-tiny
|
||||||
|
container:
|
||||||
|
image: runmymind/docker-android-sdk:latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@@ -51,10 +50,6 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||||
|
|
||||||
- name: Configure repository
|
|
||||||
shell: bash
|
|
||||||
run: ./configure.sh
|
|
||||||
|
|
||||||
- name: Lint
|
- name: Lint
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: android
|
working-directory: android
|
||||||
@@ -63,6 +58,8 @@ jobs:
|
|||||||
android-check:
|
android-check:
|
||||||
name: Build Android Debug
|
name: Build Android Debug
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: runmymind/docker-android-sdk:latest
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
@@ -93,10 +90,6 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||||
|
|
||||||
- name: Configure repository
|
|
||||||
shell: bash
|
|
||||||
run: ./configure.sh
|
|
||||||
|
|
||||||
- name: Configure ccache
|
- name: Configure ccache
|
||||||
uses: hendrikmuhs/ccache-action@v1.2
|
uses: hendrikmuhs/ccache-action@v1.2
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -4,12 +4,9 @@ on:
|
|||||||
schedule:
|
schedule:
|
||||||
- cron: '0 5 * * 0' # Once per week at 05:00 UTC
|
- cron: '0 5 * * 0' # Once per week at 05:00 UTC
|
||||||
|
|
||||||
env:
|
|
||||||
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
precondition:
|
precondition:
|
||||||
runs-on: ubuntu-latest
|
runs-on: codeberg-tiny
|
||||||
name: Check preconditions
|
name: Check preconditions
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
@@ -34,6 +31,8 @@ jobs:
|
|||||||
android-google-beta:
|
android-google-beta:
|
||||||
name: Android Google Beta
|
name: Android Google Beta
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: runmymind/docker-android-sdk:latest
|
||||||
needs: precondition
|
needs: precondition
|
||||||
if: ${{ needs.precondition.outputs.updated != '' }}
|
if: ${{ needs.precondition.outputs.updated != '' }}
|
||||||
environment: beta
|
environment: beta
|
||||||
@@ -73,10 +72,6 @@ jobs:
|
|||||||
SECURE_PROPERTIES: ${{ secrets.SECURE_PROPERTIES }}
|
SECURE_PROPERTIES: ${{ secrets.SECURE_PROPERTIES }}
|
||||||
RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE }}
|
RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE }}
|
||||||
|
|
||||||
- name: Configure repository
|
|
||||||
shell: bash
|
|
||||||
run: ./configure.sh
|
|
||||||
|
|
||||||
- name: Compile
|
- name: Compile
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: android
|
working-directory: android
|
||||||
|
|||||||
@@ -2,13 +2,12 @@ name: Android Release Metadata
|
|||||||
on:
|
on:
|
||||||
workflow_dispatch: # Manual trigger
|
workflow_dispatch: # Manual trigger
|
||||||
|
|
||||||
env:
|
|
||||||
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
android-release-metadata:
|
android-release-metadata:
|
||||||
name: Upload Google Play metadata
|
name: Upload Google Play metadata
|
||||||
runs-on: ubuntu-latest
|
runs-on: codeberg-tiny
|
||||||
|
container:
|
||||||
|
image: runmymind/docker-android-sdk:latest
|
||||||
environment: production
|
environment: production
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
|
|||||||
@@ -5,12 +5,13 @@ on:
|
|||||||
env:
|
env:
|
||||||
RELEASE_NOTES: android/app/src/google/play/release-notes/en-US/default.txt
|
RELEASE_NOTES: android/app/src/google/play/release-notes/en-US/default.txt
|
||||||
FDROID_VERSION: android/app/src/fdroid/play/version.yaml
|
FDROID_VERSION: android/app/src/fdroid/play/version.yaml
|
||||||
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
tag:
|
tag:
|
||||||
name: Tag
|
name: Tag
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: runmymind/docker-android-sdk:latest
|
||||||
environment: production
|
environment: production
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
@@ -117,10 +118,6 @@ jobs:
|
|||||||
SECURE_PROPERTIES: ${{ secrets.SECURE_PROPERTIES }}
|
SECURE_PROPERTIES: ${{ secrets.SECURE_PROPERTIES }}
|
||||||
RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE }}
|
RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE }}
|
||||||
|
|
||||||
- name: Configure repository
|
|
||||||
shell: bash
|
|
||||||
run: ./configure.sh
|
|
||||||
|
|
||||||
- name: Set up SDK
|
- name: Set up SDK
|
||||||
shell: bash
|
shell: bash
|
||||||
run: echo "sdk.dir=$ANDROID_SDK_ROOT" > android/local.properties
|
run: echo "sdk.dir=$ANDROID_SDK_ROOT" > android/local.properties
|
||||||
|
|||||||
@@ -3,20 +3,20 @@ on:
|
|||||||
workflow_dispatch: # Manual trigger
|
workflow_dispatch: # Manual trigger
|
||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
paths:
|
||||||
- packaging/app.organicmaps.desktop.metainfo.xml
|
- packaging/app.comaps.comaps.metainfo.xml
|
||||||
- .forgejo/workflows/appstream-check.yaml # Run check on self change
|
- .forgejo/workflows/appstream-check.yaml # Run check on self change
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
validate-appstream:
|
validate-appstream:
|
||||||
name: Validate appstream metadata xml
|
name: Validate appstream metadata xml
|
||||||
runs-on: ubuntu-24.04
|
runs-on: codeberg-tiny
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 1
|
fetch-depth: 1
|
||||||
sparse-checkout: |
|
sparse-checkout: |
|
||||||
packaging/app.organicmaps.desktop.metainfo.xml
|
packaging/app.comaps.comaps.metainfo.xml
|
||||||
|
|
||||||
- name: Install appstream validator and flatpak Builder
|
- name: Install appstream validator and flatpak Builder
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -29,8 +29,8 @@ jobs:
|
|||||||
|
|
||||||
- name: Lint appstream data with flatpak Builder
|
- name: Lint appstream data with flatpak Builder
|
||||||
shell: bash
|
shell: bash
|
||||||
run: flatpak run --command=flatpak-builder-lint org.flatpak.Builder appstream packaging/app.organicmaps.desktop.metainfo.xml
|
run: flatpak run --command=flatpak-builder-lint org.flatpak.Builder appstream packaging/app.comaps.comaps.metainfo.xml
|
||||||
|
|
||||||
- name: Run appstreamcli in pedantic mode
|
- name: Run appstreamcli in pedantic mode
|
||||||
shell: bash
|
shell: bash
|
||||||
run: flatpak run --command=appstreamcli org.flatpak.Builder validate --pedantic packaging/app.organicmaps.desktop.metainfo.xml
|
run: flatpak run --command=appstreamcli org.flatpak.Builder validate --pedantic packaging/app.comaps.comaps.metainfo.xml
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ concurrency:
|
|||||||
jobs:
|
jobs:
|
||||||
should-run-check:
|
should-run-check:
|
||||||
name: Should run coverage
|
name: Should run coverage
|
||||||
runs-on: ubuntu-24.04
|
runs-on: codeberg-tiny
|
||||||
outputs:
|
outputs:
|
||||||
run-from-pr: ${{ steps.run-from-pr.outputs.run-from-pr }}
|
run-from-pr: ${{ steps.run-from-pr.outputs.run-from-pr }}
|
||||||
manually-triggered: ${{ steps.manually-triggered.outputs.manually-triggered }}
|
manually-triggered: ${{ steps.manually-triggered.outputs.manually-triggered }}
|
||||||
@@ -59,14 +59,9 @@ jobs:
|
|||||||
coverage:
|
coverage:
|
||||||
needs: should-run-check
|
needs: should-run-check
|
||||||
name: Generate coverage report
|
name: Generate coverage report
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-latest
|
||||||
if: ${{ needs.should-run-check.outputs.run-from-pr == 'true' || needs.should-run-check.outputs.manually-triggered == 'true'}}
|
if: ${{ needs.should-run-check.outputs.run-from-pr == 'true' || needs.should-run-check.outputs.manually-triggered == 'true'}}
|
||||||
steps:
|
steps:
|
||||||
- name: Free disk space by removing .NET, Android and Haskell
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc
|
|
||||||
|
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
@@ -94,10 +89,6 @@ jobs:
|
|||||||
llvm \
|
llvm \
|
||||||
gcovr
|
gcovr
|
||||||
|
|
||||||
- name: Configure repository
|
|
||||||
shell: bash
|
|
||||||
run: ./configure.sh
|
|
||||||
|
|
||||||
- name: Configure ccache
|
- name: Configure ccache
|
||||||
uses: hendrikmuhs/ccache-action@v1.2
|
uses: hendrikmuhs/ccache-action@v1.2
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -3,20 +3,20 @@ on:
|
|||||||
workflow_dispatch: # Manual trigger
|
workflow_dispatch: # Manual trigger
|
||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
paths:
|
||||||
- qt/res/app.organicmaps.desktop.desktop
|
- qt/res/app.comaps.comaps.desktop
|
||||||
- .forgejo/workflows/desktop-file-check.yaml # Run check on self change
|
- .forgejo/workflows/desktop-file-check.yaml # Run check on self change
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
validate-desktop-file:
|
validate-desktop-file:
|
||||||
name: Validate .desktop file
|
name: Validate .desktop file
|
||||||
runs-on: ubuntu-24.04
|
runs-on: codeberg-tiny
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 1
|
fetch-depth: 1
|
||||||
sparse-checkout: |
|
sparse-checkout: |
|
||||||
qt/res/app.organicmaps.desktop.desktop
|
qt/res/app.comaps.comaps.desktop
|
||||||
|
|
||||||
- name: Install desktop-file-validate tool
|
- name: Install desktop-file-validate tool
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -27,4 +27,4 @@ jobs:
|
|||||||
|
|
||||||
- name: Validate desktop file
|
- name: Validate desktop file
|
||||||
shell: bash
|
shell: bash
|
||||||
run: desktop-file-validate qt/res/app.organicmaps.desktop.desktop && echo "Successfully validated .desktop file"
|
run: desktop-file-validate qt/res/app.comaps.comaps.desktop && echo "Successfully validated .desktop file"
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
ios-check-metadata:
|
ios-check-metadata:
|
||||||
name: Check app metadata
|
name: Check app metadata
|
||||||
runs-on: ubuntu-latest
|
runs-on: codeberg-tiny
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|||||||
@@ -103,4 +103,4 @@ jobs:
|
|||||||
-destination 'generic/platform=iOS' \
|
-destination 'generic/platform=iOS' \
|
||||||
-quiet \
|
-quiet \
|
||||||
CODE_SIGNING_REQUIRED=NO \
|
CODE_SIGNING_REQUIRED=NO \
|
||||||
CODE_SIGNING_ALLOWED=NO
|
CODE_SIGNING_ALLOWED=NO
|
||||||
|
|||||||
@@ -31,18 +31,13 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
linux-no-unity:
|
linux-no-unity:
|
||||||
name: Linux no unity build
|
name: Linux no unity build
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-latest
|
||||||
# Cancels previous jobs if the same branch or PR was updated again.
|
# Cancels previous jobs if the same branch or PR was updated again.
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-no-unity-${{ github.event.pull_request.number || github.ref }}
|
group: ${{ github.workflow }}-no-unity-${{ github.event.pull_request.number || github.ref }}
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Free disk space by removing .NET, Android and Haskell
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc
|
|
||||||
|
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
@@ -71,10 +66,6 @@ jobs:
|
|||||||
libqt6positioning6-plugins \
|
libqt6positioning6-plugins \
|
||||||
libqt6positioning6
|
libqt6positioning6
|
||||||
|
|
||||||
- name: Configure repository
|
|
||||||
shell: bash
|
|
||||||
run: ./configure.sh
|
|
||||||
|
|
||||||
- name: Configure ccache
|
- name: Configure ccache
|
||||||
uses: hendrikmuhs/ccache-action@v1.2
|
uses: hendrikmuhs/ccache-action@v1.2
|
||||||
with:
|
with:
|
||||||
@@ -99,7 +90,7 @@ jobs:
|
|||||||
|
|
||||||
linux-matrix:
|
linux-matrix:
|
||||||
name: Linux builds and tests
|
name: Linux builds and tests
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
@@ -111,11 +102,6 @@ jobs:
|
|||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Free disk space by removing .NET, Android and Haskell
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc
|
|
||||||
|
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
@@ -142,10 +128,6 @@ jobs:
|
|||||||
libqt6positioning6-plugins \
|
libqt6positioning6-plugins \
|
||||||
libqt6positioning6
|
libqt6positioning6
|
||||||
|
|
||||||
- name: Configure repository
|
|
||||||
shell: bash
|
|
||||||
run: ./configure.sh
|
|
||||||
|
|
||||||
- name: Configure ccache
|
- name: Configure ccache
|
||||||
uses: hendrikmuhs/ccache-action@v1.2
|
uses: hendrikmuhs/ccache-action@v1.2
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -57,10 +57,6 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install ninja qt@6
|
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install ninja qt@6
|
||||||
|
|
||||||
- name: Configure repository
|
|
||||||
shell: bash
|
|
||||||
run: ./configure.sh
|
|
||||||
|
|
||||||
- name: Configure ccache
|
- name: Configure ccache
|
||||||
uses: hendrikmuhs/ccache-action@v1.2
|
uses: hendrikmuhs/ccache-action@v1.2
|
||||||
with:
|
with:
|
||||||
|
|||||||
9
.github/workflows/android-check.yaml
vendored
@@ -7,6 +7,7 @@ on:
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
|
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
|
||||||
|
SKIP_MAP_DOWNLOAD: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lint:
|
lint:
|
||||||
@@ -22,10 +23,6 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||||
|
|
||||||
- name: Init boost, generate textures
|
|
||||||
shell: bash
|
|
||||||
run: ./configure.sh --skip-map-download
|
|
||||||
|
|
||||||
- name: Lint
|
- name: Lint
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: android
|
working-directory: android
|
||||||
@@ -76,10 +73,6 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||||
|
|
||||||
- name: Init boost, generate textures
|
|
||||||
shell: bash
|
|
||||||
run: ./configure.sh --skip-map-download
|
|
||||||
|
|
||||||
- name: Configure ccache
|
- name: Configure ccache
|
||||||
uses: hendrikmuhs/ccache-action@v1.2
|
uses: hendrikmuhs/ccache-action@v1.2
|
||||||
with:
|
with:
|
||||||
|
|||||||
43
.github/workflows/clang-format.yaml
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
name: clang-format
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
paths:
|
||||||
|
- 'android/app/src/**.java'
|
||||||
|
- '.clang-format'
|
||||||
|
- '.github/workflows/clang-format.yml'
|
||||||
|
pull_request:
|
||||||
|
branches: [ master ]
|
||||||
|
paths:
|
||||||
|
- 'android/app/src/**.java'
|
||||||
|
- '.clang-format'
|
||||||
|
- '.github/workflows/clang-format.yml'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check-formatting:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
continue-on-error: true # TODO(AB): Remove this line when ready to enforce formatting.
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install clang-format
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y clang-format-19
|
||||||
|
clang-format-19 --version
|
||||||
|
|
||||||
|
- name: Check Java formatting
|
||||||
|
run: |
|
||||||
|
JAVA_FILES=($(find android/app/src -name '*.java'))
|
||||||
|
|
||||||
|
FORMATTING_ISSUES=$(clang-format-19 --dry-run --Werror $JAVA_FILES 2>&1 || true)
|
||||||
|
|
||||||
|
if [ -n "$FORMATTING_ISSUES" ]; then
|
||||||
|
echo "$FORMATTING_ISSUES"
|
||||||
|
echo ""
|
||||||
|
echo "To fix formatting, please run:"
|
||||||
|
echo " clang-format -i <file>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
2
.github/workflows/ios-check.yaml
vendored
@@ -37,7 +37,7 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(sysctl -n hw.logicalcpu) * 20))
|
run: git submodule update --depth 1 --init --recursive --jobs=$(($(sysctl -n hw.logicalcpu) * 20))
|
||||||
|
|
||||||
- name: Init boost, download World map, generate textures
|
- name: Configure repository
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./configure.sh
|
run: ./configure.sh
|
||||||
|
|
||||||
|
|||||||
19
.gitignore
vendored
@@ -14,18 +14,24 @@ stxxl.errlog
|
|||||||
stxxl.log
|
stxxl.log
|
||||||
screenlog.0
|
screenlog.0
|
||||||
|
|
||||||
data/styles/*/*/out/*
|
data/symbols/*/design/
|
||||||
data/resources-*_design/*
|
|
||||||
# symbols png/sdf are now generated at build
|
# symbols png/sdf are now generated at build
|
||||||
data/resources-*_*/symbols.png
|
data/symbols/**/symbols.png
|
||||||
data/resources-*_*/symbols.sdf
|
data/symbols/**/symbols.sdf
|
||||||
data/drules_proto_default_design.bin
|
|
||||||
data/colors_design.txt
|
data/colors_design.txt
|
||||||
data/patterns_design.txt
|
data/patterns_design.txt
|
||||||
data/bookmarks
|
data/bookmarks
|
||||||
data/edits.xml
|
data/edits.xml
|
||||||
data/World.mwm
|
data/World.mwm
|
||||||
data/WorldCoasts.mwm
|
data/WorldCoasts.mwm
|
||||||
|
data/world_mwm/*
|
||||||
|
data/*_hash
|
||||||
|
data/drules_proto*
|
||||||
|
data/classificator.txt
|
||||||
|
data/types.txt
|
||||||
|
data/visibility.txt
|
||||||
|
data/colors.txt
|
||||||
|
data/patterns.txt
|
||||||
|
|
||||||
# Compiled Python
|
# Compiled Python
|
||||||
*.pyc
|
*.pyc
|
||||||
@@ -46,8 +52,7 @@ omim.sdf
|
|||||||
*.rc
|
*.rc
|
||||||
!qt/res/windows.rc
|
!qt/res/windows.rc
|
||||||
*.pdb
|
*.pdb
|
||||||
out/*
|
out/
|
||||||
qt/mapswithme.log
|
|
||||||
|
|
||||||
# XCode
|
# XCode
|
||||||
xcode/keys/*
|
xcode/keys/*
|
||||||
|
|||||||
@@ -48,6 +48,8 @@ if (APPLE AND NOT ("${CMAKE_SYSTEM_NAME}" STREQUAL Android))
|
|||||||
set(CMAKE_OBJCXX_VISIBILITY_PRESET hidden)
|
set(CMAKE_OBJCXX_VISIBILITY_PRESET hidden)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
execute_process(COMMAND "./configure.sh" WORKING_DIRECTORY ${OMIM_ROOT})
|
||||||
|
|
||||||
message(STATUS "Using compiler ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
|
message(STATUS "Using compiler ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
|
||||||
|
|
||||||
if (CMAKE_UNITY_BUILD)
|
if (CMAKE_UNITY_BUILD)
|
||||||
@@ -103,12 +105,29 @@ if (${CMAKE_BUILD_TYPE} STREQUAL "Debug")
|
|||||||
elseif (${CMAKE_BUILD_TYPE} MATCHES "Rel")
|
elseif (${CMAKE_BUILD_TYPE} MATCHES "Rel")
|
||||||
add_definitions(-DRELEASE)
|
add_definitions(-DRELEASE)
|
||||||
if (NOT MSVC)
|
if (NOT MSVC)
|
||||||
add_compile_options(-Ofast) # Also enables -ffast-math
|
add_compile_options(-Ofast $<$<CXX_COMPILER_ID:GNU>:-flto=auto>) # Also enables -ffast-math
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
message(FATAL_ERROR "Unknown build type: " ${CMAKE_BUILD_TYPE})
|
message(FATAL_ERROR "Unknown build type: " ${CMAKE_BUILD_TYPE})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (${CMAKE_BUILD_TYPE} STREQUAL "RelWithDebInfo")
|
||||||
|
add_compile_options(-fno-omit-frame-pointer)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Linux GCC LTO plugin fix.
|
||||||
|
if (PLATFORM_LINUX AND (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_BUILD_TYPE MATCHES "^Rel"))
|
||||||
|
# To force errors if LTO was not enabled.
|
||||||
|
add_compile_options(-fno-fat-lto-objects)
|
||||||
|
# To fix ar and ranlib "plugin needed to handle lto object".
|
||||||
|
string(REGEX MATCH "[0-9]+" GCC_MAJOR_VERSION ${CMAKE_CXX_COMPILER_VERSION})
|
||||||
|
file(GLOB_RECURSE plugin /usr/lib/gcc/*/${GCC_MAJOR_VERSION}/liblto_plugin.so)
|
||||||
|
set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> --plugin ${plugin} qcs <TARGET> <OBJECTS>")
|
||||||
|
set(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> --plugin ${plugin} <TARGET>")
|
||||||
|
set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> --plugin ${plugin} qcs <TARGET> <OBJECTS>")
|
||||||
|
set(CMAKE_CXX_ARCHIVE_FINISH "<CMAKE_RANLIB> --plugin ${plugin} <TARGET>")
|
||||||
|
endif()
|
||||||
|
|
||||||
message(STATUS "Build type: " ${CMAKE_BUILD_TYPE})
|
message(STATUS "Build type: " ${CMAKE_BUILD_TYPE})
|
||||||
|
|
||||||
if (PLATFORM_LINUX OR PLATFORM_ANDROID)
|
if (PLATFORM_LINUX OR PLATFORM_ANDROID)
|
||||||
@@ -242,11 +261,15 @@ if (PLATFORM_DESKTOP)
|
|||||||
add_subdirectory(qt)
|
add_subdirectory(qt)
|
||||||
omim_add_tool_subdirectory(skin_generator)
|
omim_add_tool_subdirectory(skin_generator)
|
||||||
endif()
|
endif()
|
||||||
|
if (GENERATOR_TOOL)
|
||||||
|
add_compile_options(-march=native -mtune=native)
|
||||||
|
message(STATUS "target CPU optimizations enabled, produced binaries will NOT work on a different CPU")
|
||||||
|
endif()
|
||||||
add_subdirectory(dev_sandbox)
|
add_subdirectory(dev_sandbox)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
omim_add_test_subdirectory(qt_tstfrm)
|
omim_add_test_subdirectory(qt_tstfrm)
|
||||||
|
|
||||||
if (PLATFORM_ANDROID)
|
if (PLATFORM_ANDROID)
|
||||||
add_subdirectory(android/app/src/main/cpp)
|
add_subdirectory(android/sdk/src/main/cpp)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
See [docs/INSTALL.md](docs/INSTALL.md)
|
See [docs/INSTALL.md](docs/INSTALL.md)
|
||||||
|
|||||||
@@ -53,6 +53,9 @@ A community-led free & open source maps app based on [OpenStreetMap](https://www
|
|||||||
<a href="https://f-droid.org/en/packages/app.comaps.fdroid/">
|
<a href="https://f-droid.org/en/packages/app.comaps.fdroid/">
|
||||||
<img src="docs/badges/fdroid.png" alt="F-Droid" width="160"/>
|
<img src="docs/badges/fdroid.png" alt="F-Droid" width="160"/>
|
||||||
</a>
|
</a>
|
||||||
|
<a href="https://apps.obtainium.imranr.dev/redirect?r=obtainium://add/https://codeberg.org/comaps/comaps">
|
||||||
|
<img src="docs/badges/obtainium.png" alt="Obtainium" width="160"/>
|
||||||
|
</a>
|
||||||
<a href="https://codeberg.org/comaps/comaps/releases">
|
<a href="https://codeberg.org/comaps/comaps/releases">
|
||||||
<img src="docs/badges/codeberg.png" alt="Codeberg" width="160"/>
|
<img src="docs/badges/codeberg.png" alt="Codeberg" width="160"/>
|
||||||
</a>
|
</a>
|
||||||
@@ -122,10 +125,8 @@ You can help by donating, contributing code, translating, or by telling others a
|
|||||||
|
|
||||||
- Build instructions: [docs/INSTALL.md](docs/INSTALL.md)
|
- Build instructions: [docs/INSTALL.md](docs/INSTALL.md)
|
||||||
- Contribution guide: [docs/CONTRIBUTING.md](docs/CONTRIBUTING.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)
|
There is a dedicated [Zulip](https://codeberg.org/comaps/Governance/src/branch/main/contribute.md#3-team-messaging) chat for active contributors.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -160,4 +161,4 @@ MD5: 9cce0ffea281dc2f0e0a154d6d2e281e
|
|||||||
## ⚖️ License
|
## ⚖️ License
|
||||||
|
|
||||||
Licensed under the Apache License 2.0.
|
Licensed under the Apache License 2.0.
|
||||||
See [LICENSE](LICENSE), [NOTICE](NOTICE), and [data/copyright.html](data/copyright.html).
|
See [LICENSE](LICENSE), [NOTICE](NOTICE), and [data/copyright.html](data/copyright.html).
|
||||||
|
|||||||
@@ -18,5 +18,4 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|||||||
libxi-dev \
|
libxi-dev \
|
||||||
optipng
|
optipng
|
||||||
WORKDIR /root/comaps
|
WORKDIR /root/comaps
|
||||||
RUN ./configure.sh
|
|
||||||
CMD ./gradlew -Parm64 assembleFdroidDebug
|
CMD ./gradlew -Parm64 assembleFdroidDebug
|
||||||
|
|||||||
@@ -15,43 +15,17 @@ buildscript {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
|
||||||
google()
|
|
||||||
mavenCentral()
|
|
||||||
maven { url 'https://www.jitpack.io' } // MPAndroidChart
|
|
||||||
}
|
|
||||||
|
|
||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
apply plugin: 'com.github.triplet.play'
|
apply plugin: 'com.github.triplet.play'
|
||||||
apply plugin: 'ru.cian.huawei-publish-gradle-plugin'
|
apply plugin: 'ru.cian.huawei-publish-gradle-plugin'
|
||||||
|
|
||||||
def run(cmd) {
|
|
||||||
def stdout = new ByteArrayOutputStream()
|
|
||||||
exec {
|
|
||||||
commandLine = cmd
|
|
||||||
standardOutput = stdout
|
|
||||||
}
|
|
||||||
return stdout.toString()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
import com.github.triplet.gradle.androidpublisher.ReleaseStatus
|
import com.github.triplet.gradle.androidpublisher.ReleaseStatus
|
||||||
import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform
|
|
||||||
|
|
||||||
def getVersion() {
|
|
||||||
def isWindows = DefaultNativePlatform.getCurrentOperatingSystem().isWindows()
|
|
||||||
def bash = isWindows ? 'C:\\Program Files\\Git\\bin\\bash.exe' : 'bash'
|
|
||||||
def versionCode = Integer.parseInt(run([bash, '../../tools/unix/version.sh', 'android_code']).trim())
|
|
||||||
def versionName = run([bash, '../../tools/unix/version.sh', 'android_name']).trim()
|
|
||||||
return new Tuple2(versionCode, versionName)
|
|
||||||
}
|
|
||||||
|
|
||||||
def getCommitMessage() {
|
def getCommitMessage() {
|
||||||
return run(['git', '--no-pager', 'show', '-s', '--format=%s%n%n%b', 'HEAD']).trim()
|
return run(['git', '--no-pager', 'show', '-s', '--format=%s%n%n%b', 'HEAD']).trim()
|
||||||
}
|
}
|
||||||
|
|
||||||
def osName = System.properties['os.name'].toLowerCase()
|
|
||||||
|
|
||||||
project.ext.appId = 'app.comaps'
|
project.ext.appId = 'app.comaps'
|
||||||
project.ext.appName = 'CoMaps'
|
project.ext.appName = 'CoMaps'
|
||||||
|
|
||||||
@@ -63,7 +37,10 @@ project.ext.appName = 'CoMaps'
|
|||||||
//}
|
//}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace 'app.organicmaps'
|
namespace = 'app.organicmaps'
|
||||||
|
|
||||||
|
// TODO: it should not be here, but in sdk/build.gradle. But for some reason it should be specified here as well.
|
||||||
|
ndkVersion = '28.2.13676358'
|
||||||
|
|
||||||
dependenciesInfo {
|
dependenciesInfo {
|
||||||
// Disables dependency metadata when building APKs (for IzzyOnDroid/F-Droid)
|
// Disables dependency metadata when building APKs (for IzzyOnDroid/F-Droid)
|
||||||
@@ -76,80 +53,32 @@ android {
|
|||||||
dataBinding = true
|
dataBinding = true
|
||||||
buildConfig = true
|
buildConfig = true
|
||||||
}
|
}
|
||||||
// All properties are read from gradle.properties file
|
|
||||||
compileSdk propCompileSdkVersion.toInteger()
|
|
||||||
|
|
||||||
ndkVersion '27.2.12479018'
|
// Users are complaining that the app should be re-downloaded from the Play Store after changing the language.
|
||||||
|
bundle {
|
||||||
|
language {
|
||||||
|
enableSplit = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// All properties are read from gradle.properties file
|
||||||
|
compileSdk = propCompileSdkVersion.toInteger()
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
// Default package name is taken from the manifest and should be app.comaps
|
versionCode = rootProject.ext.versionCode
|
||||||
def ver = getVersion()
|
versionName = rootProject.ext.versionName
|
||||||
versionCode = ver.V1
|
|
||||||
versionName = ver.V2
|
|
||||||
println('Version: ' + versionName)
|
println('Version: ' + versionName)
|
||||||
println('VersionCode: ' + versionCode)
|
println('VersionCode: ' + versionCode)
|
||||||
minSdk propMinSdkVersion.toInteger()
|
minSdk = propMinSdkVersion.toInteger()
|
||||||
targetSdk propTargetSdkVersion.toInteger()
|
targetSdk = propTargetSdkVersion.toInteger()
|
||||||
applicationId project.ext.appId
|
applicationId project.ext.appId
|
||||||
buildConfigField 'String', 'SUPPORT_MAIL', '"android@comaps.app"'
|
buildConfigField 'String', 'SUPPORT_MAIL', '"android@comaps.app"'
|
||||||
// Should be customized in flavors.
|
// Should be customized in flavors.
|
||||||
buildConfigField 'String', 'REVIEW_URL', '""'
|
buildConfigField 'String', 'REVIEW_URL', '""'
|
||||||
|
|
||||||
externalNativeBuild {
|
base.archivesName = appName.replaceAll('\\s','') + '-' + defaultConfig.versionCode
|
||||||
def pchFlag = 'OFF'
|
|
||||||
if (project.hasProperty('pch')) pchFlag = 'ON'
|
|
||||||
|
|
||||||
def njobs = ''
|
ndk.debugSymbolLevel = 'full'
|
||||||
if (project.hasProperty('njobs')) njobs = project.getProperty('njobs')
|
|
||||||
|
|
||||||
def enableVulkanDiagnostics = 'OFF'
|
|
||||||
if (project.hasProperty('enableVulkanDiagnostics')) {
|
|
||||||
enableVulkanDiagnostics = project.getProperty('enableVulkanDiagnostics')
|
|
||||||
}
|
|
||||||
|
|
||||||
def enableTrace = 'OFF'
|
|
||||||
if (project.hasProperty('enableTrace')) {
|
|
||||||
enableTrace = project.getProperty('enableTrace')
|
|
||||||
}
|
|
||||||
|
|
||||||
cmake {
|
|
||||||
cppFlags '-fexceptions', '-frtti'
|
|
||||||
// There is no sense to enable sections without gcc's --gc-sections flag.
|
|
||||||
cFlags '-fno-function-sections', '-fno-data-sections',
|
|
||||||
'-Wno-extern-c-compat'
|
|
||||||
arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=c++_static',
|
|
||||||
"-DOS=$osName", '-DSKIP_TESTS=ON', '-DSKIP_TOOLS=ON', "-DUSE_PCH=$pchFlag",
|
|
||||||
"-DNJOBS=$njobs", "-DENABLE_VULKAN_DIAGNOSTICS=$enableVulkanDiagnostics",
|
|
||||||
"-DENABLE_TRACE=$enableTrace"
|
|
||||||
targets 'organicmaps'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Use, for example, -Parm32 gradle parameter to build only for armeabi-v7a.
|
|
||||||
ndk {
|
|
||||||
abiFilters = new HashSet<>()
|
|
||||||
if (project.hasProperty('arm32') || project.hasProperty('armeabi-v7a')) {
|
|
||||||
abiFilters.add('armeabi-v7a')
|
|
||||||
}
|
|
||||||
if (project.hasProperty('arm64') || project.hasProperty('arm64-v8a')) {
|
|
||||||
abiFilters.add('arm64-v8a')
|
|
||||||
}
|
|
||||||
if (project.hasProperty('x86')) {
|
|
||||||
abiFilters.add('x86')
|
|
||||||
}
|
|
||||||
if (project.hasProperty('x86_64') || project.hasProperty('x64')) {
|
|
||||||
abiFilters.add('x86_64')
|
|
||||||
}
|
|
||||||
if (abiFilters.isEmpty()) {
|
|
||||||
abiFilters.add('armeabi-v7a')
|
|
||||||
abiFilters.add('arm64-v8a')
|
|
||||||
// For the emulator, chromebooks and some Intel Atom devices.
|
|
||||||
abiFilters.add('x86_64')
|
|
||||||
}
|
|
||||||
println('Building for ' + abiFilters + ' archs.')
|
|
||||||
}
|
|
||||||
|
|
||||||
setProperty('archivesBaseName', appName.replaceAll('\\s','') + '-' + defaultConfig.versionCode)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
flavorDimensions += 'default'
|
flavorDimensions += 'default'
|
||||||
@@ -199,10 +128,10 @@ android {
|
|||||||
splits.abi {
|
splits.abi {
|
||||||
boolean enabled = project.hasProperty('splitApk')
|
boolean enabled = project.hasProperty('splitApk')
|
||||||
println ('Create separate apks: ' + enabled)
|
println ('Create separate apks: ' + enabled)
|
||||||
enable enabled
|
enable = enabled
|
||||||
reset()
|
reset()
|
||||||
include 'x86', 'armeabi-v7a', 'arm64-v8a', 'x86_64'
|
include 'x86', 'armeabi-v7a', 'arm64-v8a', 'x86_64'
|
||||||
universalApk true
|
universalApk = true
|
||||||
}
|
}
|
||||||
|
|
||||||
lint {
|
lint {
|
||||||
@@ -215,7 +144,7 @@ android {
|
|||||||
disable 'CustomSplashScreen'
|
disable 'CustomSplashScreen'
|
||||||
// https://github.com/organicmaps/organicmaps/issues/3610
|
// https://github.com/organicmaps/organicmaps/issues/3610
|
||||||
disable 'InsecureBaseConfiguration'
|
disable 'InsecureBaseConfiguration'
|
||||||
abortOnError true
|
abortOnError = true
|
||||||
}
|
}
|
||||||
|
|
||||||
gradle.projectsEvaluated {
|
gradle.projectsEvaluated {
|
||||||
@@ -274,33 +203,29 @@ android {
|
|||||||
debug {
|
debug {
|
||||||
applicationIdSuffix '.debug' // Allows to install debug and release builds together
|
applicationIdSuffix '.debug' // Allows to install debug and release builds together
|
||||||
versionNameSuffix '-debug'
|
versionNameSuffix '-debug'
|
||||||
jniDebuggable true // Enable jni debug build
|
|
||||||
zipAlignEnabled true
|
zipAlignEnabled true
|
||||||
signingConfig signingConfigs.debug
|
signingConfig = signingConfigs.debug
|
||||||
resValue 'string', 'app_name', 'CoMaps Debug'
|
resValue 'string', 'app_name', 'CoMaps Debug'
|
||||||
// Do not generate separate debug symbols for debug apps, because we don't distribute them.
|
|
||||||
ndk.debugSymbolLevel = 'none'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
release {
|
release {
|
||||||
if (taskName.contains('release')) {
|
if (taskName.contains('release')) {
|
||||||
if (secureReleasePropertiesFileExists) {
|
if (secureReleasePropertiesFileExists) {
|
||||||
println('Using RELEASE signing keys from secure.properties.release')
|
println('Using RELEASE signing keys from secure.properties.release')
|
||||||
signingConfig signingConfigs.release
|
signingConfig = signingConfigs.release
|
||||||
} else {
|
} else {
|
||||||
println('NO RELEASE signing keys found')
|
println('NO RELEASE signing keys found')
|
||||||
println('Using DEBUG signing keys')
|
println('Using DEBUG signing keys')
|
||||||
signingConfig signingConfigs.debug
|
signingConfig = signingConfigs.debug
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
minifyEnabled true
|
minifyEnabled true
|
||||||
shrinkResources true
|
shrinkResources = true
|
||||||
// Includes the default ProGuard rules files that are packaged with the Android Gradle plugin.
|
// 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.
|
// To learn more, go to the documentation section about R8 configuration files.
|
||||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||||
resValue 'string', 'app_name', project.ext.appName
|
resValue 'string', 'app_name', project.ext.appName
|
||||||
// Full size symbols are too big for Google, 217mb aab vs 95mb.
|
|
||||||
ndk.debugSymbolLevel = 'symbol_table'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
beta {
|
beta {
|
||||||
@@ -309,37 +234,27 @@ android {
|
|||||||
if (taskName.contains('beta')) {
|
if (taskName.contains('beta')) {
|
||||||
if (secureTestPropertiesFileExists) {
|
if (secureTestPropertiesFileExists) {
|
||||||
println('Using TEST signing keys from secure.properties.test')
|
println('Using TEST signing keys from secure.properties.test')
|
||||||
signingConfig signingConfigs.test
|
signingConfig = signingConfigs.test
|
||||||
} else {
|
} else {
|
||||||
println('NO TEST signing keys found')
|
println('NO TEST signing keys found')
|
||||||
println('Using DEBUG signing keys')
|
println('Using DEBUG signing keys')
|
||||||
signingConfig signingConfigs.debug
|
signingConfig = signingConfigs.debug
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
minifyEnabled true
|
minifyEnabled true
|
||||||
shrinkResources true
|
shrinkResources = true
|
||||||
// Includes the default ProGuard rules files that are packaged with the Android Gradle plugin.
|
// 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.
|
// To learn more, go to the documentation section about R8 configuration files.
|
||||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||||
matchingFallbacks = ['release'] // use dependencies of "release" build type
|
matchingFallbacks = ['release'] // use dependencies of "release" build type
|
||||||
resValue 'string', 'app_name', 'CoMaps Test'
|
resValue 'string', 'app_name', 'CoMaps Test'
|
||||||
// Full size symbols are too big for Google, 217mb aab vs 95mb.
|
|
||||||
ndk.debugSymbolLevel = 'symbol_table'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
externalNativeBuild {
|
|
||||||
cmake {
|
|
||||||
version '3.22.1+'
|
|
||||||
buildStagingDirectory './nativeOutputs'
|
|
||||||
path '../../CMakeLists.txt'
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// We don't compress these extensions in assets/ because our random FileReader can't read zip-compressed files from apk.
|
// We don't compress these extensions in assets/ because our random FileReader can't read zip-compressed files from apk.
|
||||||
// TODO: Load all minor files via separate call to ReadAsString which can correctly handle compressed files in zip containers.
|
// TODO: Load all minor files via separate call to ReadAsString which can correctly handle compressed files in zip containers.
|
||||||
androidResources {
|
androidResources {
|
||||||
ignoreAssetsPattern '!.svn:!.git:!.DS_Store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~'
|
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']
|
noCompress = ['txt', 'bin', 'html', 'png', 'json', 'mwm', 'ttf', 'sdf', 'ui', 'config', 'csv', 'spv', 'obj']
|
||||||
localeFilters += [
|
localeFilters += [
|
||||||
"af",
|
"af",
|
||||||
@@ -396,7 +311,7 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
coreLibraryDesugaringEnabled true
|
coreLibraryDesugaringEnabled = true
|
||||||
|
|
||||||
sourceCompatibility JavaVersion.VERSION_17
|
sourceCompatibility JavaVersion.VERSION_17
|
||||||
targetCompatibility JavaVersion.VERSION_17
|
targetCompatibility JavaVersion.VERSION_17
|
||||||
@@ -404,6 +319,8 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
implementation project(':sdk')
|
||||||
|
|
||||||
coreLibraryDesugaring libs.android.tools.desugar
|
coreLibraryDesugaring libs.android.tools.desugar
|
||||||
|
|
||||||
// Google Play Location Services
|
// Google Play Location Services
|
||||||
@@ -449,10 +366,6 @@ dependencies {
|
|||||||
testImplementation libs.mockito.core
|
testImplementation libs.mockito.core
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.withType(JavaCompile) {
|
|
||||||
options.compilerArgs << '-Xlint:unchecked' << '-Xlint:deprecation'
|
|
||||||
}
|
|
||||||
|
|
||||||
android.applicationVariants.all { variant ->
|
android.applicationVariants.all { variant ->
|
||||||
def authorityValue = variant.applicationId + ".provider"
|
def authorityValue = variant.applicationId + ".provider"
|
||||||
def authority = "\"" + authorityValue + "\""
|
def authority = "\"" + authorityValue + "\""
|
||||||
@@ -500,3 +413,7 @@ huaweiPublish {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tasks.withType(JavaCompile).configureEach {
|
||||||
|
options.compilerArgs << '-Xlint:unchecked' << '-Xlint:deprecation'
|
||||||
|
}
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 7.1 KiB |
|
Before Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 97 KiB |
@@ -1 +0,0 @@
|
|||||||
../../../../google/java/app/organicmaps/location
|
|
||||||
1
android/app/src/fdroid/java/app/organicmaps/sdk/location
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../../../../../google/java/app/organicmaps/sdk/location
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Navegació intuïtiva - Descobreix el teu camí - El poder de la comunitat
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
Una aplicación de mapas gratuita y de código abierto liderada por la comunidad, basada en los datos de OpenStreetMap y reforzada con un compromiso con la transparencia, la privacidad y la ausencia de fines de lucro. CoMaps es un fork o derivado de Organic Maps, que a su vez es un fork de Maps.ME.
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
Lee más sobre los motivos del proyecto y su dirección en <b><i>codeberg.org/comaps</i></b>.
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
Únete allí a la comunidad y ayuda a crear la mejor app de mapas
|
||||||
|
|
||||||
|
• Usa la aplicación y corre la voz sobre ella
|
||||||
|
|
||||||
|
• Envía comentarios y reporta problemas
|
||||||
|
|
||||||
|
• Actualiza los datos del mapa en la app o en el sitio web de OpenStreetMap
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
‣ <b>Enfocada en el uso sin conexión</b>: Planifica y navega tus viajes sin necesidad de conexión móvil, busca puntos de paso en rutas remotas, etc. Todas las funciones están diseñadas para funcionar sin conexión.
|
||||||
|
|
||||||
|
‣ <b>Respeta tu Privacidad</b>: La app está diseñada pensando en tu privacidad: no identifica personas, no rastrea y no recoge datos personales. Sin publicidad.
|
||||||
|
|
||||||
|
‣ <b>Sencilla y Pulida</b>: funciones esenciales fáciles de usar que simplemente funcionan.
|
||||||
|
|
||||||
|
‣ <b>Ahorra Batería y Espacio</b>: No consume la batería como otras apps de navegación. Los mapas compactos ahorran espacio valioso en tu teléfono.
|
||||||
|
|
||||||
|
‣ <b>Gratuita y Creada por la Comunidad</b>: Personas como tú ayudaron a construir la app añadiendo lugares a OpenStreetMap, probando funciones, dando opiniones y contribuyendo con desarrollo o financiación.
|
||||||
|
|
||||||
|
‣ <b>Toma de decisiones y finanzas abiertas y transparentes, sin ánimo de lucro y completamente de código abierto.</b>
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<b>Funciones Principales</b>:
|
||||||
|
|
||||||
|
• Mapas detallados descargables con lugares que no aparecen en Google Maps
|
||||||
|
|
||||||
|
• Modo exterior con rutas de senderismo destacadas, campings, fuentes de agua, picos, curvas de nivel, etc.
|
||||||
|
|
||||||
|
• Caminos peatonales y carriles bici
|
||||||
|
|
||||||
|
• Puntos de interés como restaurantes, gasolineras, hoteles, tiendas, lugares turísticos y muchos más
|
||||||
|
|
||||||
|
• Búsqueda por nombre, dirección o categoría de punto de interés
|
||||||
|
|
||||||
|
• Navegación con indicaciones por voz para caminar, ir en bici o conducir
|
||||||
|
|
||||||
|
• Guarda tus lugares favoritos con un solo toque
|
||||||
|
|
||||||
|
• Artículos de Wikipedia sin conexión
|
||||||
|
|
||||||
|
• Capa de transporte subterráneo y rutas
|
||||||
|
|
||||||
|
• Grabación de rutas
|
||||||
|
|
||||||
|
• Exporta e importa favoritos y rutas en formatos KML, KMZ y GPX
|
||||||
|
|
||||||
|
• Modo oscuro para usar de noche
|
||||||
|
|
||||||
|
• Mejora los datos del mapa para todos usando un editor básico integrado
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<b>La Libertad Está Aquí</b>
|
||||||
|
|
||||||
|
Descubre tu camino, navega el mundo con privacidad y con la comunidad como prioridad.
|
||||||
@@ -6,4 +6,4 @@
|
|||||||
• se muestra el estado de horarios de apertura al seleccionar un POI
|
• se muestra el estado de horarios de apertura al seleccionar un POI
|
||||||
• se dividen los humedales en tipos distintos
|
• se dividen los humedales en tipos distintos
|
||||||
• se actualiza la vegetación y otros colores del mapa, así como otros iconos
|
• se actualiza la vegetación y otros colores del mapa, así como otros iconos
|
||||||
• exteriores: líneas de contorno de altitud más gruesas
|
• exteriores: líneas de contorno de altitud más gruesas
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
Navegación de mapa fácil - Descubre más en tu camino - Creado por la comunidad
|
||||||
1
android/app/src/fdroid/play/listings/es-ES/title.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
CoMaps - Senderismo, ciclismo y conducción offline
|
||||||
@@ -1 +1 @@
|
|||||||
Navigation cartographique facile - Découvrez davantage de votre voyage - Propulsé par la communauté
|
Navigation cartographique facile - Vivez de grands voyages - Propulsé par la communauté
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
Könnyű térképes navigáció - Fedezz fel többet az útjaidról - A közösség erejével
|
||||||
@@ -6,4 +6,4 @@ Apresentamos o logo do CoMaps!
|
|||||||
• Exibição de horário de funcionamento ao selecionar um ponto de interesse
|
• Exibição de horário de funcionamento ao selecionar um ponto de interesse
|
||||||
• Divididas áreas úmidas em vários tipos distintos
|
• Divididas áreas úmidas em vários tipos distintos
|
||||||
• Atualizada cores/ícones para vegetação e outros elementos
|
• Atualizada cores/ícones para vegetação e outros elementos
|
||||||
• Ar livre: curvas de nível de altitude mais destacadas
|
• Ar livre: curvas de nível de altitude mais destacadas
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
CoMaps - Mapas com Privacidade
|
CoMaps - Mapas e Navegação Offline com Privacidade
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
Navegação fácil nos mapas - Descubra mais sobre o seu percurso - Feito por todos
|
||||||
1
android/app/src/fdroid/play/listings/pt-PT/title.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
CoMaps - Mapas e Navegação - Offline e Privada
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/ar/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/az-AZ/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/be/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/bg/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/bn-BD/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/ca/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/cs-CZ/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/da-DK/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/el-GR/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/et/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/eu-ES/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/fa/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/fi-FI/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/gl-ES/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/gu/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/hi-IN/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/hr/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/hu-HU/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/id/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/it-IT/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/iw-IL/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/ja-JP/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/ka-GE/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/kk/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/km-KH/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/kn-IN/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/ko-KR/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/lo-LA/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/lt/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/lv/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/mk-MK/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/ml-IN/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/mr-IN/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/ms/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/ne-NP/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/nl-NL/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/no-NO/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/pl-PL/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/pt-BR/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/pt-PT/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/ro/release-notes.txt
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../listings/si-LK/release-notes.txt
|
|
||||||