Closed linsui closed 2 years ago
I do not think this is a good idea, because of unusable user-gui part.
@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?
In general it would be nice but we currently don't have resources to maintain i2pd on F-droid.
@l-n-s, updates - yes, but the current gui is not something that I would like to post to the public.
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?
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).
@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:
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!
btw, I've created f-droid repo, where APK from releases will be placed: https://fdroid.i2pd.xyz/
Added to my repo list :smiley:
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?
@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)?
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.
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?
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".
Okay, I'm just asking because Telegram-FOSS, for example, didn't use fastlane hardcoded paths, and it still works for them.
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.
@IzzySoft can you validate that repo in your builder? I'll move android codebase to current repository and added fastline.
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.
I thought @r4sas is talking about this repo. The fastlane LGTM and it would be better to have some screenshots.
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.
@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.
Add
gradle:
yes
Add
gradle: yes
Ah, thanks! Now waiting for build results.
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.
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?
In that case I must write few build records with different targets?
Yes, and autoupdate won't work.
@linsui can you give example metadata with app, where auto-update works?
Sorry, I didn't make it clear. F-Droid can't autoupdate app with multiple abis. Maybe you can build a universal apk?
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.
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
You need to build boost, openssl and miniupnp from source...
Will think how to build them here...
This may help. It clone the source and build them. A better method is including the source as submodule.
Added building of external libraries from sources: https://github.com/PurpleI2P/i2pd-android/tree/extlibsrc
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
Further progress can be found here: https://gitlab.com/fdroid/fdroiddata/-/merge_requests/10491
@linsui can you send success rate %, routers, ff, tunnels amount?
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: Main page: zzz.i2p: i2pd.i2p:
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.
PR merged, closing.
Thanks!
Would you please publish I2Pd on F-Droid?