مشخصات مقاله
-
0
-
0.0
-
2142
-
0
-
0
آموزش حذف مجوزهای پیش فرض در Android در React Native
آموزش حذف مجوزهای پیش فرض در Android
به طور پیش فرض، یکسری مجوزها به android application شما اضافه می شود، مثل:
- android.permission.INTERNET – برای حالت debug لازم است.
- ndroid.permission.SYSTEM_ALERT_WINDOW - برای debug لازم است.
- android.permission.READ_PHONE_STATE – برای debug و یا production لازم نیست.
- android.permission.WRITE_EXTERNAL_STORAGE - برای debug و یا production لازم نیست.
- android.permission.READ_EXTERNAL_STORAGE - برای debug و یا production لازم نیست.
- برای شروع READ_PHONE_STATE، WRITE_EXTERNAL_STORAGE، و READ_EXTERNAL_STORAGE را از APK های debug و production حذف می کنیم، چرا که برای هیچ کدام از این دو فاز لازم نیست. این مجوزهای ذخیره سازی حتی برای زمانی که ماژول AsyncStorage استفاده می شود نیز لازم نیست. بهتر است آن را از هردو مد debug و production حذف کنیم.
- فایل android/app/src/main/AndroidManifest.xml را باز کنید.
- حتی اگر این دو مجوز در manifest لیست نشده اند، بعدا اضافه می شوند. این سه مجوز را با attribute tools:node="remove" اضافه می کنیم تا مطمئن باشیم در زمان build حذف می شنود. دقت کنید شناسه package متفاوت است. برای مثال زیر، شناسه ی آن "com.myapp" است، چرا که پروژه به صورت react-native init myapp ساخته شده است.
< manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myappid"
+ xmlns:tools="http://schemas.android.com/tools"
>
< uses-permission android:name="android.permission.INTERNET" />
< uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
+ < uses-permission tools:node="remove" android:name="android.permission.READ_PHONE_STATE" />
+ < uses-permission tools:node="remove" android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+ < uses-permission tools:node="remove" android:name="android.permission.READ_EXTERNAL_STORAGE" />
< application
android:name=".MainApplication"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:allowBackup="false"
android:theme="@style/AppTheme">
< activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustResize">
< intent-filter>
< action android:name="android.intent.action.MAIN" />
< category android:name="android.intent.category.LAUNCHER" />
< /intent-filter>
< /activity>
< activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
< /application>
< /manifest>
تمام شد! مجوز INTERNET را حذف نکردیم چرا که همه ی application ها از آن استفاده می کنند. حال هروقت یک APK برای فاز production می سازید، هر4 مجوز حذف می شوند. وقتی APK برای فاز debug می سازید (react-native run-android) برنامه را بدون این چهار مجوز نصب می کند.
1398/06/11
2142
0