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:

JohnC

Expert
Licensed User
Longtime User
I am just looking for a floating circle that is always shown on the screen no matter what app the user is using, and when the user taps this circle, I just want it to simply launch my app (or bring it to foreground). And of course if the user long-presses the circle, it would allow the user to then drag the circle to a different part of the screen and dock it then when they release their finger.

Can the "OverlayWindow" do this?
 

Informatix

Expert
Licensed User
Longtime User
I am just looking for a floating circle that is always shown on the screen no matter what app the user is using, and when the user taps this circle, I just want it to simply launch my app (or bring it to foreground). And of course if the user long-presses the circle, it would allow the user to then drag the circle to a different part of the screen and dock it then when they release their finger.

Can the "OverlayWindow" do this?
Yes. It's a common use for it.
 

Modern_Digital

Member
Licensed User
Longtime User
Hello,

I have some of questions :

1) When i finish from making my protected library and i load it in my app project Which library from ProBundle libraries should i load it with my protected library or can i just load my protected library only.

2) I want to know which Android API version or level should i set in my project manifest file in these values minSdkVersion and targetSdkVersion to make my app working without any errors or problems if i use any library of ProBundle libraries.

3) Is ProBundle libraries work fine with All Devices CPUs like armeabi and armeabi-v7a and x86 and mips.
 
Last edited:

Informatix

Expert
Licensed User
Longtime User
Hello,

I have some of questions :

1) When i finish from making my protected library and i load it in my app project Which library from ProBundle libraries should i load it with my protected library or can i just load my protected library only.

2) I want to know which Android API version or level should i set in my project manifest file in these values minSdkVersion and targetSdkVersion to make my app working without any errors or problems if i use any library of ProBundle libraries.

3) Is ProBundle libraries work fine with All Devices CPUs like armeabi and armeabi-v7a and x86 and mips.
Support is provided only by email.
 

JohnC

Expert
Licensed User
Longtime User
I noticed that the overlaywindow will appear over the lockscreen.

How can I prevent this from happening?
 

wonder

Expert
Licensed User
Longtime User
Any plans into adding QuadTrees into the DataCollection set?
 

aidymp

Well-Known Member
Licensed User
Longtime User
A new version of ProBundle is available.

Changelog:
- ArchiverPlusZip should be fully compatible now with B4J (untested);

No Its not B4J compatible, but it does compile now, before v 1.12 it wouldn't even compile!

java.lang.NoSuchMethodError: anywheresoftware.b4a.keywords.Common.DoEvents()V
at b4a.flm.archiverplus.ArchiverPlusZip.a(SourceFile:206)
at b4a.flm.archiverplus.ArchiverPlusZip.UnZip(SourceFile:319)
at b4j.example.main._prounzipper(main.java:337)
at b4j.example.main._appstart(main.java:261)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:612)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:229)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:159)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:93)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:90)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:84)
at b4j.example.main.start(main.java:38)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
at java.lang.Thread.run(Thread.java:745)
java.lang.RuntimeException: java.lang.NoSuchMethodError: anywheresoftware.b4a.keywords.Common.DoEvents()V
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:114)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:90)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:84)
at b4j.example.main.start(main.java:38)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)

Would there be an easy fix? ;)

Thanks

Aidy
 

Informatix

Expert
Licensed User
Longtime User
No Its not B4J compatible, but it does compile now, before v 1.12 it wouldn't even compile!

java.lang.NoSuchMethodError: anywheresoftware.b4a.keywords.Common.DoEvents()V
at b4a.flm.archiverplus.ArchiverPlusZip.a(SourceFile:206)
at b4a.flm.archiverplus.ArchiverPlusZip.UnZip(SourceFile:319)
at b4j.example.main._prounzipper(main.java:337)
at b4j.example.main._appstart(main.java:261)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:612)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:229)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:159)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:93)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:90)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:84)
at b4j.example.main.start(main.java:38)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
at java.lang.Thread.run(Thread.java:745)
java.lang.RuntimeException: java.lang.NoSuchMethodError: anywheresoftware.b4a.keywords.Common.DoEvents()V
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:114)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:90)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:84)
at b4j.example.main.start(main.java:38)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)

Would there be an easy fix? ;)

Thanks

Aidy
It works fine with B4J but as the synchronous mode is not made for B4J, only for B4A, you have to set the asynchronous mode with:
Arc.ZipExecutionMode = Arc.ZIP_EXECMODE_ASYNCHRONOUS
 

aidymp

Well-Known Member
Licensed User
Longtime User
It works fine with B4J but as the synchronous mode is not made for B4J, only for B4A, you have to set the asynchronous mode with:
Arc.ZipExecutionMode = Arc.ZIP_EXECMODE_ASYNCHRONOUS

Yes! its fully working! no progress counter as its async, but it does work!

Thanks

Aidy
 

nadhiras

Member
Licensed User
Longtime User
this is what i looking for (PDFIUM)..
but when i try your pdfium demo its crash when i try to search using 100 pages PDF document,
and search is Case Sensitive..
are the premium library like the demo..??
 

Informatix

Expert
Licensed User
Longtime User
this is what i looking for (PDFIUM)..
but when i try your pdfium demo its crash when i try to search using 100 pages PDF document,
and search is Case Sensitive..
are the premium library like the demo..??
The provided Search function is case sensitive indeed and has no memory management (I did it quickly and I admit it could have been a lot better), so I suggest to replace it with your own search function (you can get the text of each page with PDFiumPage.Text).
 
Top