جشنواره عیدانه راکت | عضویت ویژه راکت برای آخرین بار | افزایش قیمت‌ها از سال جدید | و ...

مشاهده اطلاعات بیشتر...
ثانیه
دقیقه
ساعت
روز
arazsalmasi
5 سال پیش توسط arazsalmasi مطرح شد
1 پاسخ

مشکل جدی با SYSTEM ALERT WINDOW در ریکت

سلام دوستان
من هر کاری کردم نتونستم این مجوز رو از اپ پاک کنم
این مجوز هم باعث میشه ۲ تا مجوز دیگه هم پاک نشن
خود ریکت گفته یا منیفست دیگه درست کنین و اینا که من اون کارم کردم ولی پاک نمیشه


ثبت پرسش جدید
sp.omrani
@sp.omrani 5 سال پیش مطرح شد
0

با سلام و تشکر از وبسایت خوب roocket
react-native به صورت پیشفرض یک سری premission ها رو به اپ اضافه میکنه که بعضی ها توی نسخه release ضروری نیستند و برای debug و کد نویسی لازم هستند، و استور هایی مانند کافه بازار سر این premission ها سخت گیری میکنند.
شما برای حل این مشکل باید یا پروژه android تون رو طوری ست کنید که به صورت اتوماتیک موقع خروجی apk گرفتن premission ها رو حذف کنه یا به صورت دستی هر دفعه موقع خروجی گرفتن چند خط کد در androidmanifest اضافه کنید.
راه حل اول به این صورت هست که یک androidmanifest جداگانه فقط برای release اپلیکیشن باید ساخته شه، مراحل دقیق رو از این لینک که جزو مستندات خود rn هست میتونید بخونید:
https://facebook.github.io/react-native/docs/removing-default-permissions

برای راه حل دوم کافیه هر بار این دو خط کد رو به android\app\src\main\AndroidManifest.xml اضافه کنید ( بازار به همین دو تا premission گیر میده ) که من از همین راه جواب گرفتم ( البته ورژن rn من 0.55.2 بود، الان ورژن های جدید rn یکم عجیب شده داستانش ممکن هست کار نکنه ) :

<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" tools:node="remove"/>

نکته :قبل اضافه کردن این دو خط <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> باید پاک شود.

یک راه دیگه هم هست که من جایی نخوندم و امتحان هم نکردم ولی چون میشه توی build.gradle برای androidmanifest متغیر تعریف کرد بنظر میرسه کار کنه، خط های زیر باید توی android\app\build.gradle اضافه شه ( اگه debug تو buildTypes وجود نداشت اضافه شه ) :

buildTypes {
    ...
        release {
            ...
            manifestPlaceholders = [toolsName: "remove"]
        }
        debug {
            ...
            manifestPlaceholders = [toolsName: "replace"]
          }
    }

توی android\app\src\main\AndroidManifest.xml هم خط های زیر اضافه شه

<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="${toolsName}"/>

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" tools:node="${toolsName}"/>

اگه این روش کار کرد ممنون میشم اطلاع بدید.

مستند های tools ها و buildTypes اندروید برای مطالعه :

https://developer.android.com/studio/build/build-variants
https://developer.android.com/studio/build/manifest-merge

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام