无法使用功能从android ndk

uoifb46i  于 2023-02-10  发布在  Android
关注(0)|答案(1)|浏览(175)

我正在尝试使用Android NDK中的AMotionEvent_getActionButton函数

但我得到以下错误

C/C++: /usr/home/ndk-project/main.c:188:26: error: 'AMotionEvent_getActionButton' is unavailable: introduced in Android 33
C/C++: /usr/android-sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/android/input.h:1370:9: note: 'AMotionEvent_getActionButton' has been explicitly marked unavailable here

上面说这个功能是安卓33推出的我用的是安卓33

相关代码行

int32_t buttonPress = AMotionEvent_getActionButton(event);

模块级构建.gradle

plugins {
    id 'com.android.application'
}

android {
    compileSdk 33
    ndkVersion '25.1.8937393'

    defaultConfig {
        applicationId = 'com.example.app'
        minSdkVersion 14
        targetSdkVersion 33
        externalNativeBuild {
            cmake {
                arguments '-DANDROID_STL=c++_static'
            }
        }
        ndk {
            abiFilters 'x86_64'
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
    lintOptions {
        abortOnError false
    }
    externalNativeBuild {
        cmake {
            path 'src/main/cpp/CMakeLists.txt'
        }
    }
    namespace 'com.example.app'
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.5.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
}

为什么会出现此错误?
我该怎么补救?

ffscu2ro

ffscu2ro1#

来自文档:

    • 编译Sdk版本**

此属性对NDK生成没有影响。NDK的API可用性由minSdkVersion控制。这是因为C++符号在库加载时会立即解析,而不是在首次调用时延迟解析使用minSdkVersion中不可用的任何符号将导致库无法加载到没有更新API的OS版本上,而不管这些API是否将被调用。

相关问题