|
|
||
|---|---|---|
| .. | ||
| cxx | ||
| docs | ||
| gradle | ||
| java/com/facebook/jni | ||
| manifest | ||
| scripts | ||
| test | ||
| .gitignore | ||
| CMakeLists.txt | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| README.md | ||
| build.gradle | ||
| googletest-CMakeLists.txt.in | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| host.gradle | ||
| settings.gradle | ||
README.md
fbjni
The Facebook JNI helpers library is designed to simplify usage of the Java Native Interface. The helpers were implemented to ease the integration of cross-platform mobile code on Android, but there are no Android specifics in the design. It can be used with any Java VM that supports JNI.
struct JMyClass : JavaClass<JMyClass> {
static constexpr auto kJavaDescriptor = "Lcom/example/MyClass;";
// Automatic inference of Java method descriptors.
static std::string concatenate(
alias_ref<JClass> clazz,
// Automatic conversion to std::string.
std::string prefix) {
// Call methods easily.
static const auto getSuffix = clazz->getStaticMethod<JString()>("getSuffix");
// Manage JNI references automatically.
local_ref<JString> jstr = getSuffix(clazz);
// Automatic exception translation between Java and C++ (both ways).
// No need to check exception state after each call.
result += jstr->toStdString();
// Automatic conversion from std::string.
return result;
}
};
Documentation
- Why use a JNI wrapper?
- Set up your Android build with fbjni
- Quick reference to most features (great for copy/pasting!)
- Internal documentation for maintainers
License
fbjni is Apache-2 licensed, as found in the LICENSE file.