Merge branch 'master' into basic-touch
This commit is contained in:
commit
205be644d6
6 changed files with 115 additions and 6 deletions
|
|
@ -75,7 +75,7 @@ $ anbox-installer
|
|||
|
||||
This will guide you through the installation process.
|
||||
|
||||
**NOTE:** Anbox is currently in a **pre-alpha development state**. Don't expect a
|
||||
**NOTE:** Anbox is currently in a **alpha development state**. Don't expect a
|
||||
fully working system for a production system with all features you need. You will
|
||||
for sure see bugs and crashes. If you do so, please don't hestitate and report them!
|
||||
|
||||
|
|
|
|||
106
docs/install.md
Normal file
106
docs/install.md
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
# Install Anbox
|
||||
|
||||
To install Anbox your system need to support [snaps](https://snapcraft.io). We
|
||||
do not officially support any other distribution method of Anbox at the moment
|
||||
but there are community made packages for various distributions (e.g. Arch Linux).
|
||||
However please keep in mind that the Anbox project can give not support them
|
||||
and its solely in the responsibility of the community packager to keep up with
|
||||
upstream development and update the packaging to any new changes. Please feel
|
||||
free to report still any bugs you encounter as they may not be related to the
|
||||
packaging.
|
||||
|
||||
If you don't know about snaps yet head over to [snapcraft.io](https://snapcraft.io/)
|
||||
to get an introduction of what snaps are, how to install support for them on your
|
||||
distribution and how to use them.
|
||||
|
||||
The installation of Anbox consists of two steps.
|
||||
|
||||
1. Install necessary kernel modules
|
||||
2. Install the Anbox snap
|
||||
|
||||
In order to support the mandatory kernel subsystems ashmem and binder for the
|
||||
Android container you have to install two
|
||||
[DKMS](https://en.wikipedia.org/wiki/Dynamic_Kernel_Module_Support)
|
||||
based kernel modules. The source for the kernel modules is maintained by the
|
||||
Anbox project [here](https://github.com/anbox/anbox/tree/master/kernel).
|
||||
|
||||
At the moment we only have packages prepared for Ubuntu in a PPA on Launchpad.
|
||||
If you want to help to get the packages in your favorite distribution please
|
||||
come and talk to us or submit a PR with the distribution specific packaging.
|
||||
|
||||
The second step will install the Anbox snap from the store and will give you
|
||||
everything you need to run the full Anbox experience.
|
||||
|
||||
## Install necessary kernel modules
|
||||
|
||||
In order to add the PPA to your Ubuntu system please run the following commands:
|
||||
|
||||
```
|
||||
$ sudo add-apt-repository ppa:morphis/anbox-support
|
||||
$ sudo apt update
|
||||
$ sudo apt install anbox-modules-dkms
|
||||
```
|
||||
|
||||
These will add the PPA to your system and install the `anbox-modules-dkms`
|
||||
package which contains the ashmem and binder kernel modules. They will be
|
||||
automatically rebuild everytime the kernel packages on your system update.
|
||||
|
||||
After you installed the `anbox-modules-dkms` package you have to manually
|
||||
load the kernel modules. The next time your system starts they will be
|
||||
automatically loaded.
|
||||
|
||||
```
|
||||
$ sudo modprobe ashmem_linux
|
||||
$ sudo modprobe binder_linux
|
||||
```
|
||||
|
||||
Now you should have two new nodes in your systems `/dev` directory:
|
||||
|
||||
```
|
||||
$ ls -1 /dev/{ashmem,binder}
|
||||
/dev/ashmem
|
||||
/dev/binder
|
||||
```
|
||||
|
||||
## Install the Anbox snap
|
||||
|
||||
Installing the Anbox snap is very simple:
|
||||
|
||||
```
|
||||
$ snap install --devmode --beta anbox
|
||||
```
|
||||
|
||||
If you didn't logged into the Ubuntu Store yet, the `snap` command will
|
||||
ask you to use `sudo snap ...` in order to install the snap:
|
||||
|
||||
```
|
||||
$ sudo snap install --devmode --beta anbox
|
||||
```
|
||||
|
||||
At the moment we require the use of `--devmode` as the Anbox snap is not
|
||||
yet fully confined. Work has started with the upstream `snapd` project to
|
||||
get support for full confinement.
|
||||
|
||||
As a side effect of using `--devmode` the snap will not automatically update.
|
||||
In order to update to a newer version you can run:
|
||||
|
||||
```
|
||||
$ snap refresh --beta --devmode anbox
|
||||
```
|
||||
|
||||
Information about the currently available versions of the snap is available
|
||||
via:
|
||||
|
||||
```
|
||||
$ snap info anbox
|
||||
```
|
||||
|
||||
## Available snap channels
|
||||
|
||||
Currently we only use the beta and edge channels for the Anbox snap. The edge
|
||||
channel tracks the latest development is always synced with the state of the
|
||||
master branch on github. The beta channel is updated less frequently to provide
|
||||
a more stable and bug free experience.
|
||||
|
||||
Once proper confinement for the Anbox snap exists we will also start using the
|
||||
candidate and stable channels.
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python2
|
||||
|
||||
# Copyright 2015 The Android Open Source Project
|
||||
#
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ void Channel::send_message(const std::uint8_t &type,
|
|||
google::protobuf::MessageLite const &message) {
|
||||
const size_t size = message.ByteSize();
|
||||
const unsigned char header_bytes[header_size] = {
|
||||
static_cast<unsigned char>((size >>16) & 0xff),
|
||||
static_cast<unsigned char>((size >> 8) & 0xff),
|
||||
static_cast<unsigned char>((size >> 0) & 0xff), type,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
namespace anbox {
|
||||
namespace rpc {
|
||||
static constexpr const long header_size{3};
|
||||
static constexpr const long header_size{4};
|
||||
static constexpr unsigned int const serialization_buffer_size{2048};
|
||||
|
||||
enum MessageType {
|
||||
|
|
|
|||
|
|
@ -47,9 +47,10 @@ bool MessageProcessor::process_data(const std::vector<std::uint8_t> &data) {
|
|||
|
||||
while (buffer_.size() > 0) {
|
||||
const auto high = buffer_[0];
|
||||
const auto low = buffer_[1];
|
||||
size_t const message_size = (high << 8) + low;
|
||||
const auto message_type = buffer_[2];
|
||||
const auto medium = buffer_[1];
|
||||
const auto low = buffer_[2];
|
||||
size_t const message_size = (high << 16) + (medium << 8) + low;
|
||||
const auto message_type = buffer_[3];
|
||||
|
||||
// If we don't have yet all bytes for a new message return and wait
|
||||
// until we have all.
|
||||
|
|
@ -101,6 +102,7 @@ void MessageProcessor::send_response(::google::protobuf::uint32 id,
|
|||
|
||||
const size_t size = send_response_buffer.size();
|
||||
const unsigned char header_bytes[header_size] = {
|
||||
static_cast<unsigned char>((size >> 16) & 0xff),
|
||||
static_cast<unsigned char>((size >> 8) & 0xff),
|
||||
static_cast<unsigned char>((size >> 0) & 0xff), MessageType::response,
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue