Как получить конфигурацию сборки приложения (отладка или выпуск), используя JNI android? - PullRequest
0 голосов
/ 13 марта 2020

Я работаю над библиотекой so в проекте android. Мне нужно проверить конфигурацию сборки (отладка или выпуск) приложения на нативный код с помощью JNI. Что может быть лучшим способом сделать это?

1 Ответ

0 голосов
/ 12 апреля 2020

Если ваш пакет com.example.hellojni, он захватывает поля DEBUG и BUILD_TYPE stati c из класса BuildConfig:

extern "C" JNIEXPORT jstring JNICALL
Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz )
{
    jclass cls_HelloJni = env->FindClass("com/example/hellojni/BuildConfig");
    jfieldID fid_HelloJNI_buildType = env->GetStaticFieldID(cls_HelloJni, "BUILD_TYPE", "Ljava/lang/String;");
    jfieldID fid_HelloJNI_debug = env->GetStaticFieldID(cls_HelloJni, "DEBUG", "Z");
    jstring jBuildType = (jstring) env->GetStaticObjectField(cls_HelloJni, fid_HelloJNI_buildType);
    jboolean jDebug = env->GetStaticBooleanField(cls_HelloJni,fid_HelloJNI_debug);
    const char * buildType = env->GetStringUTFChars(jBuildType, nullptr);
    std::string out = (std::stringstream() << "Build type is " << buildType << ", debug says " << (jDebug ? "debug" : "not debug")).str();
    env->ReleaseStringUTFChars(jBuildType, buildType);

    return (env)->NewStringUTF(out.c_str());
}
...