Перейти к содержанию
Fire Monkey от А до Я
  • 0

Проблема с манифестом


Сергей Доктор

Вопрос

Всем добрый!!!!!!!!! В rad studio 10.2 было все ок. Приложение под андроид компилится и работает отлично. Запускаю этот же проект в rad studio 10.3.2 . Приложение компилится и запускается, но не получает необходимые разрешения, хотя с манифестом все отлично. Снова запускаю проект в Studio 10.2 и все разрешения получает. Как думаете в чём проблема?

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

в USES Permission выставил разрешения, манифест генерируется автоматом. снёс 10.3 и поставил 10.2 все в порядке, разрешения получает при установке apk.  вот манифест, но думаю не в нём дело. ведь работает с ним нормально в версии 10.2

Спойлер

 

<?xml version="1.0" encoding="utf-8"?>
<!-- BEGIN_INCLUDE(manifest) -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.embarcadero.Google"
        android:versionCode="1"
        android:versionName="1.0.0"
        android:installLocation="internalOnly">

    <!-- This is the platform API where NativeActivity was introduced. -->
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="28" />
    <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
    <uses-permission android:name="android.permission.MICROPHONE"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_CHECKING_PROPERTIES" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCOUNT_MANAGER" />
    <uses-permission android:name="android.permission.ADD_VOICEMAIL" />
    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
    <uses-permission android:name="android.permission.BATTERY_STATS" />
    <uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" />
    <uses-permission android:name="android.permission.BIND_DEVICE_ADMIN" />
    <uses-permission android:name="android.permission.BIND_INPUT_METHOD" />
    <uses-permission android:name="android.permission.BIND_VPN_SERVICE" />
    <uses-permission android:name="android.permission.BIND_REMOTEVIEWS" />
    <uses-permission android:name="android.permission.BIND_TEXT_SERVICE" />
    <uses-permission android:name="android.permission.BIND_WALLPAPER" />
    <uses-permission android:name="android.permission.BIND_APPWIDGET" />
    <uses-permission android:name="android.permission.BRICK" />
    <uses-permission android:name="android.permission.BROADCAST_STICKY" />
    <uses-permission android:name="android.permission.BROADCAST_PACKAGE_REMOVED" />
    <uses-permission android:name="android.permission.BROADCAST_SMS" />
    <uses-permission android:name="android.permission.BROADCAST_WAP_PUSH" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.CALL_PRIVILEGED" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />
    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
    <uses-permission android:name="android.permission.CLEAR_APP_CACHE" />
    <uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" />
    <uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES" />
    <uses-permission android:name="android.permission.DELETE_CACHE_FILES" />
    <uses-permission android:name="android.permission.DELETE_PACKAGES" />
    <uses-permission android:name="android.permission.DEVICE_POWER" />
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
    <uses-permission android:name="android.permission.DIAGNOSTIC" />
    <uses-permission android:name="android.permission.DUMP" />
    <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
    <uses-permission android:name="android.permission.FACTORY_TEST" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />
    <uses-permission android:name="android.permission.FORCE_BACK" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.GET_PACKAGE_SIZE" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.GLOBAL_SEARCH" />
    <uses-permission android:name="android.permission.HARDWARE_TEST" />
    <uses-permission android:name="android.permission.INJECT_EVENTS" />
    <uses-permission android:name="android.permission.INSTALL_LOCATION_PROVIDER" />
    <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
    <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
    <uses-permission android:name="android.permission.MANAGE_APP_TOKENS" />
    <uses-permission android:name="android.permission.MASTER_CLEAR" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
    <uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
    <uses-permission android:name="android.permission.READ_CALENDAR" />
    <uses-permission android:name="android.permission.READ_CALL_LOG" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.READ_FRAME_BUFFER" />
    <uses-permission android:name="android.permission.READ_HISTORY_BOOKMARKS" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.READ_PROFILE" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.READ_SOCIAL_STREAM" />
    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
    <uses-permission android:name="android.permission.READ_SYNC_STATS" />
    <uses-permission android:name="android.permission.READ_USER_DICTIONARY" />
    <uses-permission android:name="android.permission.REBOOT" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.RECEIVE_MMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.REORDER_TASKS" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.SET_ACTIVITY_WATCHER" />
    <uses-permission android:name="android.permission.SET_ALARM" />
    <uses-permission android:name="android.permission.SET_ALWAYS_FINISH" />
    <uses-permission android:name="android.permission.SET_ANIMATION_SCALE" />
    <uses-permission android:name="android.permission.SET_DEBUG_APP" />
    <uses-permission android:name="android.permission.SET_ORIENTATION" />
    <uses-permission android:name="android.permission.SET_POINTER_SPEED" />
    <uses-permission android:name="android.permission.SET_PROCESS_LIMIT" />
    <uses-permission android:name="android.permission.SET_TIME" />
    <uses-permission android:name="android.permission.SET_TIME_ZONE" />
    <uses-permission android:name="android.permission.SET_WALLPAPER" />
    <uses-permission android:name="android.permission.SET_WALLPAPER_HINTS" />
    <uses-permission android:name="android.permission.SIGNAL_PERSISTENT_PROCESSES" />
    <uses-permission android:name="android.permission.STATUS_BAR" />
    <uses-permission android:name="android.permission.SUBSCRIBED_FEEDS_READ" />
    <uses-permission android:name="android.permission.SUBSCRIBED_FEEDS_WRITE" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    <uses-permission android:name="android.permission.USE_SIP" />
    <uses-permission android:name="com.android.vending.BILLING" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_CALENDAR" />
    <uses-permission android:name="android.permission.WRITE_CALL_LOG" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_GSERVICES" />
    <uses-permission android:name="android.permission.WRITE_HISTORY_BOOKMARKS" />
    <uses-permission android:name="android.permission.WRITE_PROFILE" />
    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_SMS" />
    <uses-permission android:name="android.permission.WRITE_SOCIAL_STREAM" />
    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />

    <uses-feature android:glEsVersion="0x00020000" android:required="True"/>
    <application android:persistent="False" 
        android:restoreAnyVersion="True" 
        android:label="  " 
        android:debuggable="True" 
        android:largeHeap="False"
        android:icon="@drawable/ic_launcher"
        android:theme="@style/AppTheme"
        android:hardwareAccelerated="true">


        <service android:exported="false" android:name="com.embarcadero.services.Project3" />

        <!-- Our activity is a subclass of the built-in NativeActivity framework class.
             This will take care of integrating with our NDK code. -->
        <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"
                android:label=" "
                android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
                android:launchMode="singleTask"
                android:noHistory="true">
            <!-- Tell NativeActivity the name of our .so -->
            <meta-data android:name="android.app.lib_name"
                android:value="Project1" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter> 
        </activity>
        
        <receiver android:name="com.embarcadero.rtl.notifications.NotificationAlarm" />

         <receiver 
             android:name="com.embarcadero.Project1.BootReceiver"
             android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 
           <intent-filter> 
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.DEFAULT" /> 
           </intent-filter> 
         </receiver> 
    </application>
