What is it?
This is a tool to automatically generate a B4A-type R class (in java) when developing libraries.
This is NOT required for any B4A use code.
This is NOT a requirement for library generation.
This is only required for a particular methodology of library wrapping. It allows you to access resource files from within the library without packaging it yet.
How was it built?
This is a python script turned to an .exe in pyinstaller.
How to run it?
Run this in the folder with the base class of the source you are trying to wrap. It doesnt really matter where you run it from, it will recursively go through every subfolder and analyze any .java files found in those folders.
What does it generate?
It will generate the R.java file in the same folder as itself.
The R class will have the following format (you will need to add the imports).
Usage?
By embedding the R.java file in your library you will be able to access resources added using #AdditionalRes.
Bugs?
It generates a lot of duplicate identifiers.
Havent really tested it in a real library.
Download?
RGenerator2:
https://www.dropbox.com/s/sri0h96u0zyjp30/RGenerator2.exe?dl=0
RGenerator Version 1:
https://www.dropbox.com/s/9vhdilztbjxxe5x/RGenerator.zip?dl=0
Credits?
@warwound for identifying this method of accessing resources.
This is a tool to automatically generate a B4A-type R class (in java) when developing libraries.
This is NOT required for any B4A use code.
This is NOT a requirement for library generation.
This is only required for a particular methodology of library wrapping. It allows you to access resource files from within the library without packaging it yet.
How was it built?
This is a python script turned to an .exe in pyinstaller.
How to run it?
Run this in the folder with the base class of the source you are trying to wrap. It doesnt really matter where you run it from, it will recursively go through every subfolder and analyze any .java files found in those folders.
What does it generate?
It will generate the R.java file in the same folder as itself.
The R class will have the following format (you will need to add the imports).
B4X:
public class R {
public static final class color {
public static int material_drawer_selected_text = BA.applicationContext.getResources().getIdentifier("material_drawer_selected_text", "color", BA.packageName);
public static int material_drawer_secondary_text = BA.applicationContext.getResources().getIdentifier("material_drawer_secondary_text", "color", BA.packageName);
}
public static final class dimen {
public static int material_drawer_margin = BA.applicationContext.getResources().getIdentifier("material_drawer_margin", "dimen", BA.packageName);
public static int material_drawer_margin = BA.applicationContext.getResources().getIdentifier("material_drawer_margin", "dimen", BA.packageName);
}
public static final class string {
public static int drawer_close = BA.applicationContext.getResources().getIdentifier("drawer_close", "string", BA.packageName);
}
public static final class id {
public static int icon = BA.applicationContext.getResources().getIdentifier("icon", "id", BA.packageName);
public static int name = BA.applicationContext.getResources().getIdentifier("name", "id", BA.packageName);
}
}
Usage?
By embedding the R.java file in your library you will be able to access resources added using #AdditionalRes.
Bugs?
It generates a lot of duplicate identifiers.
Havent really tested it in a real library.
Download?
RGenerator2:
https://www.dropbox.com/s/sri0h96u0zyjp30/RGenerator2.exe?dl=0
RGenerator Version 1:
https://www.dropbox.com/s/9vhdilztbjxxe5x/RGenerator.zip?dl=0
Credits?
@warwound for identifying this method of accessing resources.
Last edited: