| # Run with `dart run ffigen --config ffigen.yaml`. |
| name: JniBindings |
| description: | |
| Bindings for libdartjni.so which is part of jni plugin. |
| |
| It also transitively includes type definitions such as JNIEnv from third_party/jni.h; |
| |
| However, functions prefixed JNI_ are not usable because they are in a different shared library. |
| |
| Regenerate bindings with `flutter pub run ffigen.dart --config ffigen.yaml`. |
| output: 'lib/src/third_party/jni_bindings_generated.dart' |
| headers: |
| entry-points: |
| - 'src/dartjni.h' # Exports majority of JNI functions |
| - 'src/internal.h' |
| - 'src/third_party/global_jni_env.h' # Exports GlobalJniEnv type |
| - 'src/jni_constants.h' |
| include-directives: |
| - 'src/dartjni.h' |
| - 'src/internal.h' |
| - 'src/third_party/global_jni_env.h' |
| - 'third_party/jni.h' # jni.h from Android NDK |
| - 'src/jni_constants.h' |
| compiler-opts: |
| - '-Ithird_party/' |
| enums: |
| rename: |
| 'JniType': 'JniCallType' |
| 'jobjectRefType': 'JObjectRefType' |
| functions: |
| exclude: |
| # Exclude init functions supposed to be defined in loaded DLL, not JNI |
| - 'JNI_.*' |
| - 'GetJniContextPtr' |
| - 'setJniGetters' |
| - 'jni_log' |
| # Exclude functions with VarArgs, jnigen will generate them based on the |
| # exact arguments needed. |
| - 'globalEnv_NewObject' |
| - 'globalEnv_Call(Static|Nonvirtual|)[A-Z][a-z]+Method' |
| # Inline functions |
| # keep-sorted start |
| - 'acquire_lock' |
| - 'attach_thread' |
| - 'check_exception' |
| - 'destroy_cond' |
| - 'destroy_lock' |
| - 'init_cond' |
| - 'init_lock' |
| - 'load_class' |
| - 'load_class_global_ref' |
| - 'load_class_local_ref' |
| - 'load_class_platform' |
| - 'load_env' |
| - 'load_field' |
| - 'load_method' |
| - 'load_static_field' |
| - 'load_static_method' |
| - 'release_lock' |
| - 'signal_cond' |
| - 'thread_id' |
| - 'to_global_ref' |
| - 'to_global_ref_result' |
| - 'wait_for' |
| # keep-sorted end |
| structs: |
| exclude: |
| - 'JniContext' |
| - 'JniLocks' |
| - 'JNIEnv' |
| - '_JNIEnv' |
| - 'JNIInvokeInterface' |
| - '__va_list_tag' |
| - 'CallbackResult' |
| rename: |
| ## opaque struct definitions, base types of jfieldID and jmethodID |
| '_jfieldID': 'jfieldID_' |
| '_jmethodID': |
| 'jmethodID_' |
| #'JNI(.*)': 'Jni$1' |
| unions: |
| rename: |
| 'jvalue': 'JValue' |
| globals: |
| exclude: |
| - 'jni' |
| - 'jniEnv' |
| - 'context_getter' |
| - 'env_getter' |
| typedefs: |
| exclude: |
| - 'va_list' |
| - '__builtin_va_list' |
| rename: |
| 'JNI(.*)': 'Jni$1' |
| # Primitives |
| 'jbyte': 'JByteMarker' |
| 'jboolean': 'JBooleanMarker' |
| 'jchar': 'JCharMarker' |
| 'jshort': 'JShortMarker' |
| 'jint': 'JIntMarker' |
| 'jlong': 'JLongMarker' |
| 'jfloat': 'JFloatMarker' |
| 'jdouble': 'JDoubleMarker' |
| 'jsize': 'JSizeMarker' |
| |
| 'jclass': 'JClassPtr' |
| 'jobject': 'JObjectPtr' |
| 'jmethodID': 'JMethodIDPtr' |
| 'jfieldID': 'JFieldIDPtr' |
| 'jthrowable': 'JThrowablePtr' |
| 'jstring': 'JStringPtr' |
| 'jarray': 'JArrayPtr' |
| 'jobjectArray': 'JObjectArrayPtr' |
| 'jbooleanArray': 'JBooleanArrayPtr' |
| 'jbyteArray': 'JByteArrayPtr' |
| 'jcharArray': 'JCharArrayPtr' |
| 'jshortArray': 'JShortArrayPtr' |
| 'jintArray': 'JIntArrayPtr' |
| 'jlongArray': 'JLongArrayPtr' |
| 'jfloatArray': 'JFloatArrayPtr' |
| 'jdoubleArray': 'JDoubleArrayPtr' |
| 'jweak': 'JWeakPtr' |
| 'jvalue': 'JValue' |
| preamble: | |
| // Autogenerated file. Do not edit. |
| // Generated from an annotated version of jni.h provided in Android NDK. |
| // (NDK Version 23.1.7779620) |
| // The license for original file is provided below: |
| |
| /* |
| * Copyright (C) 2006 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| /* |
| * JNI specification, as defined by Sun: |
| * http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/jniTOC.html |
| * |
| * Everything here is expected to be VM-neutral. |
| */ |
| |
| // ignore_for_file: always_specify_types |
| // ignore_for_file: camel_case_types |
| // ignore_for_file: non_constant_identifier_names |
| // ignore_for_file: constant_identifier_names |
| // ignore_for_file: unused_field |
| // ignore_for_file: unused_element |
| // coverage:ignore-file |
| comments: |
| style: any |
| length: full |