Я пытался создать подписанный 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)
}
}
Я ожидал, что устройство выведет диалоговое окно с разрешениями или получит информацию о геолокации с устройства, как и ожидалось, но поканичего этого не произошло.