</manifest>
<!-- END_INCLUDE(manifest) -->

 


 

Изменено пользователем Andrey Efimov
спрятал манифест под спойлер
Ссылка на комментарий
  • 0
  • Модераторы

Отлично, теперь давайте по порядку.

1 час назад, Сергей Доктор сказал:

в USES Permission выставил разрешения, манифест генерируется автоматом. снёс 10.3 и поставил 10.2 все в порядке, разрешения получает при установке apk.

и

1 час назад, Сергей Доктор сказал:

версии андроида пробовал на 6   7   9   5.1.1, на реальных телефонах, не в эмуляторе.

скорее всего это не соответствует действительности.

 

Объясню почему, кратко. А подробнее можно почитать по ссылке ниже.

С Android 6 (API 23) были усилены меры безопасности. Разрешения (Uses Permissions) были поделены на две категории "Обычные" и "Опасные". Отличие заключается в том, что:

  • на версиях Андроид до 6 достаточно прописать разрешения в манифесте
  • на версиях Андроид 6 и выше, опасные разрешения необходимо прописать в манифесте и запрашивать в режиме реального времени, т.е. прямо во время выполнения приложения.

Тут важно добавить, что есть способ обойти эти меры безопасности, но не факт что он будет работать на новых версиях Андроида, поэтому озвучивать его не буду.

В вашем манифесте море опасных разрешений и соответственно они не могли быть получены через манифест на версиях Андроид >=6.

 

1 час назад, Сергей Доктор сказал:

<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="28" />

Вы явно указываете, что ваше приложение поддерживает Андроид 4.0 и разрабатывалось для Андроид 9. А значит вы уже обязаны запрашивать разрешения в режиме реального времени.

