PurpleI2P / i2pd-android

i2pd for Android
BSD 3-Clause "New" or "Revised" License
196 stars 23 forks source link

[Android] Publish on F-Droid #4

Closed linsui closed 2 years ago

linsui commented 5 years ago

Would you please publish I2Pd on F-Droid?

r4sas commented 5 years ago

I do not think this is a good idea, because of unusable user-gui part.

l-n-s commented 5 years ago

@r4sas that's a separate issue. Publishing on F-Droid is great for delivering i2pd and updates to end-users.

But it's not an easy task, there are some strict requirements for packaging, many nuances. @linsui do you know anyone who can help us with F-Droid?

orignal commented 5 years ago

In general it would be nice but we currently don't have resources to maintain i2pd on F-droid.

r4sas commented 5 years ago

@l-n-s, updates - yes, but the current gui is not something that I would like to post to the public.

linsui commented 5 years ago

I guess it isn't so diffcult. I open an rfp here. https://gitlab.com/fdroid/rfp/issues/927 And maybe @Izzysoft can give some advice?

IzzySoft commented 5 years ago

What advice shall I give, @linsui? If @r4sas (and maybe other project members) do not feel the app "ready for public" yet, we won't enforce it. It's always the authors' last word whether F-Droid includes an app or not.

If I understood correctly, @r4sas wrote it is not yet ready. So may I suggest we wait for the day the GUI will be ready, and the team then updtes this issue to give us the "go"?

@r4sas if you want a "testing version" being "half public" before, just let me know: my repo often serves for that (something between "Debian testing" and "Debian nonfree" for F-Droid).

IzzySoft commented 5 years ago

@l-n-s as @linsui already filed an RFP, let's wait what the scanner has to say (the job runs automatically once per day, picks new RFPs (not already having the fdroid-bot tag) and scans the corresponding app repo for being "compatible" with our inclusion policy). I'll ping you back when the results are there. Be welcome to join us right at the RFP issue linked above – and to ping me if you have questions. I'll gladly answer if I can – and if I can't forward your ping :wink:

IzzySoft commented 4 years ago

The scanner failed back then (no idea why) and thus I didn't get a ping back – so I only noticed this on my current triage run, apologies! I triggered the (meanwhile heavily updated) bot again, and it succeeded this time – results look promising!

So what's missing: could you please establish Fastlane structures here in your repo (details behind the link)? Thanks!

r4sas commented 4 years ago

btw, I've created f-droid repo, where APK from releases will be placed: https://fdroid.i2pd.xyz/

IzzySoft commented 4 years ago

Added to my repo list :smiley:

IzzySoft commented 3 years ago

We're still waiting for Fastlane to be established here. Any news towards that? That RFP from 3/2019 is still hanging in the air because of this… @r4sas?

r4sas commented 3 years ago

@IzzySoft, sorry for long answer. I think now things are better than earlier, like webconsole was added to app as activity, and less or more it works with most of systems including Android 11. Sure, here is one more bug with application service, which I didn't know how to fix it myself. If this does not prevent you from publishing the application, so I think, I can give green light to that. Ofcourse, let's hear @orignal and @nonlinear-chaos-order-etc-etal about their thougts.

One more question, @IzzySoft, can be Fastlane placed in subdirectory, where application sources is placed (android directory in our case)?

IzzySoft commented 3 years ago

Thanks for your reply, @r4sas! As for "one more bug": what software can say it's "bug free"? I must leave it to your perception and judgement to say if it's as serious to count as a show-stopper or not. For example, if it's just a minor bug but prevents the app from starting altogether, I'd say it's a stopper. But if it's something that only hits in rare cases, I'd say it clearly is not. Set up the scales for all in between :wink:

One more answer: it can, but it won't be found there. Currently Fastlane is only supported in the root (stable, save and long-practiced), or inside the flavor (if there are flavors; rarely used, unsure). And there's Triple-T, though I have not much experience with that. TL;DR: best idea is having fastlane in the root.

r4sas commented 3 years ago

Currently Fastlane is only supported in the root

But our android code is not in project root, so maybe it can use that directory anyways?

IzzySoft commented 3 years ago

