Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.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
Android 发布时获取地理位置时应用程序强制关闭_Android_React Native_Geolocation - Fatal编程技术网

Android 发布时获取地理位置时应用程序强制关闭

Android 发布时获取地理位置时应用程序强制关闭,android,react-native,geolocation,Android,React Native,Geolocation,我已经在AndroidManifest.xml 在调试模式下运行时没有问题 但是,当我在发布模式下使用react native run android--variant=release进行测试时,它成功构建,但当我进入带有Geolocation.watchPosition的屏幕时,应用程序崩溃,即使我已经授予了权限 这是我的脚本PosisiMarker.js: import React,{Component}来自'React'; 从“react native”导入{Platform,Alert}

我已经在
AndroidManifest.xml
在调试模式下运行时没有问题

但是,当我在发布模式下使用
react native run android--variant=release
进行测试时,它成功构建,但当我进入带有
Geolocation.watchPosition
的屏幕时,应用程序崩溃,即使我已经授予了权限

这是我的脚本
PosisiMarker.js

import React,{Component}来自'React';
从“react native”导入{Platform,Alert};
从“react native maps”导入{Marker,AnimatedRegion}
从“反应本机EventEmitter”导入EventEmitter;
从“../../../config”导入{radius}
从“反应本机退出应用程序”导入RNExitApp
从“反应本机权限”导入权限
从“反应本地地理定位服务”导入地理定位;
导出默认类PossiMarker扩展组件{
建造师(道具){
超级(道具);
此.state={
allowPresence:false,
坐标:新的动画区域({
纬度:0,
经度:0,,
}),
警告:错误,
}
}
组件安装(){
这是checkPresenceLocation();
}
组件将卸载(){
控制台日志(“清除”);
Geolocation.clearWatch(this.watchId);
地理定位。停止观察();
}
选中模拟(位置){
if(position.mock&&!this.state.alert){
this.setState({alert:true});
警惕,警惕(
“佩里加坦!”,
“这是一个很好的例子。这是一个很简单的例子!”,
[
{text:'Keluar',onPress:()=>RNExitApp.exitApp()},
],
{可取消:false},
);
}
}
checkPresenceLocation=()=>{
控制台日志(“监视位置”);
this.watchId=Geolocation.watchPosition(
(职位)=>{
控制台日志('位置',位置);
此。选中模拟(位置)
const{coordinate}=this.state;
常数newCoordinate={
纬度:位置。坐标。纬度,
经度:position.coords.longitude,
};
如果(Platform.OS==='android'){
如果(此标记){
这个.marker.\u组件.animateMarkeroCoordinate(newCoordinate,500);
}
}否则{
coordinate.timing(newCoordinate.start();
}
//这是我的国家({
//纬度:位置。坐标。纬度,
//经度:position.coords.longitude,
//错误:null,
// });
设latLng={
纬度:位置。坐标。纬度,
经度:position.coords.longitude,
}
让距离=geolib.getDistance(latLng{
纬度:this.props.location.lat,
经度:this.props.location.lang,
})
if(距离this.setState({error:error.message}),
{EnableHighAccurance:true,超时:20000,最大值:1000,距离筛选器:10})
}
emit presence=()=>{
EventEmitter.emit('TOGGLE_PRESENCE',this.state.allowPresence);
}
emitCurrentPos=(位置)=>{
EventEmitter.emit('当前位置',位置);
}
渲染(){
返回(
this.marker=marker}coordinate={this.state.coordinate}style={{{zIndex:3}}/>
)
//if(this.state.allowPresence){
//
//}其他{
//返回null;
// }
}
}
AndroidManifest.xml


我已经解决了这个问题,只需在
android/app/build.gradle中禁用
Proguard

...

/**
* Run Proguard to shrink the Java bytecode in release builds.
*/
def enableProguardInReleaseBuilds = false

您可以发布错误消息吗?如果设备上有错误消息,您可能需要从
logcat
获取错误消息。