簡體   English   中英

Android中Java與NDK(JNI)之間的共享靜態var訪問

[英]Shared static var access between Java and NDK (JNI) in Android

我出於數學原因在我的應用程序中使用了許多靜態常量(這些參數只能由開發人員調整,而不能由用戶調整)。

在NDK方面,我有一個頭文件(.h),其中包含所有這些常量的值。 類似地,在Java方面,我有一個跟蹤相同變量(已復制)的類。

是否有一個地方(一個文件)可以存儲這些常量以供Java和C ++使用? 也許有點像XML文件,所以開發人員只需要調整那里的常量?

如果是這樣,我應該如何正確實現它(獲取)。

請格外小心使用以下變通辦法,但這可能會節省一些開發人員的精力。

從一個簡單的Java類開始:

package com.example.hellojni;

public class Settings {
    public final static int ANSWER = 42;
}

這是UseSettings.h

#pragma once
#define package struct { struct { bool hellojni; } example; } com = {{true}}; static bool com_example_hellojni_Settings =
#define public
#define final const
#define class struct
#include "../java/com/example/hellojni/Settings.java"
;
#undef class
#undef final
#undef public
#undef package

現在您可以在C ++文件中編寫類似

#include "UseSettings.h"
int answer = Settings::ANSWER;

可能已經對該解決方案進行了調整,使其可以與C99一起使用,但是我並未為此付出足夠的努力。

更新:

類似的方法可以應用於簡單的枚舉

package com.example.hellojni;

public enum Test {
    test1,
    test2,
    test3
}

#define public
#define package static struct { struct { bool hellojni; } example;} com {true}; static bool com_example_hellojni_Test =

#include "…/Test.java"

#undef public
#undef package

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM