Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a9a648aa authored by Jonathan Klee's avatar Jonathan Klee
Browse files

Implement SplitInstallService

Some applications like TikTok or PayPal that are using GMS can install
some features at runtime with a SplitInstallManager:
https://developer.android.com/guide/playcore/feature-delivery/on-demand

Implement SplitInstallService receiving split install requests
coming from FakeStore.
parent 04a5c70a
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -110,7 +110,8 @@ allOpen {


dependencies {
dependencies {


    api "com.gitlab.AuroraOSS:gplayapi:0e224071f3"
    // prebuilt from https://gitlab.e.foundation/e/os/gplayapi/
    api files('libs/gplayapi-3.0.1.jar')
    implementation 'androidx.core:core-ktx:1.7.0'
    implementation 'androidx.core:core-ktx:1.7.0'
    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.google.android.material:material:1.5.0'
    implementation 'com.google.android.material:material:1.5.0'
@@ -181,6 +182,7 @@ dependencies {
    def lifecycle_version = "2.4.0"
    def lifecycle_version = "2.4.0"
    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
    implementation "android.arch.lifecycle:extensions:1.1.1"


    // Coroutines
    // Coroutines
    def coroutines_version = "1.6.0"
    def coroutines_version = "1.6.0"
+3.78 MiB

File added.

Preview suppressed by a .gitattributes entry or the file's encoding is unsupported.

+10 −1
Original line number Original line Diff line number Diff line
@@ -5,6 +5,7 @@


    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="foundation.e.pwaplayer.provider.READ_WRITE" />
    <uses-permission android:name="foundation.e.pwaplayer.provider.READ_WRITE" />


    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
@@ -26,7 +27,6 @@
        tools:ignore="ProtectedPermissions" />
        tools:ignore="ProtectedPermissions" />
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
    <uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
    <uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
    <uses-permission android:name="android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION" />


    <application
    <application
        android:name=".AppLoungeApplication"
        android:name=".AppLoungeApplication"
@@ -88,6 +88,12 @@
            </intent-filter>
            </intent-filter>
        </receiver>
        </receiver>


        <receiver android:name=".splitinstall.SplitInstallBroadcastReceiver">
            <intent-filter>
                <action android:name="foundation.e.apps.ondemand.INSTALL_MODULE"/>
            </intent-filter>
        </receiver>

        <!-- If you want to disable android.startup completely. -->
        <!-- If you want to disable android.startup completely. -->
        <provider
        <provider
            android:name="androidx.startup.InitializationProvider"
            android:name="androidx.startup.InitializationProvider"
@@ -95,6 +101,9 @@
            tools:node="remove" />
            tools:node="remove" />


        <service android:name=".manager.pkg.PackageInstallerService" />
        <service android:name=".manager.pkg.PackageInstallerService" />
        <service
            android:name=".splitinstall.SplitInstallService"
            android:exported="true" />
    </application>
    </application>


</manifest>
</manifest>
 No newline at end of file
+6 −0
Original line number Original line Diff line number Diff line
package foundation.e.apps;

interface ISplitInstallService {

    void installSplitModule(String packageName, String moduleName);
}
 No newline at end of file
+1 −1
Original line number Original line Diff line number Diff line
@@ -47,7 +47,7 @@ class DownloadManager @Inject constructor(
        fileName: String,
        fileName: String,
        downloadCompleted: ((Boolean, String) -> Unit)?
        downloadCompleted: ((Boolean, String) -> Unit)?
    ): Long {
    ): Long {
        val directoryFile = File(cacheDir + subDirectoryPath)
        val directoryFile = File("$cacheDir/$subDirectoryPath")
        val downloadFile = File("$cacheDir/$fileName")
        val downloadFile = File("$cacheDir/$fileName")
        if (!directoryFile.exists()) {
        if (!directoryFile.exists()) {
            directoryFile.mkdirs()
            directoryFile.mkdirs()
Loading