Компоненты, не требующие разрешения / зависящие от разрешения, не работают в версии выпуска, использующей реагировать на нативный и Android - PullRequest
0 голосов
/ 28 декабря 2018

Я пытался создать подписанный APK-файл приложения, используя React Native для устройства Android.После исправления нескольких проблем, кажется, все работает, но приглашение разрешения при явном вызове и зависимая функциональность.

В варианте отладки все работает отлично, приглашение разрешения и связанный компонент (геолокация) работают согласованно.

Устройство Android работает под управлением ОС 7.1.1 - SDK 25, я выбрал разрешение приложения на местоположение, но оно не получает информацию с устройства.

Я также используюмодуль response-native-image-picker, который вызывает диалоговые окна разрешений, когда это необходимо, он работает при выпуске.

app / build.gradle

android {

    compileSdkVersion 25
    buildToolsVersion '28.0.3'

    defaultConfig {
        applicationId "com.remetaldriverapp"
        minSdkVersion 25
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }
...
}

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.remetaldriverapp">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission 
android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    <uses-permission 
android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission 
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-feature android:name="android.hardware.location.gps" />
    <uses-feature android:name="android.hardware.location.network" />
...

Я также спрашиваю у пользователей разрешение на мой App.js

requestGeoLocationPermission = async () =>  {
try {       
  const perm = await PermissionsAndroid.request(
    PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
    {
      'title': 'This App needs permission to use your location',
      'message': 'please choose an option ',
    }
  );
  console.log('asking for permission', perm);
  const granted = await PermissionsAndroid.check( PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION );
  console.log('asking for granted', granted);
  if (granted) {
    console.log("Geolocation activated");
    return this.watchLocation();         
  } else {
    console.log("Geolocation disabled")
    return -1;
  }
} catch (err) {
  console.log('failed geolocation');
  console.warn(err)
}

}

Я ожидал, что устройство выведет диалоговое окно с разрешениями или получит информацию о геолокации с устройства, как и ожидалось, но поканичего этого не произошло.

...