Changes between Initial Version and Version 1 of AndroidBoincImpl


Ignore:
Timestamp:
Aug 5, 2012, 12:21:35 AM (12 years ago)
Author:
davea
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AndroidBoincImpl

    v1 v1  
     1= AndroidBOINC =
     2
     3AndroidBOINC is an attempt to port the
     4Berkeley Open Infrastructure for Network Computing to Android-powered devices.
     5
     6The Android application consists of the regular BOINC Client
     7and an Android-specific BOINC Manager.
     8Using AndroidBOINC, BOINC projects can distribute scientific tasks
     9to Android-powered devices,
     10enabling volunteers to contribute CPU time of modern smartphones and tablet computers.
     11
     12
     13== Architecture ==
     14
     15AndroidBOINC combines the two independent BOINC components of Client and Manager.
     16
     17The BOINC Client got adapted to accommodate the needs of mobile devices
     18and can be cross compiled to run on ARM-Android-based devices.
     19To allow volunteers to control the Client,
     20AndroidBOINC's second component is a BOINC Manager,
     21developed for Android using the common design patterns.
     22AndroidBOINC bundles those two components together, to be distributed in a single APK.
     23
     24Client and Manager communicate via RPCs, similar to versions on Windows or Linux.
     25
     26On startup the Android application executes the BOINC Client,
     27which does not have Android-specific methods implemented and consists
     28solely out of native source code.
     29The Client and Manager run as two separate processes.
     30
     31
     32=== Aspects of Android platform ===
     33
     34 * Storage:
     35  Applications are only allowed to write into two areas of a device's storage space.
     36  One is the app's directory, located at /data/data/*package.name*/,
     37  files in this directory can be set executable and run using the Java's
     38  Runtime.exec command.
     39  This space is "private", so only accessible by the application it belongs to.
     40  The second storage location is the device SD card (if present),
     41  this is generally accessible by all applications, but mounted non-executable.
     42
     43 *  Permissions:
     44  Android restricts access to certain features with its permission system.
     45  Required permissions have to be declared in the AndroidManifest.xml file by the developer,
     46  the user then gets prompted to grant access upon installation.
     47  AndroidBOINC requires the "Network" permission,
     48  for transmitting workunits and also for the RPC communication in-between Manager and Client.
     49  This permission is granted to the App-specific Linux User ID,
     50  and therefore also applies to its child-processes.
     51
     52 * Lifecycle:
     53  Applications which are not visible at the moment can get killed by the system.
     54  If the user navigates back to a destroyed application, it gets reactivated.
     55  In most cases according lifecycle-methods are called, however those are not reliable.
     56  This behavior only applies to applications which are executed in Android's
     57  Dalvik virtual machine and not to native child-processes like the BOINC Client.
     58  As a consequence, the Manager tries to connect to a possibly existing BOINC Client.
     59  Only if this attempt fails, a new instance of the BOINC client is executed.
     60
     61 * Distribution:
     62  Like every other application, AndroidBOINC comes in an APK package.
     63  The BOINC Client gets distributed as part of the Android app and resides
     64  in its "assets" directory.
     65  When executed, the Client gets copied to the local storage space and executed from there.
     66
     67
     68=== Considerations for mobile devices ===
     69
     70In order to accommodate the limitations of mobile devices,
     71two features got introduced to the BOINC Client:
     72
     73 * Wifi detection: AndroidBOINC, by default, does communication with its project scheduler
     74  only when logged into a Wifi.
     75  This helps volunteers keeping control of limitations on a data plan.
     76
     77 * Charging only: AndroidBOINC, by default, computes tasks
     78  only when the device is being connected to a power source, preventing battery drowns.
     79
     80
     81== Acknowledgements ==
     82
     83 * Pavol Michalec for his work on AndroBOINC (BOINC Manager for Android)
     84
     85 * Mats for his work on NativeBOINC
     86
     87
     88== Getting Started ==
     89
     90To get your project running on Android, please note:
     91
     92 *  [AndroidBoincClient Build AndroidBOINC]
     93
     94 *  [AndroidBoincApps Build apps for AndroidBOINC]
     95