我只是尝试从 Eclipse 中的现有代码创建一个 Android 项目。没有错误提示,一切似乎都很好。我也可以在虚拟设备中测试它。所以我尝试通过导出未签名的应用程序包来创建 apk。最后该应用程序无法安装到我的android,它只是提示“应用程序未安装”消息!我该如何解决?谢谢。
7 回答
我在使用cordova build --release android
CLI 创建 apk 时遇到了同样的错误,但后来发现cordova build android
应该用来创建调试 apk 文件。希望它对某人有所帮助。
尽管使用了cordova build android
. 原来我的问题如下:
我之前安装了另一个我构建的 phonegap 应用程序,但没有在 config.xml 中更改其小部件 ID。所以小部件 id 仍然是“com.phonegap.helloworld”。
现在,在构建我的新应用程序时,我也没有更改小部件 ID。所以两个应用程序都具有相同的小部件 ID。这似乎是不允许的。因此,一种潜在的解决方案是更改小部件 ID,因此它不会干扰您手机上当前安装的任何其他内容。或者,卸载您的新应用程序可能会干扰的任何内容(可能是您之前制作的某些 phonegap 应用程序,如我的情况)。
这就是我找到这个解决方案的原因: https ://github.com/phonegap/phonegap-plugin-push/issues/922
从 bin 文件夹中获取 apk 并尝试将其安装在设备上...而不是通过导出的未签名包创建 apk。确保您有足够的内部内存(这应该不仅仅是应用程序的大小,因为应用程序也需要存储数据) .
如果您更新/覆盖现有应用程序,请先使用手机的应用程序管理器将其删除。
First, make sure you have sufficient internal memory (that should be more than just the app size, because app needs to store data too). The storage for apps is different from internal mass storage. You can find it under Settings > Storage, look for the Applications label.
Also, if the app is, say 20 MB, keep at least 50 MB free, because apart from the app storage, Android also tends to slow down when short on internal memory.
If you're trying to update/overwrite an installed app, try removing it first.
Thanks AB
对于它的价值......无论出于何种原因,我在创建访客帐户后开始出现“未安装应用程序”。删除guest账号好像解决了!
您只能在 Android 设备上安装签名的应用程序。事实上,应用程序的调试版本使用调试密钥进行签名。这意味着您必须签署您的发布应用程序。即使您只是尝试在智能手机上本地安装它。
卸载一些其他版本的应用程序。
您需要使用 keytool 生成 my-release-key.keystore 文件:
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
Cordova 有一种内置方法可以让您快速签署 Android 应用程序。通过 CLI 部署应用程序时对其进行签名。
科尔多瓦运行 android --release --keystore=my-release-key.keystore --storePassword=password --alias=alias_name --password=password --packageType=apk
现在你应该有你的最终产品:app-release.apk
*您可以使用 --packageType=bundle 将其导出为 .aab
*或者,您可以在构建配置文件 (build.json) 中指定它们:https ://cordova.apache.org/docs/en/10.x/guide/platforms/android/#using-buildjson
{
"android": {
"debug": {
"keystore": "../android.keystore",
"storePassword": "android",
"alias": "mykey1",
"password" : "password",
"keystoreType": "",
"packageType": "apk"
},
"release": {
"keystore": "../android.keystore",
"storePassword": "",
"alias": "mykey2",
"password" : "password",
"keystoreType": "",
"packageType": "bundle"
}
}
}