سلام دوستان
من هر کاری کردم نتونستم این مجوز رو از اپ پاک کنم
این مجوز هم باعث میشه ۲ تا مجوز دیگه هم پاک نشن
خود ریکت گفته یا منیفست دیگه درست کنین و اینا که من اون کارم کردم ولی پاک نمیشه
با سلام و تشکر از وبسایت خوب 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
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