diff --git a/android/anboxd.rc b/android/anboxd.rc index 985655a..4a77419 100644 --- a/android/anboxd.rc +++ b/android/anboxd.rc @@ -1,5 +1,5 @@ service anboxd /system/bin/anboxd - class boot + class core # We will ever only have a single network interface we need to care # about so we can add static setup for this one here. diff --git a/android/service/android_api_skeleton.cpp b/android/service/android_api_skeleton.cpp index f692721..63d2f6b 100644 --- a/android/service/android_api_skeleton.cpp +++ b/android/service/android_api_skeleton.cpp @@ -83,12 +83,16 @@ void AndroidApiSkeleton::launch_application(anbox::protobuf::bridge::LaunchAppli (void) response; std::string intent = request->package_name(); - intent += "/"; - intent += request->activity(); + if (request->has_activity()) { + intent += "/"; + intent += request->activity(); + } std::vector argv = { "/system/bin/am", "start", + // Launch any applications always in freeform stack + "--stack", "2", intent, }; diff --git a/android/service/local_socket_connection.cpp b/android/service/local_socket_connection.cpp index c2ff040..f5d090a 100644 --- a/android/service/local_socket_connection.cpp +++ b/android/service/local_socket_connection.cpp @@ -54,15 +54,12 @@ LocalSocketConnection::~LocalSocketConnection() { ssize_t LocalSocketConnection::read_all(std::uint8_t *buffer, const size_t &size) { ssize_t bytes_read = ::recv(fd_, reinterpret_cast(buffer), size, 0); - ALOGI("Read %d bytes", bytes_read); return bytes_read; } void LocalSocketConnection::send(char const* data, size_t length) { size_t bytes_written{0}; - ALOGI("Writing %d bytes", length); - while(bytes_written < length) { ssize_t const result = ::send(fd_, data + bytes_written, diff --git a/android/service/platform_service.cpp b/android/service/platform_service.cpp index 8ab0013..321791b 100644 --- a/android/service/platform_service.cpp +++ b/android/service/platform_service.cpp @@ -50,10 +50,6 @@ anbox::PlatformApiStub::WindowStateUpdate::Window PlatformService::unpack_window auto task_id = data.readInt32(); auto stack_id = data.readInt32(); - ALOGI(" Window: package=%s frame={%d,%d,%d,%d} task=%d stack=%d", - package_name.string(), frame_left, frame_top, frame_right, frame_bottom, - task_id, stack_id); - return anbox::PlatformApiStub::WindowStateUpdate::Window{ -1, // Display id will be added by the caller has_surface, @@ -67,13 +63,10 @@ anbox::PlatformApiStub::WindowStateUpdate::Window PlatformService::unpack_window status_t PlatformService::update_window_state(const Parcel &data) { anbox::PlatformApiStub::WindowStateUpdate state; - ALOGI("Udated windows:"); const auto num_displays = data.readInt32(); for (auto n = 0; n < num_displays; n++) { const auto display_id = data.readInt32(); const auto num_windows = data.readInt32(); - ALOGI(" Display: id=%d", display_id); - for (auto m = 0; m < num_windows; m++) { auto window = unpack_window_state(data); window.display_id = display_id; @@ -81,7 +74,6 @@ status_t PlatformService::update_window_state(const Parcel &data) { } } - ALOGI("Removed windows:"); const auto num_removed_windows = data.readInt32(); for (auto n = 0; n < num_removed_windows; n++) { auto window = unpack_window_state(data); diff --git a/scripts/load-kmods.sh b/scripts/load-kmods.sh new file mode 100755 index 0000000..12a98a9 --- /dev/null +++ b/scripts/load-kmods.sh @@ -0,0 +1,5 @@ +#!/bin/sh -ex +sudo rmmod binder_linux || true +sudo rmmod ashmem_linux || true +(cd kernel/binder ; make clean && make -j4 ; sudo insmod binder_linux.ko; sudo chmod 666 /dev/binder) +(cd kernel/ashmem ; make clean && make -j4 ; sudo insmod ashmem_linux.ko; sudo chmod 666 /dev/ashmem) diff --git a/snapcraft.yaml b/snapcraft.yaml index 4850d1d..bd76cee 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -14,8 +14,6 @@ apps: container-manager: command: bin/container-manager.sh daemon: simple - shell: - command: bin/container-shell.sh bridge: command: bin/anbox-bridge.sh start stop-command: bin/anbox-bridge.sh stop @@ -38,17 +36,6 @@ parts: - bin/anbox-bridge.sh - bin/anbox-wrapper.sh - bin/container-manager.sh - - bin/container-shell.sh - kernel-module-binder: - plugin: make - source: kernel/binder - snap: - - binder_linux.ko - kernel-module-ashmem: - plugin: make - source: kernel/ashmem - snap: - - ashmem_linux.ko lxc: source: git://github.com/morphis/lxc source-branch: snappy-support diff --git a/src/anbox/bridge/android_api_stub.cpp b/src/anbox/bridge/android_api_stub.cpp index 92c4370..a4a9f46 100644 --- a/src/anbox/bridge/android_api_stub.cpp +++ b/src/anbox/bridge/android_api_stub.cpp @@ -92,7 +92,8 @@ void AndroidApiStub::launch(const std::string &package, const std::string &activ auto c = std::make_shared>(); protobuf::bridge::LaunchApplication message; message.set_package_name(package); - message.set_activity(activity); + if (activity.length() > 0) + message.set_activity(activity); { std::lock_guard lock(mutex_); diff --git a/src/anbox/cmds/launch.cpp b/src/anbox/cmds/launch.cpp index 90483ba..809926e 100644 --- a/src/anbox/cmds/launch.cpp +++ b/src/anbox/cmds/launch.cpp @@ -30,8 +30,8 @@ anbox::cmds::Launch::Launch() flag(cli::make_flag(cli::Name{"package"}, cli::Description{"Package the application is part of"}, package_)); flag(cli::make_flag(cli::Name{"activity"}, cli::Description{"Activity of the application to start"}, activity_)); action([this](const cli::Command::Context&) { - if (package_.empty() || activity_.empty()) - BOOST_THROW_EXCEPTION(std::runtime_error("No package or activity specified")); + if (package_.empty() && activity_.empty()) + BOOST_THROW_EXCEPTION(std::runtime_error("Package or activity name not specified")); auto bus = std::make_shared(core::dbus::WellKnownBus::session); bus->install_executor(core::dbus::asio::make_executor(bus)); diff --git a/src/anbox/dbus/skeleton/application_manager.cpp b/src/anbox/dbus/skeleton/application_manager.cpp index a5ae6f9..04f0d26 100644 --- a/src/anbox/dbus/skeleton/application_manager.cpp +++ b/src/anbox/dbus/skeleton/application_manager.cpp @@ -35,8 +35,6 @@ ApplicationManager::ApplicationManager(const core::dbus::Bus::Ptr &bus, auto reader = msg->reader(); reader >> path; - DEBUG("path %s", path); - core::dbus::Message::Ptr reply; try { @@ -52,8 +50,6 @@ ApplicationManager::ApplicationManager(const core::dbus::Bus::Ptr &bus, err.what()); } - DEBUG("Sending reply"); - bus_->send(reply); }); diff --git a/src/anbox/network/socket_connection.cpp b/src/anbox/network/socket_connection.cpp index e7b50f7..e36f56b 100644 --- a/src/anbox/network/socket_connection.cpp +++ b/src/anbox/network/socket_connection.cpp @@ -72,7 +72,7 @@ void SocketConnection::on_read_size(const boost::system::error_code& error, std: if (connections_) connections_->remove(id()); - BOOST_THROW_EXCEPTION(std::runtime_error(error.message())); + return; } std::vector data(bytes_read); diff --git a/src/anbox/rpc/message_processor.cpp b/src/anbox/rpc/message_processor.cpp index 6e0488e..c9134c6 100644 --- a/src/anbox/rpc/message_processor.cpp +++ b/src/anbox/rpc/message_processor.cpp @@ -20,7 +20,6 @@ #include "anbox/rpc/make_protobuf_object.h" #include "anbox/rpc/constants.h" #include "anbox/common/variable_length_array.h" -#include "anbox/utils.h" #include "anbox_rpc.pb.h"