As I wrote: you can put it where you like, but it then won't be found by F-Droid. That said, what does that have to do with Android? Or, to be more precise, what does e.g. fastlane/metadata/ios have to do with Android? Consider thinking the other way around: fastlane holds "descriptive metadata", android, debian etc hold "Code". The README.md isn't specific to Android either, and still you have it in the root (because otherwise Github wouldn't show it), right?

PS: I cannot help that it will only be found in specific places. It's being worked on to support other locations, but don't expect any results soon – might well take a year or more ontil it's there. So for now, as much as you might argue and even as much I would agree, it doesn't change a thing. Those paths are hard-coded and cannot be "configured per app".

r4sas commented 3 years ago

Okay, I'm just asking because Telegram-FOSS, for example, didn't use fastlane hardcoded paths, and it still works for them.

IzzySoft commented 3 years ago

And, their fastlane directory is where? Hint: They don't use fastlane. All their metadata is maintained at F-Droid's end. A model we do no longer favor, as it is a hazzle to keep updated: for each change you'd need to open a MR, effectively binding time of multiple people.

r4sas commented 3 years ago

@IzzySoft can you validate that repo in your builder? I'll move android codebase to current repository and added fastline.

IzzySoft commented 3 years ago

Which repo shall I validate in what builder? I'm at a loss here what you want me to do, sorry… If you ask about Telegram-FOSS and Fastlane: They now seem to use F-Droid internal metadata structures, which might work. I'd rather recommend using Fastlane structures (as linked above), as those are a standard.

linsui commented 3 years ago

I thought @r4sas is talking about this repo. The fastlane LGTM and it would be better to have some screenshots.

IzzySoft commented 3 years ago

Ah! So by "that repo" he meant "this repo" :see_no_evil: Then yes, ack on Fastlane. Though for end-users summary's probably not telling much ("Full-featured C++ implementation of I2P client" – they're unlikely to care about the programming language and might not even know what I2P is, so all what remains is "full featured client"). I couldn't even tell what exactly this app is after reading the full description. Educated guess: something like a "TOR proxy" running on the local device for other apps to use? Maybe include a link to Wikipedia for additional details? Screenshots would definitely help a lot as well to make things clearer.

r4sas commented 3 years ago

@IzzySoft how can I check if fdroidserver can build application correctly? I tried to fill metadata and start fdroid build org.purplei2p.i2pd, but at end I got error:

2021-02-25 07:16:53,103 INFO: Cleaned build.gradle of keysigning configs at build/org.purplei2p.i2pd/app/build.gradle
2021-02-25 07:16:53,256 DEBUG: Updating main project
2021-02-25 07:16:53,280 ERROR: Could not build app org.purplei2p.i2pd: Android SDK tool android found!

In config.py I use this:

sdk_path = "/opt/android-sdk"
ndk_paths = {
      'r19c': "/opt/android-ndk-r19c",
}
build_tools = "29.0.3"

metadata:

...
RepoType: git
Repo: https://github.com/PurpleI2P/i2pd-android.git

Builds:
  - versionName: 2.36.0
    versionCode: 23600
    submodules: yes
    commit: 6ee4db6680b9ab1620d481eb09e9369bcf18916d
    subdir: app
    ndk: r19c

AutoUpdateMode: None
UpdateCheckMode: None
CurrentVersion: 2.36.0
CurrentVersionCode: 23600

fdroidserver does not supports latest versions of cmdline-tools?

add: okay, I figured out that I needed 25.2.3 tools, so I installed them and able to bypass that error. But I got new one ;D

2021-02-25 08:11:55,025 DEBUG: Updating main project
2021-02-25 08:11:55,026 DEBUG: Directory: build/org.purplei2p.i2pd/app
2021-02-25 08:11:55,027 DEBUG: > /opt/android-sdk/tools/android update lib-project -p .
Error: . is not a valid project (AndroidManifest.xml not found).
2021-02-25 08:11:55,953 ERROR: Could not build app org.purplei2p.i2pd: Failed to update project at .

Executing fdroid build from "fdroiddata" directory.

linsui commented 3 years ago

Add

gradle:
  yes
r4sas commented 3 years ago

Add

gradle:
  yes

Ah, thanks! Now waiting for build results.

IzzySoft commented 3 years ago

Thanks @linsui for picking up! I usually cannot answer many build-related question. In that section I'm an absolute novice, happy whenever the CI builds work out and often without a clue should they not… I have no own build env, so I cannot check myself.

r4sas commented 3 years ago

App was built successfully, but one problem is about multiple APK output with different ABI's, which rejected by builder. In that case I must write few build records with different targets?

linsui commented 3 years ago

In that case I must write few build records with different targets?

Yes, and autoupdate won't work.

r4sas commented 3 years ago

@linsui can you give example metadata with app, where auto-update works?

linsui commented 3 years ago

Sorry, I didn't make it clear. F-Droid can't autoupdate app with multiple abis. Maybe you can build a universal apk?

r4sas commented 3 years ago

Ah, I know that f-droid can't update in that case, so I already sed'ed split from true to false and restarted build.

r4sas commented 3 years ago

Successfully built.

Categories:
  - Connectivity
  - Internet
  - Security
License: BSD-3-Clause
AuthorName: PurpleI2P
AuthorWebSite: https://i2pd.website/
WebSite: https://i2pd.website/
SourceCode: https://github.com/PurpleI2P/i2pd-android.git
IssueTracker: https://github.com/PurpleI2P/i2pd-android/issues
Changelog: https://github.com/PurpleI2P/i2pd/blob/openssl/ChangeLog
Bitcoin: 3MDoGJW9TLMTCDGrR9bLgWXfm6sjmgy86f
Litecoin: LKQirrYrDeTuAPnpYq5y7LVKtywfkkHi59

Name: i2pd
AutoName: i2pd

RepoType: git
Repo: https://github.com/PurpleI2P/i2pd-android.git

Builds:
  - versionName: 2.36.0
    versionCode: 23600
    submodules: yes
    commit: 6ee4db6680b9ab1620d481eb09e9369bcf18916d
    subdir: app
    gradle: yes
    prebuild:
      - sed -i -e 's/enable true/enable false/' build.gradle
    # Ignoring prebuilt opensource libraries
    scanignore:
      - app/jni/boost
      - app/jni/openssl
      - app/jni/miniupnp
    ndk: r19c

MaintainerNotes: Repo has metadata structure for description, title, images, etc

AutoUpdateMode: Version %v
UpdateCheckMode: Tags
CurrentVersion: 2.36.0
CurrentVersionCode: 23600
linsui commented 3 years ago

You need to build boost, openssl and miniupnp from source...

r4sas commented 3 years ago

Will think how to build them here...

linsui commented 3 years ago

This may help. It clone the source and build them. A better method is including the source as submodule.

r4sas commented 2 years ago

Added building of external libraries from sources: https://github.com/PurpleI2P/i2pd-android/tree/extlibsrc

r4sas commented 2 years ago

Current code can be successfully compiled with this metadata:

Categories:
  - Connectivity
  - Internet
  - Security
License: BSD-3-Clause
AuthorName: PurpleI2P
AuthorWebSite: https://i2pd.website/
WebSite: https://i2pd.website/
SourceCode: https://github.com/PurpleI2P/i2pd-android.git
IssueTracker: https://github.com/PurpleI2P/i2pd-android/issues
Changelog: https://github.com/PurpleI2P/i2pd/blob/openssl/ChangeLog
Bitcoin: 3MDoGJW9TLMTCDGrR9bLgWXfm6sjmgy86f
Litecoin: LKQirrYrDeTuAPnpYq5y7LVKtywfkkHi59

Name: i2pd
AutoName: i2pd
Summary: Full-featured C++ implementation of I2P client
Description: |-
    <b>I2P</b> (Invisible Internet Protocol) is a universal anonymous network layer.
    All communications over I2P are anonymous and end-to-end encrypted, participants
    don't reveal their real IP addresses.

    <b>I2P client</b> is a software used for building and using anonymous I2P
    networks. Such networks are commonly used for anonymous peer-to-peer
    applications (filesharing, cryptocurrencies) and anonymous client-server
    applications (websites, instant messengers, chat-servers).

    <b>I2P</b> allows people from all around the world to communicate and share information
    without restrictions.

    For more information about <b>I2P</b>, you can read <a href="https://en.m.wikipedia.org/wiki/I2P">article on Wikipedia</a>.

RepoType: git
Repo: https://github.com/PurpleI2P/i2pd-android.git

Builds:
  - versionName: 2.40.0
    versionCode: 24000
    sudo:
      - apt-get update || apt-get update
      - apt-get install -y rename
    submodules: yes
    commit: 2.40.0-srclib
    subdir: app
    gradle: yes
    scanignore:
      # sources of openssl contains files, which detected as binaries
      - app/jni/openssl/fuzz
      - app/jni/openssl/boringssl/fuzz
    prebuild:
      - sed -i -e 's/enable true/enable false/' build.gradle
    build:
      - export ANDORID_SDK_ROOT=$$SDK$$
      - export ANDORID_NDK_HOME=$$NDK$$
      - pushd jni
      - ./build_boost.sh
      - ./build_openssl.sh
      - ./build_miniupnpc.sh
      - popd
    ndk: r21e

MaintainerNotes: Repo has metadata structure for description, title, images, etc

AutoUpdateMode: Version %v
UpdateCheckMode: Tags
CurrentVersion: 2.40.0
CurrentVersionCode: 24000
r4sas commented 2 years ago

Further progress can be found here: https://gitlab.com/fdroid/fdroiddata/-/merge_requests/10491

r4sas commented 2 years ago

@linsui can you send success rate %, routers, ff, tunnels amount?

r4sas commented 2 years ago

I'm testing with APK from https://gitlab.com/fdroid/fdroiddata/-/merge_requests/10491#note_824863654 signed using our release key. Signed APK can be found here: https://repo.i2pd.xyz/soft/i2pd-android/org.purplei2p.i2pd_24000-signed.apk

add: Working with telegram: image Main page: image zzz.i2p: Screenshot_20220128-152020 i2pd.i2p: Screenshot_20220128-151750

What about zzz.i2p: I think here problem in network on zzz's side, because last few weeks Java I2p meet some issues with tunnels building.

r4sas commented 2 years ago

PR merged, closing.

linsui commented 2 years ago

Thanks!