世博会弹出反应本机项目上传的apk(由android studio构建)具有比清单文件更多的权限

Posted

技术标签:

【中文标题】世博会弹出反应本机项目上传的apk(由android studio构建)具有比清单文件更多的权限【英文标题】:Expo ejected react native project uploaded apk (build by android studio) has more permissions than in manifest file 【发布时间】:2021-08-18 12:10:23 【问题描述】:

我对最近被 expo 推出的原生项目做出了反应(裸工作流)。这是我的androidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="example.package">
  <uses-permission android:name="com.android.vending.BILLING"/>
  <uses-permission android:name="android.permission.INTERNET"/>
  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
  <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  <uses-permission android:name="android.permission.WAKE_LOCK"/>
  <application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="true" android:theme="@style/AppTheme">
    <meta-data android:name="expo.modules.updates.EXPO_UPDATE_URL" android:value="https://exp.host/example" />
    <meta-data android:name="expo.modules.updates.EXPO_SDK_VERSION" android:value="41.0.0" />
    <meta-data android:name="expo.modules.updates.ENABLED" android:value="true"/>
    <meta-data android:name="expo.modules.updates.EXPO_UPDATES_CHECK_ON_LAUNCH" android:value="ALWAYS"/>
    <meta-data android:name="expo.modules.updates.EXPO_UPDATES_LAUNCH_WAIT_MS" android:value="0"/>
    <meta-data android:name="expo.modules.updates.EXPO_RELEASE_CHANNEL" android:value="default" />

  <activity
    android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:theme="@style/Theme.App.SplashScreen" android:screenOrientation="unspecified">
      <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
      </intent-filter>
      <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <data android:scheme="example"/>
        <data android:scheme="example.package"/>
      </intent-filter>
    </activity>
    <activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/>
    <activity android:name="com.theartofdev.edmodo.cropper.CropImageActivity" android:theme="@style/Base.Theme.AppCompat"/>
  </application>
</manifest>

如您所见,只提到了 6 个权限。

但是在我使用android studio为这个项目创建app bundle并将其上传到谷歌播放控制台后,根据需要显示了29个权限。

这种行为的原因是什么?

谢谢。

【问题讨论】:

【参考方案1】:

您可以拥有在其清单中添加权限的库,当您编译项目时,您的清单会与库清单合并。

在 Android Studio 中打开您的清单,然后在底部应该有一个 Merged Manifest 视图

【讨论】:

是的。我可以在合并的清单视图中看到其他权限。我确实删除了,现在这些权限已添加到带有 tools:node="remove" 标签的清单文件中。我是安卓工作室的新手。这是删除权限的正确方法吗? 并非如此,添加权限的库可能这样做是有原因的。因此,您应该查看哪些库添加了您不想拥有的权限,如果您不使用它们,请替换/删除这些库。只是删除他们的清单权限很有可能破坏他们的功能。

以上是关于世博会弹出反应本机项目上传的apk(由android studio构建)具有比清单文件更多的权限的主要内容,如果未能解决你的问题,请参考以下文章

是否有可能在裸反应本机项目中使用expo视频?

世博会反应本机导航的问题

如何从弹出的世博项目中制作独立的应用程序

如何在本机反应中生成唯一ID

触摸在本机反应中无法在博览会网络中工作

在本机反应中生成多个APK?