我有一个非常奇怪的问题,我不能谷歌出来。它可能看起来像一个重复,但不是。基本上发生的是,当我通过终端构建我的应用程序,我得到一个错误消息:
Starting: Intent { cmp=org.example.app.dev/org.example.app.MainActivity }
Error type 3
Error: Activity class {org.example.app.dev/org.example.app.MainActivity} does not exist.
奇怪的是包的名字是两个,中间有一个斜杠,我在网上没有看到过。第一部分是我们的味道后缀“dev”。
它的问题是,在构建后,应用程序不会自动启动,但在手动点击其图标后,它会正常启动。
当我不得不将我们的应用从Expo 45迁移到Expo 47时,由于Expo 39后的初始设置和迁移都很糟糕,所以从零开始项目并逐个迁移文件会更容易。整个src、资产甚至iOS都很容易,但Android部分真的很奇怪。
我试过:
- 移动和/或更改和/或添加AndroidManifest.xml中的Intent
- 更改应用程序ID
- 三次检查我们的产品风味和构建类型
- 已检查文件夹和文件层次结构
- 按照有关卸载应用程序,在Android Studio中重建项目,使所有包失效和重置项目等的说明操作。
下面是指定Intent的AndroidManifest.xml
。包名已被占位符值替换。
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.example.app">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>
<uses-permission android:name="android.permission.USE_BIOMETRIC"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/>
<application
android:name=".MainApplication"
android:label="${APP_NAME}"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:allowBackup="true"
android:theme="@style/AppTheme"
android:networkSecurityConfig="@xml/network_security_config"
>
<meta-data android:name="expo.modules.updates.EXPO_UPDATE_URL" android:value="https://exp.host/@llifmobile/mobile"/>
<meta-data android:name="expo.modules.updates.EXPO_SDK_VERSION" android:value="47.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"/>
<activity android:name=".SplashActivity" android:label="${APP_NAME}" android:theme="@style/SplashTheme" android:screenOrientation="portrait" android:exported="true">
<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|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:screenOrientation="portrait" android:exported="true" android:theme="@style/Theme.App.SplashScreen">
<intent-filter android:autoVerify="true">
<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" android:host="app"/>
</intent-filter>
</activity>
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/>
</application>
</manifest>
build.gradle
文件在升级后发生了很大变化,但没有任何迹象表明是什么原因导致了重复。
这个错误之前并不存在,我希望应用在构建后直接打开。我不确定它在生产中的表现如何,因为它在您手动打开时工作,但我希望在将它推到过渡阶段之前解决它。
我会很乐意为任何形式的建议或领导,谢谢你提前。
1条答案
按热度按时间cclgggtu1#
我们的AndroidManifest.xml缺少这个Intent过滤器:
在
.MainActivity
中整个街区看起来像这样
有趣的是,
AndroidManifest.xml
像这样工作了一年多,直到世博会升级和SDK以及其他东西之后才停止工作。希望这对以后的人有帮助。