Error: NDK integration is deprecated in the current plugin

android studio项目中添加第三方包,有so文件,当再build文件中添加

ndk {

    abiFilters 'armeabi','x86'

}时,此时回报错,

当遇到这一问题时,有两种方法可以解决,第一种:在gradle.properties文件中添加“android.useDeprecatedNdk=true”,然后rebuild就可以了。

第二种,就是在app的build.gradle文件中添加如下代码,

sourceSets {
        main {
            jni.srcDirs = []
        }
    }

今天又遇到了这广告问题,所以就记录一下,,与大家分享。如果有其他解决办法也希望与各位朋友交流。

`public ::ndk::BnCInterface` 是一个用于Android NDK(Native Development Kit)的接口,用于在C++和Java之间进行通信。它提供了一种机制,使得C++代码可以调用Java代码,反之亦然。以下是对该接口的详细介绍: ### 主要功能 1. **双向通信**:`BnCInterface` 允许C++代码和Java代码之间进行双向通信。这意味着你可以在C++中调用Java方法,也可以在Java中调用C++方法。 2. **接口定义**:在C++中定义接口,使得Java代码可以通过JNI(Java Native Interface)调用这些接口。 3. **线程管理**:提供了线程管理机制,确保在不同的线程中调用接口方法时的线程安全。 ### 接口详解 `BnCInterface` 通常包含以下几个部分: 1. **接口声明**: ```cpp class BnCInterface : public ::ndk::IInterface { public: enum { FIRST_CALL_TRANSACTION = ::ndk::IBinder::FIRST_CALL_TRANSACTION, // 定义事务ID }; // 声明纯虚函数 virtual void someMethod(int param) = 0; // 声明asBinder方法 virtual ::ndk::sp<::ndk::IBinder> asBinder() = 0; }; ``` 2. **接口实现**: ```cpp class CInterface : public BnCInterface { public: // 实现纯虚函数 virtual void someMethod(int param) { // 方法实现 } // 实现asBinder方法 virtual ::ndk::sp<::ndk::IBinder> asBinder() { return this; } // 实现onTransact方法 virtual ::ndk::binder::Status onTransact(uint32_t code, const ::ndk::Parcel& data, ::ndk::Parcel* reply, uint32_t flags = 0) override { switch (code) { case FIRST_CALL_TRANSACTION: { int param = data.readInt32(); someMethod(param); return ::ndk::binder::Status::ok(); } default: return ::ndk::binder::Status::fromExceptionCode(::ndk::binder::Status::EX_UNSUPPORTED_TRANSACTION); } } }; ``` 3. **JNI调用**: ```cpp extern "C" JNIEXPORT void JNICALL Java_com_example_example_someMethod(JNIEnv* env, jobject /* this */, jint param) { // 获取C++对象并调用方法 CInterface* cInterface = ...; // 获取C++对象 cInterface->someMethod(param); } ``` ### 使用步骤 1. **定义接口**:在C++中定义接口,并实现具体的方法。 2. **实现JNI调用**:在C++中实现JNI调用,使得Java代码可以调用C++方法。 3. **调用接口**:在Java中通过JNI调用C++接口。 ### 优点 - **高效**:C++代码通常比Java代码更高效,适合处理性能敏感的任务。 - **灵活性**:提供了双向通信机制,使得C++和Java之间的交互更加灵活。 ### 缺点 - **复杂性**:使用JNI和NDK需要一定的C++和Java知识,代码复杂度较高。 - **调试困难**:调试C++和Java之间的交互代码相对困难。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值