从 NDK 代码中读取构建参数

Posted

技术标签:

【中文标题】从 NDK 代码中读取构建参数【英文标题】:Read build arguments from NDK code 【发布时间】:2017-10-16 13:30:53 【问题描述】:

我有一个将我的 api 密钥注入我的应用程序的 NDK 文件,代码可以正常工作:

#include <jni.h>

JNIEXPORT jstring JNICALL
Java_yt_javi_nftweets_ui_main_MainActivity_getTwitterKey(JNIEnv *env, jobject instance) 

    return (*env)->  NewStringUTF(env, "my_twitter_key");

我想通过自定义构建参数更改 my_twitter_key

externalNativeBuild 
  ndkBuild 
    arguments "-DTWITTER_API_KEY=my_twitter_key"
  

并在 Java_yt_javi_nftweets_ui_main_MainActivity_getTwitterKey 方法中读取该参数

【问题讨论】:

【参考方案1】:

您可以在 C 代码中为 cFlags 和 stringify it 添加定义:

android 
    defaultConfig 
        externalNativeBuild 
            ndkBuild 
                cFlags "-DTWITTER_API_KEY=my_twitter_key"
            
        
    


#define xstr(s) str(s)
#define str(s) #s

...

return (*env)->NewStringUTF(env, xstr(TWITTER_API_KEY));

【讨论】:

以上是关于从 NDK 代码中读取构建参数的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法从 gradle 任务中读取命令行参数?

使用 LuaBridge 从 LuaRef 读取参数列表

C ++读取内部Android NDK文件

asp.net如何从数据库读取一个字段的值然后赋值给一个参数

通过云函数从云存储中读取数据

从 gradle 构建脚本中读取 heroku 环境变量