我有一个程序在Android模拟器工作。我不时地创建一个签名的。apk,并将其导出到我的HTC Desire进行测试。一切都很好。
在我最新导出的。apk上,当我试图安装。apk时,我得到错误消息“应用程序未安装”。它在模拟器上运行良好。
因为我主要是在模拟器上测试,只是时不时地导出到真正的手机上,我不确定这是什么时候发生的。什么可能的原因,它不安装在物理手机,但运行良好的模拟器?
我已经尝试重新启动电话并删除现有的。apk,并不能解决这个问题。
我有一个程序在Android模拟器工作。我不时地创建一个签名的。apk,并将其导出到我的HTC Desire进行测试。一切都很好。
在我最新导出的。apk上,当我试图安装。apk时,我得到错误消息“应用程序未安装”。它在模拟器上运行良好。
因为我主要是在模拟器上测试,只是时不时地导出到真正的手机上,我不确定这是什么时候发生的。什么可能的原因,它不安装在物理手机,但运行良好的模拟器?
我已经尝试重新启动电话并删除现有的。apk,并不能解决这个问题。
当前回答
在我的情况下,我已经声明我的发射器活动为android:exported="false"
<activity android:name=".MainActivity"
android:exported="false">
我最近瞄准了android 12,不得不把android:exported属性放在我的manifest组件中,但不知道该把什么作为值。将值更改为android:exported="true"有效。
其他回答
我的问题是,我在设备上有多个用户帐户。我删除了其中一个帐户的应用程序,但它仍然安装在另一个帐户。因此,名称空间发生碰撞,无法安装。卸载应用程序从所有用户固定它为我。
我知道这是一个老帖子,但对新用户可能有用。我也遇到了同样的问题:我的应用程序在调试时工作得很好。当我签署APK时,我得到了同样的消息:“应用程序未安装”。
我修复了卸载JDK(我使用的是JDK -6u14-windows-x64)并安装了一个新的JDK (JDK -6u29-windows-x64)。导出并再次签署APK后,一切正常!
恢复,我的问题是在JAVA版本。谢谢的甲骨文! !
我发现,如果我用compileSdkVersion构建我的应用程序,buildToolsVersion和targetSdkVersion都设置为默认值30在我的构建。Gradle文件,那么应用程序将无法安装在我的手机上。但是,如果我把它们改回版本29,它就可以工作了。问题是,从SDK 30开始,你需要选择V2 jar签名。有关更多信息,请参阅为什么Android SDK 30生成无效的APK文件?
当我遇到这个问题时,我的自定义构建工具将ADT与用于iOS的证书一起使用(这当然不是我的第一个猜测,因为除了只有你应该有一个之外,Android证书似乎没有什么特别之处,他们只是RSA-1024证书,甚至自签名也是可以的,至少对于非市场安装)。
我曾以各种形式遇到过这个问题,但这一次是一个新的问题:
在这种情况下,我有提供商名称冲突-相同的提供商名称存在于我的应用程序和我的另一个应用程序。