Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未定义的不是对象(正在计算';RNDeviceInfo.deviceId';)-反应本机设备信息中出现错误_Javascript_Android_React Native - Fatal编程技术网

Javascript 未定义的不是对象(正在计算';RNDeviceInfo.deviceId';)-反应本机设备信息中出现错误

Javascript 未定义的不是对象(正在计算';RNDeviceInfo.deviceId';)-反应本机设备信息中出现错误,javascript,android,react-native,Javascript,Android,React Native,我使用的是react本机设备信息库,它可以很好地用于iOS模拟器。但对于Android,我收到一个错误: undefined is not object (evaluating 'RNDeviceInfo.deviceId') 有什么问题吗? 我按照库页面指南中的说明安装了它(使用rnpm)。 然后在componentWillMount()中,我尝试获取设备id: import DeviceInfo from 'react-native-device-info'; ... component

我使用的是react本机设备信息库,它可以很好地用于iOS模拟器。但对于Android,我收到一个错误:

undefined is not object (evaluating 'RNDeviceInfo.deviceId')
有什么问题吗? 我按照库页面指南中的说明安装了它(使用rnpm)。 然后在componentWillMount()中,我尝试获取设备id:

import DeviceInfo from 'react-native-device-info';
... 
componentWillMount() {
    let clientId = DeviceInfo.getUniqueID();
  }

除了
rnpm install react native device info
和中的说明之外,我还必须手动向以下文件添加一些行:

  • /android/settings.gradle

    rootProject.name='YourReactProject'
    包括“:应用程序“,”:反应本机设备信息”
    project(“:react native device info”).projectDir=newFile(rootProject.projectDir,“../node_modules/react native device info/android”)
    
  • /android/app/build.gradle

    。。。
    依赖关系{
    编译文件树(目录:“libs”,包括:[“*.jar”])
    编译“com.android.support:appcompat-v7:23.0.1”
    从节点_模块编译“com.facebook.react:react native:+”//
    编译项目(“:反应本机设备信息”)
    }
    ...
    
  • 通过运行
    react native run android来重建


  • 首先检查是否将其添加到package.json中? 然后使用以下命令将包链接到react native

    react-native link react-native-device-info
    
    它手动将包与react native链接

    我在IOS中面临这个问题

    甚至我也链接了显示相同问题的包

    在Xcode中打开您的项目, 然后在构建阶段下,单击+按钮,添加一个二进制文件,其中包含react本机设备信息

    重新运行这个项目,它对我有效


    看起来这个软件包现在使用椰子荚。运行
    react native link
    ,然后检查您的pod文件是否有以下内容:

    pod 'RNDeviceInfo', :path => '../node_modules/react-native-device-info'
    
    如果在那里,那么你只需要安装/更新你的播客

    cd ios
    pod install
    

    确保重新启动metro服务器并重新运行react native run ios

    使用并更改

    您的项目\node\u modules\react native device info\android\build.gradle'


    在这里,作为编译的实现

    首先,如果您使用的是react native version<0.60,请确保项目中链接了
    react native device info

    如果未链接,则使用
    react native link react native device info
    链接,然后运行
    react native run android
    命令

    如果使用react native version>=0.60跳过此链接命令,因为自动链接应该可以工作,但请确保运行
    react native run android
    命令

    然后使用

    从“反应本机设备信息”导入设备信息

    DeviceInfo.getUniqueId()

    有一个小错误。您正在使用DeviceInfo.getUniqueID()而不是DeviceInfo.getUniqueId()


    查看文档

    您使用的RN版本是什么?“react native”:“^0.27.1”,并且您已经按照android自述文件中的其他步骤进行了操作?具体来说,您已将代码添加到MainActivity?指南中说:“rnpm安装react-native设备信息。rnpm将安装(--save)此模块,然后链接react-native,因此您不必按如下方式链接每个平台。”-所以看起来我不需要这样做。我查看了主活动-rnpm自动添加了这些行。
    cd ios
    pod update
    
    dependencies {
    def googlePlayServicesVersion = project.hasProperty('googlePlayServicesVersion') ? project.googlePlayServicesVersion : DEFAULT_GOOGLE_PLAY_SERVICES_VERSION
    
    compile 'com.facebook.react:react-native:+'
    compile "com.google.android.gms:play-services-gcm:$googlePlayServicesVersion"}