我有一个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,一切都会立即恢复正常。
任何帮助/想法将不胜感激!
如果您使用的是 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)
},