FDroid release
Are you planning an fdroid release?
Yes, but have not time to study how to do that. In any case you can download apk directly from beta.librera.mobi or archive.librera.mobi
Yeah that's what I'm doing just now, I was just wondering about the future for updating and things.
Thanks for the quick response, I'm glad things are going well for you with this :-)
F-Droid maintainer here. Unfortunately, we've run into a lot of problems, so we currently cannot build this app:
- Plenty of JAR files:
- https://github.com/foobnix/LirbiReader/blob/master/EBookDroid/libs/
- https://github.com/foobnix/LirbiReader/blob/master/Builder/libs/
- build instructions require to download lots more google play services jars
(see here for details)
Both violates our inclusion citeria. Is there a chance to solve that, @foobnix?
Both violates our inclusion citeria. Is there a chance to solve that, @foobnix?
Sorry but my app can't work without those jars and google play libraries.
Thanks for your answer, though it is not what we had hoped for. I'll then have to close the RFP at F-Droid, as we cannot build this app in this situation.
By the way, there probably would be a way around those JARs: most of them seem to come from free software projects, so those could possibly be included as git submodules. But no such thing for the Google Play stuff. Just wondering why an eBook reader should depend on such? What is it you need from GMS that is essential? Seeing the my-google-play-services-fake directory, would such a substitute (provided e.g. via a separate build flavor) really cut off too much functionality?
Google Play stuff. Just wondering why an eBook reader should depend on such?
Yes, my app used a lot third party components, like Recycle View or Card View All of the Google stuff you can see in this file https://github.com/foobnix/LibreraReader/blob/master/update_all.sh
Seeing the
my-google-play-services-fakedirectory, would such a substitute (provided e.g. via a separate build flavor) really cut off too much functionality?
Yes, this flow for PRO version without Ads (cut the ads functionality :)
You can build an app without google play ads using this dependency project.
If you are ok with all of this dependencies, I can help you write the build script that can in one click download and prepare apk for PRO version or you can take it here https://github.com/foobnix/LibreraReader/releases
Ivan
Thanks, @foobnix! I've asked our "integrators" to check. To me this looks as if it could work – but never having built a single app, I cannot tell for sure.
PRO version is without play-services, I don't see other violations
Neither do I (if it is OK for you that we have it in F-Droid). Just thinking about "too complex builds" concerning those libraries, but as a non-dev I hardly can tell. @rudloff could throw in his opinion, that would be more important than mine here.
Even if we can build a version without Play services, there is still the problem of the multiple prebuilt JARs. We need to either:
- Build these libraries from source.
- Fetch them from a standard Maven repository like Maven Central or jCenter.
I will prepare build script that also fetch libraries from maven.
Cool, thanks! Best would AFAIK be Maven Central or JCenter. Note that not all maven repos are "trusted" by F-Droid. There's a list somewhere in the code of fdroidserver… Ah, here it is:
allowed_repos = [re.compile(r'^https?://' + re.escape(repo) + r'/*') for repo in [
'repo1.maven.org/maven2', # mavenCentral()
'jcenter.bintray.com', # jcenter()
'jitpack.io',
'www.jitpack.io',
'repo.maven.apache.org/maven2',
'oss.jfrog.org/artifactory/oss-snapshot-local',
'oss.sonatype.org/content/repositories/snapshots',
'oss.sonatype.org/content/repositories/releases',
'oss.sonatype.org/content/groups/public',
'clojars.org/repo', # Clojure free software libs
's3.amazonaws.com/repo.commonsware.com', # CommonsWare
'plugins.gradle.org/m2', # Gradle plugin repo
'maven.google.com', # Google Maven Repo, https://developer.android.com/studio/build/dependencies.html#google-maven
]
]
Uh, and forget about the s? in the regex, must be https :wink:
@Rudloff @IzzySoft Please find build script for fdroid https://github.com/foobnix/LibreraReader/tree/master/Builder/fdroid it will build APK to the folder fdroid/release
I have also added (get jars from maven) https://github.com/foobnix/LibreraReader/blob/master/Builder/update_jars.sh
it looks like repo.spring.io and github.com is missing in your allow jars list
It looks like okhttp-digest is also available on jCenter: https://jcenter.bintray.com/com/burgstaller/okhttp-digest/1.18/okhttp-digest-1.18.jar And CloudRail on Maven Central: https://repo1.maven.org/maven2/com/cloudrail/cloudrail-si-android/2.22.4/cloudrail-si-android-2.22.4.aar
@Rudloff I have fix update_jar.sh script Is it something else I can help with publishing my app on fdroid?
Another problem is that the dandar3 repositories you are using contain prebuilt JARs and we don't allow that (we have no way to know if the libraries have been modified). Would it be possible to get them from Google's repository (or build them from source but that might be too much work)?
Overall, I think it would be easier if you were using a package manager like Maven or Gradle.
I also noticed that cloudrail-si-android is not open source, so we can't include it. (But I'm a bit surprised, I thought Maven Central contained open source libraries.)
@Rudloff @IzzySoft I have migrated the project to AndroidStudio Please find "fdroid" flavor in the gradle build The fdroid is without ads and without Cloudrail Ivan
Thanks @foobnix! But now we have another problem:
betaImplementation 'com.google.android.gms:play-services-ads:16.0.0'
libreraImplementation 'com.google.android.gms:play-services-ads:16.0.0'
pdf_v2Implementation 'com.google.android.gms:play-services-ads:16.0.0'
ebookaImplementation 'com.google.android.gms:play-services-ads:16.0.0'
tts_readerImplementation 'com.google.android.gms:play-services-ads:16.0.0'
pdf_classicImplementation 'com.google.android.gms:play-services-ads:16.0.0'
GMS is proprietary, and not permitted in F-Droid. Could you make a build flavor coming without that? Further I'm not sure about Cloudrail. I vaguely remember issues with that; @Rudloff might be able to tell.
@IzzySoft There is a fdroid flavor that does not contain play-services-ads or cloudrail-si-android (somethingImplementation is only triggered when using the something flavor).
@Rudloff I just wondered as the quoted part seems to be in the "general" dependencies block. I assume the "prefix" on the "implementation" keyword (e.g. "betaImplementation" → "beta") then does address the flavor – so only "fdroidImplementation" applies to the fdroid flavor, correct? In that case: 🙊 – and thanks for the hint!
@Rudloff @IzzySoft Is it something else you need from my side to publish the app?
@Rudloff @IzzySoft I have updated readme how to build mudpf
/Builder/link_to_mupdf_1.11.sh (Change the paths to mupdf and jniLibs) ./gradlew assebleFdroidRelease
Thanks @foobnix! For build relevant things, I can't answer – Pierre must say.
I tried building 01d24f80029cb31c4d43a8ac175ffbb718d83cad and using Gradle definitely makes it easier for us, thanks!
However, I have another problem. We remove binary files before build and link_to_mupdf_1.11.sh seems to fail because we removed Builder/jni-1.11/simd/i386/lib/jsimd_i386.a:
DEBUG: buildserver > Android NDK: ERROR:jni/simd/Android.mk:simd_i386: LOCAL_SRC_FILES points to a missing file
DEBUG: buildserver > Android NDK: Check that jni/simd/i386/lib/jsimd_i386.a exists or that its path is correct
I see the cource for this library is in the repository, but I'm not sure how to build it.
@Rudloff please find an updated build (included sources of simd)
I tried 9ec9df1e2cb16214ab8d0bcef23ab5990d5a6580 and now the NDK stuff builds correctly, but I get this error:
DEBUG: buildserver > Execution failed for task ':app:processFdroidReleaseManifest'.
DEBUG: buildserver > > Manifest merger failed : uses-sdk:minSdkVersion 14 cannot be smaller than version 16 declared in library [:pro] /home/vagrant/build/com.foobnix.pro.pdf.reader/pro/build/intermediates/library_manifest/release/AndroidManifest.xml as the library might be using APIs not available in 14
DEBUG: buildserver > Suggestion: use a compatible library with a minSdk of at most 14,
DEBUG: buildserver > or increase this project's minSdk version to at least 16,
DEBUG: buildserver > or use tools:overrideLibrary="com.foobnix.pdf.pro" to force usage (may lead to runtime failures)
@Rudloff Please try the final commit ( I have added minSdkVersion 16 to fdroid)
a1d97d860c8b35174c3e14429ee63f62d39e2e12 now builds correctly, thanks! I think we have everything we need. Feel free to ping me when you tag a new release and we will try to publish it.
@Rudloff @IzzySoft Please make the first Droid release of Librera PRO 8.0.39 UPD. Is it FDroid support many apk for the different type of CPU (like Google play) or you publish only one apk? (You can make universal apk in this case but with 4x bigger size)