Я не могу заставить проект Android Wear использовать C ++. Я могу получить проект «Телефон и планшет» для использования C ++. Вот что я сделал.
Вот изображение инструментов SDK, которые я установил. У меня также установлены SDK API Уровни 24-27.
Я создаю новый проект. Я проверяю «Включить поддержку C ++». Я проверяю «Износ» (API 26: Android 8.0 (Oreo)). Я выбираю «Далее» кучу.
Для C ++ Standard я попробовал все три (Набор инструментов по умолчанию, C ++ 11, c ++ 14).
-fexceptions
или же -frtti
,В проекте, который создается в модуле «mobile», у меня есть папка «cpp», а в модуле «wear» — нет.
Если я создаю проект без поддержки «Телефон и планшет» («мобильный» модуль), то я все равно не получаю папку «cpp» в разделе «Износ».
Я пытался заставить проект использовать C ++ в модуле «wear». Вот что я сделал.
Я модифицировал build.gradle
(Модуль: носить), чтобы выглядеть так
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'
}
Я перезапускаю проект, который создает папку «cpp» под модулем «wear».
Я создаю native-lib.cpp
файл в папке «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());
}
В моей яве onCreate()
функцию я называю: stringFromJNIWatch()
,
Все строит без ошибок (зеленый молоток)
Когда я запускаю проект (как носимое устройство), я получаю эту ошибку:
Не найдена реализация для java.lang.String com.example.xorgaming.watchtestcpp.MainActivity.stringFromJNIWatch ()
Есть идеи, что я делаю не так? Android Wear поддерживает C ++?
Задача ещё не решена.
Других решений пока нет …