我想将我的应用发布到GooglePlay,但首先我想对签名的apk做最后一次测试,以确保所有使用的API密钥都能与发行版(GMaps,Facebook等)一起正常使用
所以我只是用我们的发布密钥制作了我的应用程序的签名版本,当我尝试将应用程序安装到设备上时出现错误:
我试图将apk复制到设备并使用apk安装程序应用程序进行安装。
奇怪的是,当我使用调试签名密钥执行相同的过程时,一切都很好,我可以安装并运行该应用程序。
以下是该过程的步骤:
我选择释放密钥,键入密码。
我选择发布版本类型而不是调试
以防万一我还在gradle文件中定义了签名密钥,但我必须承认我不知道这是必要的。
我现在已经尝试了7次7次,所以我认为这个问题不仅仅是
密码输入错误,我也可以使用标准的调试android签名密钥进行此项操作。
如果可以的话请帮忙。
您可能正在使用android 5.0或更高版本的设备。
只需转到设置->应用程序->单击您的应用程序。 --->在操作栏菜单的"应用程序信息"页面中,将单击一个名为"为所有用户卸载"的选项。您的应用将被完全卸载,现在您可以尝试毫无问题地安装新版本。希望这能够帮到你
从下面的链接检查我的解决方案。
链接1
希望对您有帮助。
对于当前
因此,按照这种方式创建您的
选择签名版本v1和v2都为我解决了问题....尝试
只要我从Build> Build APK生成了我的apk,同样的事情发生在我身上。我可以多次安装和卸载apk,而没有任何问题,但是如果生成了Build> Generate Signed APK,当我将apk传递到手机并尝试安装它时,它只允许我一个一次,同一个人发出了以下消息:
直到那时,如果我选择"以任何方式安装",一切都很好,但是如果我卸载了该应用程序并想重新安装它(可能的情况),会发生以下情况:
因此我通过禁用播放保护解决了该问题,该功能已在Google Play中实现>在菜单>播放保护>搜索安全威胁(已禁用)中实现。
当具有相同软件包的应用程序已安装在同一设备上时,显示"未安装应用程序"。只需删除您用于测试目的的第一个应用程序,然后再进行签名apk。这将起作用。干杯!
同时选择签名版本v1和v2将解决此问题
v1方案
A JAR file can be signed by using the command line jarsigner tool or
directly through the java.security API. Every file entry, including
non-signature related files in the META-INF directory, will be signed
if the JAR file is signed by the jarsigner tool. For every file entry
signed in the signed JAR file, an individual manifest entry is created
for it as long as it does not already exist in the manifest
V2方案
v1 signatures do not protect some parts of the APK, such as ZIP
metadata. The APK verifier needs to process lots of untrusted (not yet
verified) data structures and then discard data not covered by the
signatures. This offers a sizeable attack surface. Moreover, the APK
verifier must uncompress all compressed entries, consuming more time
and memory. To address these issues, Android 7.0 introduced APK
Signature Scheme v2
默认情况下,Android Studio 2.2和适用于Gradle 2.2的Android插件使用APK签名方案v2和使用JAR签名的传统签名方案对您的应用进行签名。
建议使用APK签名方案v2,但这不是强制性的。
请查看详细信息
在Android Studio 3.0及更高版本中
如此处所述
注意:"运行"按钮会使用testOnly =" true"构建一个APK,这意味着该APK仅可通过adb(Android Studio使用的adb)安装。如果您希望人们无需adb就可以安装可调试的APK,请选择您的调试版本,然后点击构建包/ APK>构建APK。
在AndroidManifest.xml的Application标签内添加
参考:https://commonsware.com/blog/2017/10/31/android-studio-3p0-flag-test-only.html
在shubham soni答案上面对我有用,实际上它发生在android版本> = 5.0。在上面,您能够安装就可以在创建apk 时使用它...
在这里我解决了这个问题
此问题背后的原因是,电话中已经存在一个具有相同程序包名称的应用程序,但是您无法在电话菜单中找到它(您已经卸载了,但实际上仍在您的电话中)。
要查看该应用程序,请转到电话设置->应用程序。
在那里您可以看到该应用程序,但在其中可能会禁用UNINSTALL按钮。单击菜单溢出按钮,以查看所有用户的卸载。
对所有用户执行卸载后,我已经成功安装了签名的apk。
您还可以使用adb从手机上卸载应用程序。
除此之外,
如果您的手机支持多个用户,请检查是否未为其他用户安装相应的应用。如果已为其他人安装,请先卸载以前的应用,然后重试
这是一个很老的问题,但是我的解决方案是更改build.gradle中的versionCode(增加)
那可能是因为您从外部SD卡存储中运行APK文件。
只需将APK文件复制到内部storagem即可解决
在所有论坛上进行了3天的研究后,这是对我唯一有效的方法!
转到Build.Gradle(module:app)
使用它-minifyEnabled false
如果您的Android Studio版本大于3.0
看起来我们无法从build-> output-> apk文件夹在设备上运行后直接使用apk。
升级到android studio 3.0之后,您需要转到Build-> Build Apk(s)然后从build-> output-> apk-> debug复制apk
由于您选择了签名版本,因此可能会发生这种情况。在某些电话上,如果将签名版本选择为V2,则会发生安装错误。因此,如果发生这种情况,请尝试选择V1,它肯定会起作用。
我今天也遇到了同样的问题,我记得我用"新的" Google Play签名对apk进行了签名:
确保您是否使用Google Play签名对应用程序进行了签名。
如果您这样做:
-
通过将APK上传到Google控制台(像您一样)来安装更新
通常在更新您的应用程序时会出现):
-
成功上传后,在菜单中打开
Artifact library 。 - 您将看到刚刚上传的apk。
-
按下下载按钮,然后选择
Download derived APK 。
现在,您将能够安装apk。
以我为例,我尝试测试是否安装了签名的APK,并且设备上的当前安装版本未签名(直接从Android Studio构建调试版本)
文件>项目结构> Build Variants>选择发行版>确保'Signing Config'不为空>如果从下拉窗口中选择
我使用Android Studio 3.1.4进行了此操作,它使我可以按照创建发行版本apk和发行密钥并将信息添加到应用程序gradle的所有上述步骤来创建发行版本apk。干杯!
我在Android应用程序中遇到了同样的问题。
我只是更新了一些库,然后创建了Sign APK。现在它的工作。
如果您的应用启用了Google Play的应用签名,则无需卸载Google Play版本,请按照以下步骤操作:
1.使用发布密钥制作应用程序的签名版本
2.转到Google Play开发者控制台
3.使用应用程序的新签名版本创建封闭的跟踪发布(alpha或beta版本)
4.现在,您可以下载由Google Play的"应用签名"签名的apk,选择派生的APK
原因是,如果您从Play商店安装了某个应用,并且要在手机中测试新发布版本的应用(从Android Studio生成),则"使用Google Play进行应用签名"会使用不同的密钥对发布的应用进行签名。发生这种情况的原因是,旧版本和新版本使用两个不同的密钥签名:一个使用Google Play应用签名,另一个使用您的密钥。
从AndroidManifest.xml删除
链接
请卸载设备中的调试应用程序,或者只是增加版本代码以解决此问题