React Native Java NativeModule依赖问题:WearOS通信类无法解析
问题:React Native Android端无法解析WearOS相关依赖导入
无法解析以下导入语句:
//import android.support.annotation.Nullable; //import com.google.android.gms.common.api.GoogleApiClient; //import com.google.android.gms.wearable.MessageApi; //import com.google.android.gms.wearable.MessageEvent; //import com.google.android.gms.wearable.Node; //import com.google.android.gms.wearable.Wearable;
已添加的依赖配置:
implementation("androidx.annotation:annotation:1.7.1") implementation("com.google.android.gms:play-services-wearable:18.1.0") implementation("com.google.android.gms:play-services-all-wear:15.0.1") implementation("com.google.android.gms:play-services-base:18.3.0")
补充说明:ReactContextBaseJavaModule已实现Android与React Native双向通信;WearOS项目为Kotlin编写,可向手机端发送消息,但缺少监听响应功能。
解决方案
1. 移除冲突依赖并统一版本
- 删除
implementation("com.google.android.gms:play-services-all-wear:15.0.1"),该依赖是旧版本全包,与play-services-wearable:18.1.0存在版本冲突,且当前官方推荐直接使用play-services-wearable即可覆盖所需功能 - 将
play-services-base版本调整为与play-services-wearable一致(如18.1.0),避免版本不一致导致的类加载异常,调整后的依赖如下:implementation("androidx.annotation:annotation:1.7.1") implementation("com.google.android.gms:play-services-wearable:18.1.0") implementation("com.google.android.gms:play-services-base:18.1.0")
2. 替换过时的导入路径
- 将
android.support.annotation.Nullable替换为AndroidX版本:import androidx.annotation.Nullable; GoogleApiClient是旧版API,已被新的客户端API替代,推荐使用Wearable.getMessageClient(context)获取客户端实例,替代原MessageApi的功能,相关类导入调整为:import com.google.android.gms.wearable.MessageClient; import com.google.android.gms.wearable.MessageEvent; import com.google.android.gms.wearable.Node; import com.google.android.gms.wearable.Wearable;
3. 同步Gradle并清理项目
- 执行Android Studio的
File -> Sync Project with Gradle Files完成依赖同步 - 执行命令清理缓存并重新构建:
./gradlew clean ./gradlew build --refresh-dependencies
4. 确认依赖添加位置
确保依赖是添加在app模块的build.gradle文件中,而非项目根目录的build.gradle
5. WearOS端实现消息监听(Kotlin)
在WearOS的Kotlin代码中,通过注册MessageClient.OnMessageReceivedListener实现消息监听,示例代码:
import com.google.android.gms.wearable.MessageClient import com.google.android.gms.wearable.MessageEvent import com.google.android.gms.wearable.Wearable import androidx.lifecycle.DefaultLifecycleObserver import androidx.lifecycle.LifecycleOwner // 获取MessageClient实例 val messageClient = Wearable.getMessageClient(applicationContext) // 定义消息监听器 val messageListener = object : MessageClient.OnMessageReceivedListener { override fun onMessageReceived(messageEvent: MessageEvent) { // 处理收到的消息,比如解析路径和内容 val path = messageEvent.path val message = String(messageEvent.data) // 执行后续业务逻辑 } } // 绑定生命周期自动注册/移除监听 lifecycle.addObserver(object : DefaultLifecycleObserver { override fun onResume(owner: LifecycleOwner) { super.onResume(owner) messageClient.addListener(messageListener) } override fun onPause(owner: LifecycleOwner) { super.onPause(owner) messageClient.removeListener(messageListener) } })
内容的提问来源于stack exchange,提问作者chris.middleton
相关产品推荐
相关产品推荐

