升级到 Android API Level 33 无法启动模拟器中的主要 Activity

问题描述 投票:0回答:1

我有一个react-native应用程序,我正在尝试根据最新的Android版本要求升级为使用Android API级别33。

在我的清单中,如果我有以下设置,我的应用程序就会构建并运行:

buildToolsVersion   = "33.0.0"
minSdkVersion       = 23
compileSdkVersion   = 33
targetSdkVersion    = 32
ndkVersion          = "23.1.7779620"

但是,如果我只将

targetSdkVersion
更改为 33,我的应用程序会成功构建,但无法启动并出现错误:

Starting: Intent { cmp=com.myapp.debug/com.myapp.MainActivity }
Error type 3
Error: Activity class {com.myapp.debug/com.myapp.MainActivity} does not exist.

我可以从模拟器中手动启动我的应用程序,但我想知道如何解决此启动问题。活动名称

com.myapp.debug/com.myapp.MainActivity
正确。我在 logcat 中看不到任何特别的东西。

注意:我尝试过清理构建、删除构建目录、重新启动模拟器/Android Studio、清除 gradle 缓存、使 Android Studio 内的缓存失效、通过 adb 和模拟器卸载应用程序,但没有成功。如果我将

targetSdkVersion
降级回 32,一切都会立即恢复正常。

任何帮助/想法将不胜感激!

android react-native android-studio android-emulator android-13
1个回答
0
投票

如果您使用的是 Expo,则有与目标 SDK 33 相关的修复(修复 android sdk > 31 上的 deviceName 异常)。检查您使用的版本或在 expo-device 包中进行此更改(使用 patch-package):

改变它

"deviceName" to Settings.Secure.getString(mContext.contentResolver, "bluetooth_name")

对此

"deviceName" to run {
  if (Build.VERSION.SDK_INT <= 31)
    Settings.Secure.getString(mContext.contentResolver, "bluetooth_name")
  else
    Settings.Global.getString(mContext.contentResolver, Settings.Global.DEVICE_NAME)
},
© www.soinside.com 2019 - 2024. All rights reserved.