【React Native】文件翻譯閱讀紀錄 - 指南(Android) - 刪除默認權限

by - 上午9:00

Facebook Open Source React Native


刪除默認權限

默認情況下,您的 Android APK 會添加一些權限。

添加的默認權限是:
  • android.permission.INTERNET - 調試模式所必需的。
  • android.permission.SYSTEM_ALERT_WINDOW - 調試模式所必需的。
  • android.permission.READ_PHONE_STATE - 調試或生產不需要。
  • android.permission.WRITE_EXTERNAL_STORAGE - 調試或生產不需要。
  • android.permission.READ_EXTERNAL_STORAGE - 調試或生產不需要。
  1. 讓我們從生產和調試 APK 中刪除 READ_PHONE_STATE,WRITE_EXTERNAL_STORAGE 和 READ_EXTERNAL_STORAGE 開始,因為它們中都不需要。如果正在使用 AsyncStorage 模塊,則仍然不需要這些存儲權限,因此可以安全地從生產和調試中刪除。
  2. 打開你的 android/app/src/main/AndroidManifest.xml 文件.
  3. 即使清單中未列出這三個權限,它們也會被添加。我們使用工具添加三個權限:node =“remove”屬性,以確保在構建期間刪除它們。請注意,包標識符將不同,因為下面是“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>
    
  4. 現在讓我們從生產APK中刪除 SYSTEM_ALERT_WINDOW
  5. 轉到 android/app/src/ 錄。在此目錄中創建一個名為release的新目錄。 (路徑android/app/src/release/)
  6. 在這個android/app/src/release/ 目錄裡面創建一個 AndroidManifest.xml 文件. (路徑: android/app/src/release/AndroidManifest.xml)
  7. 在此文件中粘貼以下內容。請注意,請確保將您的包標識符從“com.myapp”更新為您的包標識符。
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.myapp"
        xmlns:tools="http://schemas.android.com/tools">
    
        <uses-permission tools:node="remove" android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    
    </manifest>
    
就是這樣。我們沒有刪除INTERNET權限,因為幾乎所有應用都使用它。現在,無論何時創建生產APK,所有這4個權限都將被刪除。當您創建調試APK(react-native run-android)時,它將安裝僅刪除了三個權限的APK,並且SYSTEM_ALERT_WINDOW將保留。



You May Also Like

0 意見