我无法让 Android Wear 项目使用 C++。我能够获得一个使用 C++ 的“手机和平板电脑”项目。这是我所做的。
这是我安装的 SDK 工具的图像。我还安装了 SDK API 级别 24-27。
我创建了一个新项目。我选中“包括 C++ 支持”。我检查“磨损”(API 26:Android 8.0(奥利奥))。我多次选择“下一步”。
对于 C++ 标准,我已经尝试了所有三个(默认工具链、C++11、C++14)。
- 我不检查
-fexceptions
或-frtti
。
- 我不检查
在“mobile”模块下创建的项目中,我有一个“cpp”文件夹,但在“wear”模块下没有。
如果我创建一个没有“手机和平板电脑”支持的项目(“移动”模块),那么我仍然没有在“磨损”模块下获得“cpp”文件夹。
我尝试强制项目在“wear”模块下使用 C++。这是我所做的。
我修改了
build.gradle
(模块:wear)看起来像这样apply plugin: 'com.android.application' android { compileSdkVersion 26 defaultConfig { applicationId "com.example.xorgaming.watchtestcpp" minSdkVersion 25 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" externalNativeBuild { cmake { cppFlags "-std=c++11" } } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } externalNativeBuild { cmake { path "CMakeLists.txt" } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.google.android.support:wearable:2.2.0' implementation 'com.google.android.gms:play-services-wearable:11.8.0' implementation 'com.android.support:percent:26.1.0' implementation 'com.android.support:support-v4:26.1.0' implementation 'com.android.support:recyclerview-v7:26.1.0' implementation 'com.android.support:wear:26.1.0' compileOnly 'com.google.android.wearable:wearable:2.2.0' }
我重新启动了在“wear”模块下创建“cpp”文件夹的项目。
我在“cpp”文件夹中创建了一个
native-lib.cpp
文件。它看起来像这样:extern "C" JNIEXPORT jstring JNICALL Java_com_example_xorgaming_watchtestcpp_MainActivity_stringFromJNIWatch( JNIEnv *env, jobject /* this */) { std::string hello = "Hello from C++ WATCH!"; return env->NewStringUTF(hello.c_str()); }
在我的 java
onCreate()
函数中,我调用:stringFromJNIWatch()
。一切构建无误(绿色锤子)
当我运行该项目(作为可穿戴设备)时出现此错误:
No implementation found for java.lang.String com.example.xorgaming.watchtestcpp.MainActivity.stringFromJNIWatch()
知道我做错了什么吗? Android Wear 是否支持 C++?
最佳答案
自发布此问题以来,情况发生了很大变化。但一半的答案是:是的,您可以将 C++ 和 Java 与 Wear OS 一起使用。对于 Android 应用程序,您可以遵循相同的说明。
至于失败的原因,我的建议是仔细检查路径。如果您按照说明 here你会注意到 cpp
目录与 java 目录位于同一目录中。通常类似于 MyApplication/app/src/main
将有一个java目录和一个cpp目录。这有助于将所有内容都包含在最终的 .apk
中。
关于android - Android Wear 是否支持 Android Studio 中的 C++ (JNI)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48996541/