Posts

Showing posts with the label 移动开发

解决 adb install 时 INSTALL_FAILED_UPDATE_INCOMPATIBLE 签名不匹配错误

Image
解决 adb install 时 INSTALL_FAILED_UPDATE_INCOMPATIBLE 签名不匹配错误 在使用 React Native 构建 Android Release APK 后,通过 adb 安装时,可能会遇到如下错误: adb: failed to install app-release.apk: Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Existing package signatures do not match newer version] 这个问题并不是编译失败,而是 Android 安装机制阻止了不同签名的应用覆盖安装 。 为什么会出现这个错误? Android 系统要求:同一个包名的 App,在更新时必须使用相同的签名证书。 如果你之前安装的是: Debug 版本(默认签名) 或者使用了不同的 Release Keystore 而现在你安装的是新的 Release APK(使用了不同签名),系统就会拒绝更新,从而出现此错误。 解决方法 方法 1:卸载旧应用(最简单) adb uninstall com.westminstershortercatechismqa adb install app-release.apk 卸载后再安装即可正常运行。 方法 2:使用统一的 Release Keystore 如果你希望以后可以直接覆盖安装(升级 App),需要保证每次构建 Release 都使用同一个 keystore。 在 android/app/build.gradle 中配置: android { signingConfigs { release { storeFile file("release.keystore") storePassword "your_password" keyAlias "your_alias" keyPassword "your_password" } } buildTypes { release { ...

React Native 使用 TypeScript + Hermes 时 Android Release 构建报错解决方案

Image
React Native 使用 TypeScript + Hermes 时 Android Release 构建报错解决方案 如果你把 React Native 项目的入口文件从 index.js 改成了 index.ts ,然后在构建 Android Release 版本时失败,这篇文章可以帮你解决。 常见的报错包括: Task ':app:createBundleReleaseJsAndAssets' property 'entryFile' specifies file 'index.js' which doesn't exist. 或者: java.lang.OutOfMemoryError: Metaspace Execution failed for task ':react-native-xxx:lintVitalAnalyzeRelease' 这通常是由于入口文件未正确配置,以及 Gradle 内存不足导致的。下面是完整修复步骤。 1. 修复入口文件路径错误 React Native 默认查找 index.js ,如果你使用 TypeScript,需要告诉 Gradle 使用 index.ts 。 打开 android/app/build.gradle ,在 react {} 配置中加入: react { entryFile = file("../../index.ts") } 同时确认 package.json 中的入口文件: "main": "index.ts" 并在 metro.config.js 中支持 TypeScript: resolver: { sourceExts: ["js", "json", "ts", "tsx"] } 2. 解决 Gradle Metaspace 内存不足 Android 在 Release 构建时会运行 Lint 分析 React Native 库的 Kotlin 文件,默认内存太小会导致崩溃。 编辑 an...