diff --git a/buildSrc/src/main/kotlin/custom/CustomApps.kt b/buildSrc/src/main/kotlin/custom/CustomApps.kt index b4b05bc81..31c7351b9 100644 --- a/buildSrc/src/main/kotlin/custom/CustomApps.kt +++ b/buildSrc/src/main/kotlin/custom/CustomApps.kt @@ -46,8 +46,6 @@ fun ProductFlavors.create(customApps: List) { applicationIdSuffix = ".kiwixcustom${customApp.name}" buildConfigField("String", "ZIM_URL", "\"${customApp.url}\"") buildConfigField("String", "ENFORCED_LANG", "\"${customApp.enforcedLanguage}\"") - // Add asset file name in buildConfig file, we will use later to receive the zim file. - buildConfigField("String", "PLAY_ASSET_FILE", "\"${customApp.name}.zim\"") buildConfigField("Boolean", "DISABLE_SIDEBAR", "${customApp.disableSideBar}") buildConfigField("Boolean", "DISABLE_TABS", "${customApp.disableTabs}") buildConfigField("Boolean", "DISABLE_READ_ALOUD", "${customApp.disableReadAloud}") diff --git a/custom/build.gradle.kts b/custom/build.gradle.kts index 6ecdbfe1b..796573b34 100644 --- a/custom/build.gradle.kts +++ b/custom/build.gradle.kts @@ -34,7 +34,7 @@ android { createDownloadTask(it) createPublishApkWithExpansionTask(it, applicationVariants) } - File("$projectDir/../install_time_asset/src/main/assets", "$name.zim").let { + File("$projectDir/../install_time_asset/src/main/assets").let { createDownloadTaskForPlayAssetDelivery(it) createPublishBundleWithAssetPlayDelivery() } @@ -114,7 +114,7 @@ fun writeZimFileData(responseBody: ResponseBody, file: File, chunkSize: Long = 1 while (inputStream.read(buffer).also { bytesRead = it } != -1) { if (outputStream == null) { // Create a new chunk file - val nextChunkFile = File(file.parent, "chunk$chunkNumber.zim") + val nextChunkFile = File(file.path, "chunk$chunkNumber.zim") nextChunkFile.createNewFile() outputStream = FileOutputStream(nextChunkFile) } @@ -151,8 +151,6 @@ fun ProductFlavor.createDownloadTaskForPlayAssetDelivery( ) { group = "Downloading" doLast { - if (file.exists()) file.delete() - file.createNewFile() OkHttpClient().newCall(fetchRequest()).execute().use { response -> if (response.isSuccessful) { diff --git a/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomFileValidator.kt b/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomFileValidator.kt index 0ea9c68ab..3f77025e6 100644 --- a/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomFileValidator.kt +++ b/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomFileValidator.kt @@ -22,8 +22,11 @@ import android.content.Context import android.content.pm.PackageManager import android.content.res.AssetFileDescriptor import android.content.res.AssetManager +import android.os.ParcelFileDescriptor import android.util.Log import androidx.core.content.ContextCompat +import org.kiwix.kiwixmobile.core.extensions.deleteFile +import org.kiwix.kiwixmobile.core.extensions.isFileExist import org.kiwix.kiwixmobile.core.utils.files.FileUtils import org.kiwix.kiwixmobile.custom.main.ValidationState.HasBothFiles import org.kiwix.kiwixmobile.custom.main.ValidationState.HasFile @@ -66,6 +69,9 @@ class CustomFileValidator @Inject constructor(private val context: Context) { assetFileDescriptorList.add(assetManager.openFd(it)) } val combinedFilePath = FileUtils.getDemoFilePathForCustomApp(context) + val demoFile = File(combinedFilePath) + if (demoFile.isFileExist()) demoFile.deleteFile() + demoFile.createNewFile() val combinedFileOutputStream = FileOutputStream(combinedFilePath) val chunkSize = 100 * 1024 * 1024 @@ -87,8 +93,14 @@ class CustomFileValidator @Inject constructor(private val context: Context) { chunkFileInputStream.close() } - - return assetFileDescriptorList[0] + return AssetFileDescriptor( + ParcelFileDescriptor.open( + demoFile, + ParcelFileDescriptor.MODE_READ_ONLY + ), + 0L, + demoFile.length() + ) } catch (packageNameNotFoundException: PackageManager.NameNotFoundException) { Log.w( "ASSET_PACKAGE_DELIVERY",