Android: publish the app on F-Droid #33
Labels
No labels
Accessibility
Accessibility
Address
Address
Android
Android
Android Auto
Android Auto
Android Automotive (AAOS)
Android Automotive (AAOS)
API
API
AppGallery
AppGallery
AppStore
AppStore
Battery and Performance
Battery and Performance
Blocker
Blocker
Bookmarks and Tracks
Bookmarks and Tracks
Borders
Borders
Bug
Bug
Build
Build
CarPlay
CarPlay
Classificator
Classificator
Community
Community
Core
Core
CrashReports
CrashReports
Cycling
Cycling
Desktop
Desktop
DevEx
DevEx
DevOps
DevOps
dev_sandbox
dev_sandbox
Directions
Directions
Documentation
Documentation
Downloader
Downloader
Drape
Drape
Driving
Driving
Duplicate
Duplicate
Editor
Editor
Elevation
Elevation
Enhancement
Enhancement
Epic
Epic
External Map Datasets
External Map Datasets
F-Droid
F-Droid
Fonts
Fonts
Frequently User Reported
Frequently User Reported
Fund
Fund
Generator
Generator
Good first issue
Good first issue
Google Play
Google Play
GPS
GPS
GSoC
GSoC
iCloud
iCloud
Icons
Icons
iOS
iOS
Legal
Legal
Linux Desktop
Linux Desktop
Linux packaging
Linux packaging
Linux Phone
Linux Phone
Mac OS
Mac OS
Map Data
Map Data
Metro
Metro
Navigation
Navigation
Need Feedback
Need Feedback
Night Mode
Night Mode
NLnet 2024-06-281
NLnet 2024-06-281
No Feature Parity
No Feature Parity
Opening Hours
Opening Hours
Outdoors
Outdoors
POI Info
POI Info
Privacy
Privacy
Public Transport
Public Transport
Raw Idea
Raw Idea
Refactoring
Refactoring
Regional
Regional
Regression
Regression
Releases
Releases
RoboTest
RoboTest
Route Planning
Route Planning
Routing
Routing
Ruler
Ruler
Search
Search
Security
Security
Styles
Styles
Tests
Tests
Track Recording
Track Recording
Translations
Translations
TTS
TTS
UI
UI
UX
UX
Walk Navigation
Walk Navigation
Watches
Watches
Web
Web
Wikipedia
Wikipedia
Windows
Windows
Won't fix
Won't fix
World Map
World Map
No milestone
No project
No assignees
2 participants
Due date
No due date set.
Dependencies
No dependencies set.
Reference: organicmaps/organicmaps-tmp#33
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This OSS project should meet F-Droid guidelines.
F-Droid maintainer here.
Kudos for starting this fork!
F-Droid main repo includes only free software. OMaps in its current shape is not free because of those Gradle plugins:
and those libraries:
I personally would love to see all this removed and can help with F-Droid inclusion then.
Is it possible to make a gradle flavor without these dependencies?
Just checked the snapshot tagged as 2021-05-08. The good news is that I managed to build it without proprietary dependencies in the F-Droid environment! There are still a few issues left.
A major issue: missing
private.h
. OMaps just crashes because of missing server URLs. You should either fill all the constants to make OMaps work out-of-the-box or allow users to configure them on start. F-Droid does not sign up for keeping any "secrets" like API keys.And a few minor notes:
getVersion()
inbuild.gradle
). This won't work in F-Droid, versionName and versionCode must be constant across multiplegradle
runs.googleFirebaseServicesEnabled
andgoogleMobileServicesEnabled
make no sense for us as we still remove references to non-free Gradle plugins and libraries to avoid their downloading and accidental use. If those conditions were added only for F-Droid, you can safely drop them to simplify build.gradle.Hey @relan, thank you for your work making F-Droid package real. I took a look at F-Droid scripts, but I didn't have time to finish this work.
You are right,
googleFirebaseServicesEnabled
andgoogleMobileServicesEnabled
flags were added especially for F-Droid. Please note that these flags not only remove Google/Firebases libraries, but also override some Java sources. For example,googleMobileServicesEnabled
enables enhanced implementation of LocationProvider which relies both on GPS and Google data. F-Droid users will wait for location 5-10 minutes instead of 5-10 sec, but I hope that it is an informed choice.Please feel free to send PRs to this repo instead of patching our build.gradle from the build scripts. You can add an optional parameter to disable automatic version generation and use this flag from F-Droid scripts.
@relan, it would be nice if you could combine @linsui, my and your changes into a new MR to fdroiddata. We are busy with fixing the codebase itself.
Thank you for your work, just to clarify: With UnifiedNlp, MicroG provides a google free reimplementation to use GPS + cell/wifi data from e.g. Mozilla (well supported by F-Droid). Afaik, this can even be used on non rooted phones. Will Organicmaps use that within the F-Droid build, too? I have also installed the APK of Organicmaps from Github on a Google services free Android with UnifiedNLP and showing the current location works very well.
GitHub APK HAS Google Services included.
But F-Droid wants us to remove these services for some unknown reason.
We are added to such option to meet requirements.
On Mon, May 10, 2021 at 4:46 PM Gerion Entrup @.***>
wrote:
--
WBR,
Roman Tsisyk @.***>
He was referring to microG allowing the use of generic location services via UnifiedNLP, instead of dependent on Google's specific one. This would be much faster and more accurate at obtaining location than relying on simply GPS.
Sure.
Once you release a stable version, it'll have a fixed version name and version code, won't it?
Sure, don't spend your time making a recipe for F-Droid, we'll do that.
We keep only free software in our main repository, i.e. all parts of an app must be free. The com.google.android.gms:* libraries are proprietary, so they have to be excluded.
Could you comment about the missing
private.h
?We are happy with the automatic version generation. It gets the version number from the last git commit, i.e. version generation is deterministic. Do you have better ideas?
private.h
is created by./configure.sh
or you can just copyprivate_default.h
toprivate.h
. The only missing part is the server address. The traffic is expensive and we did't want other forks to parasite on our infrastructure. The current plan is to create a new URL especially for F-Droid. This URL will be included to the main repository and enabled by default.Fixed version name/code better fit our workflow, but it makes little sense to introduce them specifically for F-Droid. We can force any version name/code in our recipe.
OK, will wait until this happens because builds without this URL are useless. Thanks!
organicmaps/organicmaps#398
@relan do you need any help with F-Droid integration? Please contact us via TG, Email or here if you have some problems.
Everything's OK now, thanks a lot for your help! Here is a recipe: https://gitlab.com/relan/fdroiddata/-/blob/omaps/metadata/app.organicmaps.yml
Waiting for a stable release.
Wre are updating applicationId to app.organicmaps. This change is already in master. A new version will be tagged after merging pending PR. Google ask us to remove mandatory location permission.
Hey @relan, you could start integrating 2021-05-21 into the main F-Droid repository. We will publish this release as soon as it reaches Google Play. Probably tomorrow. This release already have a new applicationId.
Done:
2360a00d7a
. Will be available in a few days.We're finally there! Thanks a lot!
Available on F-Droid now: https://f-droid.org/packages/app.organicmaps/
Note that new versions have to be added manually: automatic detection works only when version code and version name are defined as literals.
Thanks for this !!
We need a big button on website nom ;)
@relan how to update the app? What should be done to get automatic updates? Could you please show me a script which parses build.gradle to get version?
Through merge requests to https://gitlab.com/fdroid/fdroiddata.
Define version name and version code as literals in build.gradle or AndroidManifest.xml:
That's because build.gradle is a program that can do any kind of nasty things, we cannot run it without isolation. But spawning 3161 VMs every day to check for updates is not feasible. So, we rely on static parsing only.
The entry point is here: https://gitlab.com/fdroid/fdroidserver/-/blob/master/fdroidserver/checkupdates.py
Manual updates should be fine for now. Hardcoding versions into the manifest is not convenient for other stores.
OK, created https://gitlab.com/fdroid/fdroiddata/-/merge_requests/9126
I think we can define a static version name and code as literals in build.gradle, but override this version later dynamically. I don't see any problems bumping version on every release (=tag), but we also want dynamic versions for every commit.
This ticket is done, I'm closing it for the planning purposes, but we can continue discussion here.
The update problem just came up in organicmaps/organicmaps#818 (comment). And I have to say, especially given your update schedule (quite fast), manual updates are really not a future-proof way IMHO.
For more information, see https://f-droid.org/en/docs/FAQ_-_App_Developers/#do-i-need-to-tell-you-when-i-update
AFAIK you can choose another update mode based on git tags, e.g. instead, if that better suits.
Or shall I open a new issue for that?
Finally opened a new issue about automating this: organicmaps/organicmaps#825