B4A Library ProBundle

ProBundle contains all the following libraries:

- ArchiverPlusZip v1.13
Based on the Zip4j library, this library allows to add, extract, update and remove files from a zip archive.
It supports encryption and decryption (standard and AES), Zip64 format and split zip archives. It is compatible with B4J.

- ClassLoader v1.0
This library can dynamically load classes from a separate file (JAR or uninstalled APK) at runtime and verify the file signatures to make sure of its origin and integrity.
You can use the library to create plug-ins, load code encrypted in the assets or download code from a remote server, for example.

- CPUFeatures + source v1.0
This library detects the target device's CPU family and the maximum number of CPU cores.

- DataCollection v1.07
This library wraps the ArrayDeque, BitSet, PriorityQueue, SparseArray, Stack, TreeMap and TreeSet classes. These classes can replace your lists, maps or arrays for specific tasks. A TreeSet, for example, can maintain a sorted list of objects in a more efficient manner than a typical List class. A TreeMap is a map whose entries are sorted by their keys. A SparseArray is also a sorted map, but restricted to integer keys, that is lightning-fast.
This library can serialize to an array of bytes any collection, including Map, List and user defined types. A version for B4J is provided (without the SparseArray).

- F5Steg v1.2
This library implements F5, a secure steganographic algorithm, which embeds data into images. Data are encrypted with a password or, by default, with the application signature (thus any tampering of the APK will prevent from extracting valid data).

- FastIO + source v0.9
This library replaces the Read and Write functions (with their encrypted variant) of the RandomAccessFile library for arrays of bytes. These new functions are a lot faster.

- OverlayWindow + source v1.2
This library allows to create overlay windows and floating buttons. These interactive views can be displayed on top of all other applications.

- PackageUtils v2.1
This library replaces the PackageManager class of the Phone library. It gives plenty of informations on packages (activities, features, permissions, receivers, services, etc.) and can list the features available on the system (camera, gps, wifi, etc.). It allows experts to change the enabled state of components.
An application is provided with the library to show what you can get with it.

- UltimateArchiver v0.91
This library wraps P7Zip, a command line utility that can create archives with the 7z, zip, bzip2, gzip, tar or xz format. It can unpack files with extension 7z, cab, gz, img, iso, jar, rar, tar, zip and a few others.
It supports encryption/decryption and volumes. It is written in C to be as fast as possible.

- UnArchiver7z v1.0
Based on the official source code in C of 7zip, this library allows to extract files from a 7z archive compressed with the Lzma or Lzma2 method. It can unpack an archive directly from the assets.
It does not support decryption.

- UnArchiverRar v1.04
Based on the official source code in C++ of the UnRar.dll, this library allows to extract files from a Rar archive.
It supports decryption, Rar5 format, QuickOpen records and split Rar archives.

Since September 2018, ProBundle is available for free. You can still donate for it if you wish.
To send the money, just click on the Donate button below (the amount to enter is in euros):


CURRENT VERSION : ProBundle 1.22

DOWNLOAD HERE:
 
Last edited:

Informatix

Expert
Licensed User
Longtime User
If the lib does not use Android specific methods then it should work. Android Async Task for example will not work in a B4J library.

You need to use the B4J Version of SLC to compile it to a b4j library.
Maybe you can give it a try?
It's more complicated than that as B4J uses Java8. ArchiverPlusZip, which is optimized/shrinked by ProGuard, is not compatible because of that (Java 8 needs a valid stack map table, which is useless under Android and thus not updated by ProGuard).
 

DonManfred

Expert
Licensed User
Longtime User
Ok. I see.
Sorry, was just a thought... I did one B4J lib as yet; i dont use B4J much often.
 

aidymp

Well-Known Member
Licensed User
Longtime User
Just a few quick questions with ArchiverPlusZIP

when UNZIPPING sometime i want to overwrite existing files, the library appears to hang in this situation? - I would expect it to overwrite the existing file?
when ZIPPING if the output file exists, the library appears to hang in this situation? - I would expect it to update the existing file?

The question I asked in this post https://www.b4x.com/android/forum/threads/probundle-chargeable.58754/page-3#post-375370 regarding adding 3 folders within a folder

In 7zip adding an extra / at the end would exclude the top level folder could this be added??

eg

MAINFOLDER
SUB1
SUB2
SUB3

The command in 7 zip (simplified) 7zip a mynewzipfile.zip MAINFOLDER//
would result in a zip containing the following!

SUB1
SUB2
SUB3

Thanks and Happy Holidays to you!
 

Informatix

Expert
Licensed User
Longtime User
Just a few quick questions with ArchiverPlusZIP

when UNZIPPING sometime i want to overwrite existing files, the library appears to hang in this situation? - I would expect it to overwrite the existing file?
when ZIPPING if the output file exists, the library appears to hang in this situation? - I would expect it to update the existing file?

You should post an example that exhibits the issue because I overwrote millions of files during my many tests and never saw any problem.
Note that I won't look at this case before 2016.

The question I asked in this post https://www.b4x.com/android/forum/threads/probundle-chargeable.58754/page-3#post-375370 regarding adding 3 folders within a folder

In 7zip adding an extra / at the end would exclude the top level folder could this be added??

I don't want to use this trick because it's not intuitive and create confusion (looking at a path ending by "//", some may think it's a network path, not a folder that should not be included). If you want to include everything under a folder without this folder, it's not very complicated so I don't feel the need to add something to the library. Example:
B4X:
Dim FileList As List = File.ListFiles(MyFolder)
Dim MyList As List
MyList.Initialize
For i = 0 To FileList.Size - 1
        Dim FileName As String = FileList.Get(i)
        If File.IsDirectory(MyFolder, FileName) Then
            Arc.AddFolderToZip(MyFolder & "/" & FileName, ArchiveFolder & "MyZip.zip", "Archiver")
        Else
            MyList.Add(MyFolder & "/" & FileName)
        End If
Next
Arc.AddFilesToZip(MyList, ArchiveFolder & "MyZip.zip", "Archiver")
 

Cnrez

Member
Licensed User
Longtime User
good day informatix,
i just donated for Probundle just now, please kindly check and confirm.

thank you
 

susu

Well-Known Member
Licensed User
Longtime User
Hi @Informatix
I have a quick question so I ask here instead writing email to you.
Why ArchiverPlusZip lib only works with zip file on DirRootExternal? If I read zip file on DirDefaultExternal it always crash with error: a.a.a.c.a: zip file does not exist

Thank you.
 

Informatix

Expert
Licensed User
Longtime User
Hi @Informatix
I have a quick question so I ask here instead writing email to you.
Why ArchiverPlusZip lib only works with zip file on DirRootExternal? If I read zip file on DirDefaultExternal it always crash with error: a.a.a.c.a: zip file does not exist

Thank you.
I tested by replacing DirRoot by DirDefault in the lib example and everything worked fine. Could you try the same to check whether it's related to your project or your device?
 

susu

Well-Known Member
Licensed User
Longtime User
I tested by replacing DirRoot by DirDefault in the lib example and everything worked fine. Could you try the same to check whether it's related to your project or your device?

You're right.
This code is not work:
File.DirDefaultExternal & "file.zip"
But this worked:
File.DirDefaultExternal & "/file.zip"
 

JakeBullet70

Well-Known Member
Licensed User
Longtime User
Just a thanks again @Informatix.
After going through the 'protect your app' PDF I have really got a handle of what works and what does not in APP protection.
Really a good read, I had no idea how easy it is to get inside a APP.
 

demasi

Active Member
Licensed User
Longtime User
Hello, @Informatix,

I want to contribute and use some features of your fantastic library, but I need to know if the debug overlay have methods like show and hide, so we can have this behavior in a toggle button, or swipe gesture.
The protection library is another libary or is included in this probundle?
I´m a user of your another fantastic library, ULV.

Thanks!
 

Informatix

Expert
Licensed User
Longtime User
Hello, @Informatix,

I want to contribute and use some features of your fantastic library, but I need to know if the debug overlay have methods like show and hide, so we can have this behavior in a toggle button, or swipe gesture.
The protection library is another libary or is included in this probundle?
I´m a user of your another fantastic library, ULV.

Thanks!
Yes, it has. Look at this help document.
There's no protection library, but some of the libraries in the bundle can be used to protect your app. This is explained in the provided PDF guides.
 

Attachments

  • OverlayWindow_help.zip
    1.8 KB · Views: 232

demasi

Active Member
Licensed User
Longtime User
@Informatix,

As an idea for a future upgrade of the overlay window, it would be nice if you craete inside the lib a mode that works like the one created by @DonManfred, jut a log window, without the need to add views, listviews, buttons etc. So we just need to dim, initialize and start using as a log window.

I know the source code is attached with the lib, but unfortunately my java knowledge is not enough to do this.

Thanks.
thanks @DonManfred too for informing about this lib.
 

Informatix

Expert
Licensed User
Longtime User
@Informatix,

As an idea for a future upgrade of the overlay window, it would be nice if you craete inside the lib a mode that works like the one created by @DonManfred, jut a log window, without the need to add views, listviews, buttons etc. So we just need to dim, initialize and start using as a log window.

I know the source code is attached with the lib, but unfortunately my java knowledge is not enough to do this.

Thanks.
thanks @DonManfred too for informing about this lib.
The overlay window is just a window with a panel, like the activities are. It is supposed to hold various views and serve many purposes, like the activities. There's no strong reason to my eyes to weighten the lib code with a log feature that's limited to a specific purpose. I think that the existing example should be enough as it covers the need and can be modified easily.
Here's another example for this library that uses also a ListView but in a different manner than the logger example.
 

Attachments

  • OverlayClipboard.zip
    5.9 KB · Views: 213

ilan

Expert
Licensed User
Longtime User
hi

is it possible with the ArchiverPlusZIP to zip only specific files?

like create a list of few files and create a zip only from the files in the list?

thanx
 
Top