Top Related Projects
Quick Overview
Island is an Android app that creates a secure, isolated environment for running other apps. It allows users to clone and run apps in a separate, controlled space, enhancing privacy and security. Island can be used for work profiles, app management, and data isolation.
Pros
- Enhances privacy and security by isolating apps and their data
- Allows running multiple instances of the same app
- Supports creating work profiles for better separation of personal and professional use
- Provides fine-grained control over app permissions and data access
Cons
- May have compatibility issues with some apps or devices
- Requires some technical knowledge to set up and use effectively
- Can potentially impact battery life and performance due to running multiple app instances
- Limited documentation and support compared to more mainstream solutions
Getting Started
To get started with Island:
- Install the Island app from the Google Play Store or F-Droid.
- Open the app and follow the setup wizard to create a new Island (isolated space).
- Use the Island app to clone and manage apps within the isolated environment.
- To clone an app, select it from the list of installed apps and tap the "Clone to Island" button.
- Access cloned apps from the Island space or through shortcuts on your home screen.
Note: Some features may require root access or additional setup steps, depending on your device and Android version.
Competitor Comparisons
Using system APIs directly with adb/root privileges from normal apps through a Java process started with app_process.
Pros of Shizuku
- Provides a more flexible and powerful approach to system-level operations
- Supports a wider range of Android versions and devices
- Offers better performance for certain operations due to its direct system access
Cons of Shizuku
- Requires more complex setup and configuration
- May have a steeper learning curve for developers
- Potentially higher security risk due to elevated privileges
Code Comparison
Island:
public class IslandManager {
public void createProfile() {
// Create a new isolated profile
}
}
Shizuku:
public class ShizukuManager {
public void executeCommand(String command) {
// Execute system command with elevated privileges
}
}
Both projects aim to enhance Android functionality and privacy, but they take different approaches. Island focuses on creating isolated environments for apps, while Shizuku provides a more general-purpose tool for system-level operations. Island may be easier to use for basic app isolation, while Shizuku offers more flexibility and power for advanced users and developers. The choice between the two depends on the specific use case and the level of control required over the Android system.
The Magic Mask for Android
Pros of Magisk
- Provides root access and system-level modifications
- Supports a wide range of modules for customization
- Offers more advanced features for power users
Cons of Magisk
- Requires unlocking the bootloader, which may void warranty
- Higher risk of security vulnerabilities due to root access
- More complex setup and usage compared to Island
Code Comparison
Magisk (C++):
static int magisk_main(int argc, char *argv[]) {
if (argc > 1 && strcmp(argv[1], "-c") == 0) {
printf(MAGISK_VERSION ":MAGISK\n");
return 0;
}
// ...
}
Island (Java):
public class IslandManager {
public void createIsland(String name) {
// Create a new isolated space
}
// ...
}
While both projects aim to enhance Android functionality, they serve different purposes. Magisk focuses on system-level modifications and root access, while Island provides app isolation and privacy features without requiring root. Magisk offers more powerful customization options but comes with higher risks and complexity. Island, on the other hand, provides a safer and more user-friendly approach to app management and privacy protection.
LSPosed Framework
Pros of LSPosed
- More comprehensive system-level modifications and customizations
- Supports a wider range of Android versions and devices
- Active development with frequent updates and community support
Cons of LSPosed
- Requires root access, which may void device warranty
- Higher risk of system instability if not used carefully
- Steeper learning curve for users unfamiliar with Xposed framework
Code Comparison
LSPosed (Xposed module example):
@XposedHook(targets = XC_MethodHook.class)
public class ExampleHook {
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
XposedHelpers.findAndHookMethod("com.example.app.MainActivity", lpparam.classLoader,
"onCreate", Bundle.class, new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
// Modify behavior before method execution
}
});
}
}
Island (App cloning example):
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName(getPackageName(), "com.oasisfeng.island.MainActivity"));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
While both projects aim to enhance Android functionality, LSPosed offers more advanced system-level modifications through the Xposed framework, whereas Island focuses on app isolation and management without requiring root access. LSPosed provides greater customization potential but comes with higher risks and complexity, while Island offers a more user-friendly approach to app management and privacy protection.
Display and control your Android device
Pros of scrcpy
- Provides real-time screen mirroring and control of Android devices on a computer
- Supports high-quality video streaming with low latency
- Cross-platform compatibility (Windows, macOS, Linux)
Cons of scrcpy
- Requires a physical connection or ADB over network
- Limited to screen mirroring and control, without advanced app management features
- May have compatibility issues with some Android devices or custom ROMs
Code Comparison
scrcpy (C):
static void screen_init_render(struct screen *screen)
{
SDL_RendererInfo renderer_info;
if (SDL_GetRendererInfo(screen->renderer, &renderer_info)) {
LOGW("Could not get renderer info");
return;
}
}
Island (Java):
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null)
getFragmentManager().beginTransaction().add(android.R.id.content, new MainFragment()).commit();
}
While scrcpy focuses on screen mirroring and control, Island is designed for app management and isolation on Android devices. scrcpy offers real-time interaction with Android devices from a computer, while Island provides a sandboxed environment for running multiple instances of apps on a single device. The code snippets reflect their different purposes, with scrcpy handling rendering and Island managing app lifecycles.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Island
Island for Android
Build Instructions
Island depends on "deagle" library, which must be cloned alongside Island in the same path.
\--
\- island
\- deagle
This project is constructed into several modules, with assembly module as the build portal, to support separate "light" build for core modules, in the form of "product flavor" in Gradle build configuration.
The "engine" module shares the same package name with the "complete" build, to inherit the profile/device owner privilege. The "mobile" and other modules can be installed and updated separately alongside "engine" module for development convenience.
Open API
Due to the exclusivity nature, user could only use one Android DPC app at a time, and price of switching DPC is far too heavy. To encourage active exploration and broader development in the capabilities of DPC and therefore better benefit users, Island is devoted to build an open collaboration for community developers, either in development of this project or opening DPC capabilities to 3rd-party apps via open API. Island itself will not focus on the rich set of features, but mainly focuses on building a powerful engine as an open platform for much more apps from the community.
Starting from the first public version of Island, all APIs are open to 3rd-party apps with the standard runtime-permission of Android as user authorization. Developers can start building apps now to take advantage of the Island open APIs.
The protocol of all APIs are well defined and maintained in the class "Api".
Contribution
If you found bugs, made minor improvements or translated the strings, please feel free to send us pull-requests.
If you are interested in improving the functionality of Island, please create an issue first to discuss your thoughts with us, we are open to collaboration in future development.
If you need new APIs for your apps to take advantage of the DPC capabilities, please feel free to create an issue to describe your app and its use case of those APIs. We are still in the early stage of building a rich set of open APIs.
Top Related Projects
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot