【发布时间】:2017-11-17 12:03:05
【问题描述】:
我想要 ndk 库中的 不同 字符串 值。 因为我有两种风格的演示和现场直播,所以我想要价值“你好,我来自演示”,对于演示风味和现场风味,我想要“你好,我来自现场”
这是我的java文件代码
public class MainActivity extends AppCompatActivity {
// Used to load the 'native-lib' library on application startup.
static {
System.loadLibrary("native-lib");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Example of a call to a native method
TextView tv = (TextView) findViewById(R.id.sample_text);
tv.setText(stringFromJNI());
}
/**
* A native method that is implemented by the 'native-lib' native library,
* which is packaged with this application.
*/
public native String stringFromJNI();
}
这是我的cpp文件代码
#include <jni.h>
#include <string>
extern "C"
JNIEXPORT jstring JNICALL
Java_com_de_demo_ndk2_MainActivity_stringFromJNI(
JNIEnv *env,
jobject /* this */) {
std::string hello = "hello I am from demo";
return env->NewStringUTF(hello.c_str());
}
这是我的 build.gradle 文件
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.de.demo.ndk2"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
flavorDimensions "default"
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags ""
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
demo
{
// applicationId "com.readwhere.whitelabel.test"
//applicationId "com.android.rwstaging"
applicationId "com.android.demo"
versionName "2.1"
dimension "default"
externalNativeBuild {
cmake {
targets "native-lib-demo","my-executible- demo"
}}
}
live
{
// applicationId "com.readwhere.whitelabel.test"
//applicationId "com.android.rwstaging"
applicationId "com.android.live"
versionName "2.1"
dimension "default"
}}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
}
我在演示文件夹和主文件夹中粘贴了相同的 cpp 文件 但可以完成我的任务。任何帮助将不胜感激 这是一些参考链接
https://developer.android.com/studio/projects/gradle-external-native-builds.html
How to set CmakeLists path in product flavor for each Android ABI?
【问题讨论】:
-
不,这和我的问题不同..
-
这是实现相同最终结果的一种方式(在您的本机代码中针对不同的产品风格具有不同的值)。如果您想使用其他方法,那么您需要详细说明您目前使用当前解决方案遇到的问题。
标签: java android c++ android-ndk android-productflavors