react-native run-android之后的两个应用程序

时间:2017-07-19 16:52:32

标签: android react-native react-redux react-native-android

我正在做一个本机应用程序,早些时候它工作正常,但现在当我运行“react-native run-android”时,在成功安装和启动后,我可以在模拟器中看到两个应用程序,这两个应用程序都是工作正常。
所以,任何想法为什么我看到2个应用程序,或者我应该说为什么我要安装一个额外的重复应用程序?

5 个答案:

答案 0 :(得分:13)

在您遇到此问题后,我认为您已在应用中添加了启动屏幕,请首先转到以下目录:android/app/src/main/AndroidManifest.xml(如果您两次添加类似的内容

       <activity
        android:name=".SplashActivity"
        android:theme="@style/SplashTheme"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        </activity> -->

它将渲染两次并在您的设备上构建两个应用。

在我的文件中

  

AndroidManifest.xml

<!-- remove just first part the activity, but i comment this part -->

  <!-- <activity
    android:name=".SplashActivity"
    android:theme="@style/SplashTheme"
    android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  </activity> -->



  <activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:theme="@style/SplashTheme"
    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>

答案 1 :(得分:5)

我也有这个问题。事实证明,我安装的RN lib之一创建了额外的<activity /><intent-filter />标签。只需查看您的AndroidManifest.xml

我的来源:Running app gives 2 app icons in Android Studio - newbie

答案 2 :(得分:1)

问题是由于启动和主要活动中都有多个LAUNCHER类别。

<category android:name="android.intent.category.LAUNCHER" />

SplashActivity和MainActivity的解决方案是更改

<category android:name="android.intent.category.LAUNCHER" />

<category android:name="android.intent.category.DEFAULT" />

在MainActivity中。

同时具有.SplashActivity和.MainActivity的文件看起来像这样;

    <activity
        android:name=".SplashActivity"
        android:theme="@style/SplashTheme"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:windowSoftInputMode="adjustResize"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
        </intent-filter>
    </activity>

答案 3 :(得分:0)

检查已安装应用的包名称。

答案 4 :(得分:0)

要添加到上面发布的Aras答案中,对我来说,问题特别是带有额外的intent-filter属性,它们分别标记为“ MAIN”和“ LAUNCHER”。看来,如果不创建重复的应用程序,这些事件就不会发生多于一个。

       <activity
         android:name=".SplashActivity"
         android:theme="@style/SplashTheme"
         android:label="@string/app_name">
         <!-- You'll either want to remove this section, or ensure that it does not exist in any other activities. -->
         <intent-filter>
           <action android:name="android.intent.action.MAIN" />
           <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
       </activity>