Top Related Projects
Termux - a terminal emulator application for Android OS extendible by variety of packages.
The Magic Mask for Android
An F-Droid client with modern UI and an arsenal of extra features.
F-Droid client with Material UI.
Quick Overview
SAI (Split APKs Installer) is an Android app that allows users to install split APKs, also known as App Bundles. It provides a user-friendly interface for installing and managing these multi-part applications, which are becoming increasingly common on the Google Play Store.
Pros
- Simplifies the process of installing split APKs on Android devices
- Supports installation of multiple APK files simultaneously
- Offers a built-in APK analyzer for detailed information about app packages
- Provides a clean and intuitive user interface
Cons
- Requires granting special permissions for installation, which may concern some users
- Limited to Android devices and cannot be used on other platforms
- May not work with all types of split APKs or app bundles
- Potential security risks if used to install APKs from untrusted sources
Getting Started
To use SAI, follow these steps:
- Download the latest release of SAI from the GitHub releases page.
- Install the APK on your Android device.
- Grant the necessary permissions when prompted.
- Open SAI and select the "Install APKs" option.
- Choose the split APK files you want to install.
- Tap "Install" and follow the on-screen instructions to complete the installation.
Note: SAI requires Android 5.0 or higher to function properly.
Competitor Comparisons
Termux - a terminal emulator application for Android OS extendible by variety of packages.
Pros of termux-app
- More comprehensive terminal emulator and Linux environment for Android
- Larger community and more frequent updates
- Supports a wide range of Linux packages and tools
Cons of termux-app
- Steeper learning curve for non-technical users
- Requires more system resources and storage space
- Not specifically designed for APK installation and management
Code Comparison
termux-app (Java):
public class TermuxActivity extends Activity {
private TerminalView mTerminalView;
private TermuxService mTermuxService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_termux);
}
}
SAI (Kotlin):
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
}
}
Summary
termux-app is a powerful terminal emulator and Linux environment for Android, offering a wide range of functionality and tools. It has a larger community and more frequent updates compared to SAI. However, it has a steeper learning curve and requires more system resources.
SAI, on the other hand, is specifically designed for APK installation and management, making it more user-friendly for those tasks. It has a simpler interface and focuses on a specific set of features related to app installation.
The code comparison shows that termux-app uses Java, while SAI is written in Kotlin, reflecting their different approaches and target audiences.
The Magic Mask for Android
Pros of Magisk
- More comprehensive root solution with system-level modifications
- Larger community and more extensive module ecosystem
- Regular updates and active development
Cons of Magisk
- Requires more technical knowledge to use effectively
- Can potentially void device warranty or cause system instability if misused
Code Comparison
Magisk (C++):
static int mount_root(const char *block_dev, const char *mnt_point) {
char device[256];
strcpy(device, block_dev);
if (strncmp(device, "/dev/", 5) == 0)
strcpy(device, &device[5]);
return mount(block_dev, mnt_point, "ext4", MS_RDONLY, nullptr);
}
SAI (Java):
private void extractSplit(File split, File destination) throws IOException {
try (ZipFile zipFile = new ZipFile(split)) {
ZipEntry dexEntry = zipFile.getEntry("classes.dex");
if (dexEntry != null) {
Utils.copyFile(zipFile.getInputStream(dexEntry), new FileOutputStream(destination));
}
}
}
While both projects deal with Android system modifications, Magisk focuses on root access and system-wide changes, whereas SAI is primarily an APK installer and splitter. Magisk's code involves low-level system operations, while SAI deals with APK file manipulation. Magisk is more complex and powerful, but SAI is more user-friendly for specific APK-related tasks.
An F-Droid client with modern UI and an arsenal of extra features.
Pros of Neo-Store
- Open-source and actively maintained, with regular updates and improvements
- Supports a wider range of F-Droid repositories and custom sources
- More advanced filtering and sorting options for app discovery
Cons of Neo-Store
- Less intuitive user interface compared to SAI's streamlined design
- May have a steeper learning curve for new users
- Potentially slower app installation process due to additional features
Code Comparison
SAI (Java):
public class SaiPiService extends PiService {
@Override
protected void onHandleIntent(Intent intent) {
// Handle installation intent
}
}
Neo-Store (Kotlin):
class AppInstallManager @Inject constructor(
private val context: Context,
private val packageManager: PackageManager
) {
fun installApp(apkFile: File) {
// Install app logic
}
}
Both repositories focus on Android app installation, but Neo-Store offers a more comprehensive F-Droid client experience, while SAI specializes in split APK installation. Neo-Store is written in Kotlin, utilizing modern Android development practices, whereas SAI is primarily Java-based. The code snippets showcase the different approaches to app installation, with Neo-Store using dependency injection and a dedicated manager class.
F-Droid client with Material UI.
Pros of Droid-ify
- Actively maintained with more recent updates
- Focuses specifically on F-Droid client functionality
- Cleaner, more modern user interface
Cons of Droid-ify
- More limited in scope compared to SAI's broader APK installation capabilities
- Potentially less flexible for advanced users who need SAI's specific features
- Smaller community and fewer contributors
Code Comparison
SAI (Java):
public class SaiPiService extends PiService {
@Override
protected void onHandleIntent(Intent intent) {
// SAI-specific implementation
}
}
Droid-ify (Kotlin):
class DroidifyService : Service() {
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
// Droid-ify-specific implementation
return START_NOT_STICKY
}
}
The code snippets show different approaches to service implementation, with SAI using Java and a PiService
extension, while Droid-ify uses Kotlin and a standard Android Service
. This reflects the overall architectural differences between the two 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 CopilotREADME
Split APKs Installer
SAI (Split APKs Installer) is an Android app that lets you install split APKs (such as ones distributed as Android App Bundle). It has both rooted and rootless installation methods.
State of SAI
SAI is kinda dead cause I have no motivation for continuing its development. I will probably maybe still occasionally fix bugs and add small features/improvements, focusing on the installer functionality, but idk. If you're looking for an actual backup solution, you can try OAndBackupX or Swift Backup.
Contributing
Please read Contributing guide
Exported .apks files meta
SAI adds some meta information to .apks files it exports, you can find the description of the format it uses in the Meta format description
License
SAI is licensed under GPLv3
Top Related Projects
Termux - a terminal emulator application for Android OS extendible by variety of packages.
The Magic Mask for Android
An F-Droid client with modern UI and an arsenal of extra features.
F-Droid client with Material UI.
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