LibreraReader icon indicating copy to clipboard operation
LibreraReader copied to clipboard

FDroid release

Open sdfg2 opened this issue 7 years ago • 96 comments

Are you planning an fdroid release?

sdfg2 avatar Mar 08 '18 21:03 sdfg2

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

foobnix avatar Mar 09 '18 09:03 foobnix

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 :-)

sdfg2 avatar Mar 09 '18 10:03 sdfg2

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?

IzzySoft avatar Feb 01 '19 14:02 IzzySoft

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.

foobnix avatar Feb 01 '19 15:02 foobnix

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?

IzzySoft avatar Feb 01 '19 16:02 IzzySoft

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

foobnix avatar Feb 01 '19 16:02 foobnix

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.

IzzySoft avatar Feb 01 '19 16:02 IzzySoft

PRO version is without play-services, I don't see other violations

foobnix avatar Feb 01 '19 16:02 foobnix

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.

IzzySoft avatar Feb 01 '19 16:02 IzzySoft

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.

Rudloff avatar Feb 01 '19 16:02 Rudloff

I will prepare build script that also fetch libraries from maven.

foobnix avatar Feb 01 '19 19:02 foobnix

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:

IzzySoft avatar Feb 01 '19 22:02 IzzySoft

@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

foobnix avatar Feb 04 '19 15:02 foobnix

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

foobnix avatar Feb 04 '19 15:02 foobnix

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 avatar Feb 04 '19 23:02 Rudloff

@Rudloff I have fix update_jar.sh script Is it something else I can help with publishing my app on fdroid?

foobnix avatar Feb 05 '19 14:02 foobnix

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 avatar Feb 05 '19 16:02 Rudloff

@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

foobnix avatar Feb 12 '19 10:02 foobnix

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 avatar Feb 12 '19 11:02 IzzySoft

@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 avatar Feb 12 '19 11:02 Rudloff

@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!

IzzySoft avatar Feb 12 '19 12:02 IzzySoft

@Rudloff @IzzySoft Is it something else you need from my side to publish the app?

foobnix avatar Feb 12 '19 12:02 foobnix

@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

foobnix avatar Feb 12 '19 15:02 foobnix

Thanks @foobnix! For build relevant things, I can't answer – Pierre must say.

IzzySoft avatar Feb 12 '19 15:02 IzzySoft

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 avatar Feb 13 '19 11:02 Rudloff

@Rudloff please find an updated build (included sources of simd)

foobnix avatar Feb 13 '19 13:02 foobnix

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 avatar Feb 13 '19 15:02 Rudloff

@Rudloff Please try the final commit ( I have added minSdkVersion 16 to fdroid)

foobnix avatar Feb 13 '19 15:02 foobnix

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 avatar Feb 13 '19 16:02 Rudloff

@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)

foobnix avatar Feb 28 '19 14:02 foobnix