Примечание. Студия 10.2.* и 10.3.* официально не поддерживают Андроид 4.0-4.4.4, но приложения запускаются. Однако при использовании студии версии 10.3.3 и некоторых компонентов вы увидите кучу ошибок или AV на версиях Андроид 4.0-4.4.4.

 

Есть серия статей, которые могут быть вам полезны:

[Статья][Android] Серия статей на тему Uses Permissions

 

Ссылка на комментарий
  • 0

вам прислать готовое апк и опровергнуть то, что вы написали? на вышеперечисленых версиях андроид разрешения прописываются при установке

Ссылка на комментарий
  • 0
  • Модераторы
1 минуту назад, Сергей Доктор сказал:

вам прислать готовое апк и опровергнуть то, что вы написали? на вышеперечисленых версиях андроид разрешения прописываются при установке

Выкладывайте.

Ссылка на комментарий
  • 0
  • Модераторы
Только что, Сергей Доктор сказал:

разобрались как удалить его? 

Сейчас я разбираюсь как вы получили разрешения в обход системы безопасности...

Ссылка на комментарий
  • 0
  • Модераторы
2 минуты назад, Сергей Доктор сказал:

вот это мне и самому интересно. как вы и писали с 6 версии должно это прекратиться, но почему-то не прекратилось. 

Скинуть исходники в личку есть возможность?

 

3 минуты назад, Сергей Доктор сказал:

вот это мне и самому интересно. как вы и писали с 6 версии должно это прекратиться, но почему-то не прекратилось. 

Я знаю только один способ, но не исключено, что есть ещё...

Ссылка на комментарий
  • 0

дело не в исхолниках, любую прогу скомпилю и будет такая. даже тупо хелоло ворлд

 

я думаю это дыра, надеюсь пофиксят, знать бы куда сообщить

Ссылка на комментарий
  • 0
  • Модераторы
22 минуты назад, Сергей Доктор сказал:

дело не в исхолниках, любую прогу скомпилю и будет такая. даже тупо хелоло ворлд

Ок. сообщение с файлом я скрыл, т.к. не вызывает доверия. Было бы не плохо, получить от вас хоть какие-то исходники. Если такое происходит и с хеллоуворлд, то хотя бы эти исходники. Тут дело в том, что я компилю на 10.3.3 хеллоу ворлд с такими же разрешениями и у меня они не выдаются...

11 минут назад, Сергей Доктор сказал:

я думаю это дыра, надеюсь пофиксят, знать бы куда сообщить

О багах, дырах и т.п. сообщать сюда https://quality.embarcadero.com/

Ссылка на комментарий
  • 0
  • Модераторы

Ааа, ну всё ясно...

Вы выложили не тот манифест... В вашем приложении используется способ обхода о котором я говорил. Если бы сразу исходники предоставили, то всё решилось бы быстро.

На самом деле у вас указано minSdkVersion= 14 и targetSdkVersion=14. Это способ обхода запроса разрешений, но гугл обещал его выпилить... видимо забыли...))

Возвращаясь к вашему вопросу, студия 10.3.* просто меняет значения на новые (или даже пересоздаёт файл манифеста, выяснять не буду) и поэтому разрешения не выдаются. Вот и вся загадка...

 

Да, кстати, приложение ваше не запускается. Падает с чёрным экраном.

Ссылка на комментарий
  • 0
  • Модераторы
5 минут назад, Сергей Доктор сказал:

завтра выложу что-нибудь с исходниками, подумаем тремя головами с ярославом что это за баг, мазафака )))))))))

это не баг. Я же выше расписал вам в чём дело. Я декомпилировал ваш файл и там лежит другой манифест.

Ссылка на комментарий
  • 0
  • Модераторы
19 минут назад, Сергей Доктор сказал:

теперь ясно, спасибо за ответы. а я уже думал нашел катастрофически опасную дыру ))))))))) извините за беспокойство!!!!!!!!!

Пожалуйста.

Способ изначально был задуман для плавного перехода на новое АПИ, но видимо забыли убрать его...

 

Вот ваш реальный манифест из файла который вы выложили выше. (Надеюсь приложение не несёт никакого вреда?))

Спойлер

Screenshot_20191225-010349_APK Editor Pro.jpg

 

Ссылка на комментарий
  • 0

наверно достали уже кодеры-самоучки с глупыми вопросами? ))))))))) приложение вреда не несёт, оно не падает с черным экраном, оно запускает сервис и уходит в анабиоз ))))))))) 

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...