Open sdfg2 opened 6 years ago
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:
(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-fake
directory, 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:
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)
@Rudloff @IzzySoft Is there any news about Librera release on F-Droid?
The merge request is still waiting for someone to review it: https://gitlab.com/fdroid/fdroiddata/merge_requests/4560
Someone with build experience at that, which is why I am out.
Looks like you guys made this happen. I knew I would see @IzzySoft at the forefront helping this along. Another great app in the F-Droid repo. Thanks, everyone and @foobnix
@IzzySoft @esmoak Thanks for the help and for the first F-Droid release. It would be good if the F-Droid can divide apks by CPU architecture to reduce apk size in 4 times
I am working on a new update and will give more info to you soon.
Yes, that would be great – but I don't know if the build process supports that (not my area of proficience: I have no build experience and thus rather focus on the metadata). Can't hurt to ask, though (just not me :laughing: – @Rudloff might know).
We can build a separate APK for each architecture but they will need to have different version codes (and we probably need to add a separate Builds:
entry for each APK).
@Rudloff @IzzySoft Please update Librera PRO 8.1.179
You should remove google services from the file 1) LibreraReader/build.gradle //F-DROID REMOVE THIS LINE classpath 'com.google.gms:google-services:4.2.0'
and from 2) LibreraReader/app/build.gradle
//F-DROID REMOVE THIS LINES BEGIN implementation 'com.google.android.gms:play-services-auth:16.0.1'
implementation 'com.google.http-client:google-http-client-gson:1.28.0'
implementation('com.google.api-client:google-api-client-android:1.28.0') {
exclude group: 'org.apache.httpcomponents'
}
implementation('com.google.apis:google-api-services-drive:v3-rev156-1.25.0') {
exclude group: 'org.apache.httpcomponents'
}
//F-DROID REMOVE THIS LINES END
and
//F-DROID REMOVE THIS LINE apply plugin: 'com.google.gms.google-services'
I can't (no build experience at all), so waiting for Pierre.
@Rudloff @IzzySoft Hi, why don't you update Librera build on F-Droid? Now you can make a build with new Mupdf 1.16.1 Ivan
@foobnix Please see the comment exactly before your last: no use in pinging me for this, I cannot do a thing about it. Currently, auto-update is NOT enabled, and cannot be, because. Our update checker cannot work with variables or function calls, it just performs RegEx matching (and thus needs static values for versionName
and versionCode
).
Until that is solved, you'd need to open an MR for each new release – or an issue asking someone else to do that (I just checked, and see neither open for Librera – so that answers the question why there are no updates built). Both of course will always cause delays, so the best approach would be getting auto-update-check working.
Further technical questions are better directed at one of our packagers, I cannot answer them for the reason mentioned above, sorry.
@IzzySoft Thank you for information, I have changed the Gradle build file for automatic updates. Now you don't need to apply any Regexp, remove lines etc.
F-Droid release with static variables and universal apk
but change to use Mupdf 1.16.1 (not 1.11)
all-fdroid.sh
./link_to_mupdf_1.16.1.sh
./gradlew clean assembleFdroidRelease
Again, not me (I'm no packager). And unless I'm looking at the wrong branch, build.gradle
still uses variables for versionName
and versionCode
– so we still cannot enable automated update checks.
@IzzySoft @Rudloff Please see in the build file in the header for fdroid is static variables else{ codeNumber = 3200 versionNumber = "8.1.269" db = 8 }
I confirm auto update does not work for this app. It gets the wrong version:
DEBUG: Check tag: '8.1.269'
DEBUG: Directory: build/com.foobnix.pro.pdf.reader
DEBUG: > git rev-parse --show-toplevel
DEBUG: Directory: build/com.foobnix.pro.pdf.reader
DEBUG: > git submodule foreach --recursive git reset --hard
DEBUG: Directory: build/com.foobnix.pro.pdf.reader
DEBUG: > git submodule foreach --recursive git clean -dffx
DEBUG: Directory: build/com.foobnix.pro.pdf.reader
DEBUG: > git checkout -f 8.1.269
DEBUG: Directory: build/com.foobnix.pro.pdf.reader
DEBUG: > git clean -dffx
DEBUG: Parsing manifest at 'build/com.foobnix.pro.pdf.reader/build.gradle'
DEBUG: ..got package=None, version=None, vercode=None
DEBUG: Parsing manifest at 'build/com.foobnix.pro.pdf.reader/pro/src/main/AndroidManifest.xml'
DEBUG: ..got package=None, version=None, vercode=None
DEBUG: Parsing manifest at 'build/com.foobnix.pro.pdf.reader/pro/build.gradle'
DEBUG: ..got package=None, version=1.0, vercode=1
DEBUG: Parsing manifest at 'build/com.foobnix.pro.pdf.reader/pro/src/main/AndroidManifest.xml'
DEBUG: ..got package=None, version=None, vercode=None
DEBUG: Parsing manifest at 'build/com.foobnix.pro.pdf.reader/app/src/main/AndroidManifest.xml'
DEBUG: ..got package=None, version=7.12.87, vercode=941
DEBUG: Parsing manifest at 'build/com.foobnix.pro.pdf.reader/app/build.gradle'
DEBUG: ..got package=com.foobnix.pro.pdf.reader, version=None, vercode=None
DEBUG: Parsing manifest at 'build/com.foobnix.pro.pdf.reader/app/src/fdroid/AndroidManifest.xml'
DEBUG: ..got package=com.foobnix.pro.pdf.reader, version=None, vercode=None
DEBUG: Adding possible subdir app
DEBUG: Parsing manifest at 'build/com.foobnix.pro.pdf.reader/app/src/main/AndroidManifest.xml'
DEBUG: ..got package=None, version=7.12.87, vercode=941
DEBUG: Parsing manifest at 'build/com.foobnix.pro.pdf.reader/app/build.gradle'
DEBUG: ..got package=com.foobnix.pro.pdf.reader, version=None, vercode=None
DEBUG: Parsing manifest at 'build/com.foobnix.pro.pdf.reader/app/src/fdroid/AndroidManifest.xml'
DEBUG: ..got package=com.foobnix.pro.pdf.reader, version=None, vercode=None
DEBUG: Manifest exists in subdir 'app'. Found version 7.12.87 (941)
DEBUG: Parsing manifest at 'build/com.foobnix.pro.pdf.reader/app/src/main/AndroidManifest.xml'
DEBUG: ..got package=None, version=7.12.87, vercode=941
DEBUG: Parsing manifest at 'build/com.foobnix.pro.pdf.reader/app/src/fdroid/AndroidManifest.xml'
DEBUG: ..got package=None, version=None, vercode=None
DEBUG: Parsing manifest at 'build/com.foobnix.pro.pdf.reader/Builder/build.gradle'
DEBUG: ..got package=None, version=None, vercode=None
DEBUG: Parsing manifest at 'build/com.foobnix.pro.pdf.reader/Builder/libre/bin/AndroidManifest.xml'
DEBUG: ..got package=None, version=None, vercode=None
And I tried to build 8.1.269-fdroid but it failed with the following errors:
> Task :app:compileFdroidReleaseJavaWithJavac
/home/vagrant/build/com.foobnix.pro.pdf.reader/app/src/main/java/com/foobnix/ui2/BooksService.java:38: error: cannot find symbol
import com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException;
^
symbol: class UserRecoverableAuthIOException
location: package com.google.api.client.googleapis.extensions.android.gms.auth
/home/vagrant/build/com.foobnix.pro.pdf.reader/app/src/main/java/com/foobnix/pdf/info/AppsConfig.java:10: error: cannot find symbol
import com.google.android.gms.common.ConnectionResult;
^
symbol: class ConnectionResult
location: package com.google.android.gms.common
/home/vagrant/build/com.foobnix.pro.pdf.reader/app/src/main/java/com/foobnix/pdf/info/AppsConfig.java:11: error: cannot find symbol
import com.google.android.gms.common.GoogleApiAvailability;
^
symbol: class GoogleApiAvailability
location: package com.google.android.gms.common
/home/vagrant/build/com.foobnix.pro.pdf.reader/app/src/main/java/com/foobnix/ui2/BooksService.java:145: error: cannot find symbol
} catch (UserRecoverableAuthIOException e) {
^
symbol: class UserRecoverableAuthIOException
location: class BooksService
/home/vagrant/build/com.foobnix.pro.pdf.reader/app/src/main/java/com/foobnix/pdf/info/AppsConfig.java:49: error: cannot find symbol
GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance();
^
symbol: class GoogleApiAvailability
location: class AppsConfig
/home/vagrant/build/com.foobnix.pro.pdf.reader/app/src/main/java/com/foobnix/pdf/info/AppsConfig.java:49: error: cannot find symbol
GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance();
^
symbol: variable GoogleApiAvailability
location: class AppsConfig
/home/vagrant/build/com.foobnix.pro.pdf.reader/app/src/main/java/com/foobnix/pdf/info/AppsConfig.java:51: error: cannot find symbol
return resultCode == ConnectionResult.SUCCESS;
^
symbol: variable ConnectionResult
location: class AppsConfig
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
7 errors
Do you know what can cause this?
Please try on master branch, I will create new tag for fdroid
@Rudloff Please try with 8.1.275 tag
I added a build entry for 8.1.275-fdroid: https://gitlab.com/fdroid/fdroiddata/merge_requests/5444
Thanks @Rudloff! So @foobnix still needs to ping us for each update it seems – or is there a custom check we could establish against that codeNumber
and versionNumber
?
I enabled update checks with the HTTP method: https://gitlab.com/fdroid/fdroiddata/merge_requests/5455
Are you planning an fdroid release?