-
Notifications
You must be signed in to change notification settings - Fork 439
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Draft] [Android] Architecture revamp #3561
Comments
This was a joint decision of Vitalii and me. Also: this architecture will make it feasible to have a BOINC client for iOS. |
To clarify further: this issue should be discussed by the BOINC community, including the projects that offer Android apps. Vitalii and I think this is probably the best approach (as opposed, for example, to trying to work around the new restrictions, or using older APIs). |
Agree.
Finally :). |
This change by Google is unfortunate for BOINC. This will be a much harder model to work with. Thanks for thinking through alternatives and beginning the discussion. Can you write up a explanation about how this will work from the project perspective? When a project has new versions of its binaries how does it update them? What will be the update frequency? Is there a way to have each project's binaries as a "sub-bundle" so that the overall downloaded is based on only the projects the user is actually contributing to (and so that updates to one projects binaries doesn't trigger a re-download of everything for everyone)? |
I can't answer these question right now because not everything is clear for
me either.
From what I can see now this will be done similar to this:
1 - When project has some executables ready to test or ready to release,
they should inform me. I build a new APK. Debug version of it could be used
by project for testing. This step could be automated.
2 - I suppose that it makes sense to make an update as often as project
ready to ship updated binaries. Hopefully, this will not happen too often.
3 - Each project will be in a separate bundle, so the user will download
only that binaries that are used by projects attached. I suppose upgrade
will be in the same way but I'm not 100% sure about this.
Best regards,
Vitalii Koshura
пн, 6 апр. 2020 г. в 16:30, Kevin Reed <notifications@github.com>:
… This change by Google is unfortunate for BOINC. This will be a *much*
harder model to work with. Thanks for thinking through alternatives and
beginning the discussion.
Can you write up a explanation about how this will work from the project
perspective? When a project has new versions of its binaries how does it
update them? What will be the update frequency? Is there a way to have each
project's binaries as a "sub-bundle" so that the overall downloaded is
based on only the projects the user is actually contributing to (and so
that updates to one projects binaries doesn't trigger a re-download of
everything for everyone)?
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
<#3561 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAYVTINVLAXE5DPRF5SN3SLRLHRO3ANCNFSM4MBODKVA>
.
|
Some really hardcore discussion over at termux/termux-app#1072 |
@AenBleidd So please take this suggestion if you want more flexibility in boinc client. |
@talregev, what about scheduling? How can one application (boinc client in this case) send a command to run another application (project application)? |
@AenBleidd |
I guess there is some (not one) solutions, and need to think about this. |
This sounds bad, have you considered using WebAssembly for the binary part? Since running a |
@scitor Do you know how to do it? |
Well, I'm not a C++ programmer, but there are surely some resources one could look into.. I could imagine the science binaries aren't that much dependent on OS/arch, so the only thing really changing would be communication with parent and file system access (I suppose). If CryptoMiners can do it, why can't my chrome smash childhood cancer too? :D |
It's a big change and it will not solve the main issue: binaries still should be put inside APK. So I see no real benefit of doing this. |
If that's the goal, then yes, webviews don't solve that problem. I thought of it as being better having one flexible client where you can plug-in the parts you want, but thats just preference... |
also would allow web browsers |
What about making an app for every project. Like this
|
For not BOINC can run multiple projects simultaneously and even multiple tasks from the same project.
The first question is the most important |
And why GUI and client should be different APKs? |
@AenBleidd
If we going to this direction, we must ask from the user at the first time to download the project app. by link via boinc app itself. |
@AenBleidd |
And this method is already described in this particular ticket |
I decided not to continue with this change. Mainly because it will make a big impact on UX and not significantly smaller output. |
We never go back to android market? |
We will but in a different way |
Can you tell me about the different way? |
Not now. When time comes - I'll create a story for that. It was decided a while ago to not continue with this story, I just had no time and desire before to close all tickets that are not needed anymore. |
This is a new functionality and not yet on mobile. In any case, I mostly rely on tags. |
Starting from Android API 28 Google add some restrictions to native executables: https://android-review.googlesource.com/c/platform/system/sepolicy/+/804149
Basically this means that we have no ability to download and run project executables anymore.
In order to be up-to-date and secure, @davidpanderson and me decided to change the architecture of BOINC Manager for Android. This is the only way I see to continue our mission.
The main change is next: now BOINC Manager for Android will include all project executables inside the bundle ( https://developer.android.com/guide/app-bundle/ ).
This ticket is an entry point and collection of another tickets that should cover main workflow and its edge cases.
Additional information: https://developer.android.com/guide/playcore/feature-delivery
Release critical
Release non-critical
The text was updated successfully, but these errors were encountered: