VS2017开发Xamarin应用重复部署需手动卸载旧版本求助
解决Xamarin在OnePlus A3000上部署需手动卸载旧版本的问题
我之前用Xamarin开发时也碰到过一模一样的问题,尤其是在一加设备上,结合你给出的错误提示(核心是INSTALL_FAILED_ALREADY_EXISTS),给你几个亲测有效的解决思路:
核心错误信息
Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install com.zebra.teller without first uninstalling.]
解决方法
1. 让Visual Studio自动处理旧版本卸载
这是最省心的解决方案,直接让VS帮你完成卸载步骤:
- 右键你的Xamarin Android项目,选择属性
- 切换到Android选项标签页,点击左侧菜单的部署
- 勾选部署前卸载现有应用程序选项,保存设置后重新尝试部署。之后每次部署新版本,VS都会自动先卸载旧应用,不用你手动操作。
2. 检查签名配置是否一致
签名不匹配是导致无法覆盖安装的隐形坑:
- 回到项目属性的Android签名标签页
- 分别查看调试和发布模式下的签名配置:调试模式建议用VS自动生成的默认调试密钥库;如果是测试发布版本,一定要确保前后使用的签名文件(.keystore)、密钥别名和密码完全一致。
3. 手动添加ADB覆盖安装参数
通过修改项目配置,让ADB执行安装时强制覆盖旧应用:
- 右键你的Android项目,选择编辑项目文件(打开
.csproj文件) - 在对应调试/发布配置的
PropertyGroup节点中添加一行代码:
<AndroidInstallAdditionalArguments>-r</AndroidInstallAdditionalArguments>
比如调试模式的配置段会变成这样:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <AndroidInstallAdditionalArguments>-r</AndroidInstallAdditionalArguments> </PropertyGroup>
-r是ADB的覆盖安装参数,会强制替换已存在的应用。
4. 调整一加设备的开发者选项设置
部分一加设备的系统安全限制会拦截覆盖安装:
- 打开手机的开发者选项(没开启的话,在「关于手机」里连续点击版本号几次即可激活)
- 确保允许安装未知应用已开启;如果有「应用安装验证」或类似的安全选项,尝试暂时关闭,避免系统拦截覆盖安装操作。
内容的提问来源于stack exchange,提问作者FlyingNades
相关产品推荐
相关产品推荐

