安卓签名问题

如何在android studio里快速查找dubug签名

如何在android studio里快速查找dubug签名_ChampionDragon的博客-CSDN博客

安卓APK打包签名

安卓APK打包签名_安卓包签名_ChampionDragon的博客-CSDN博客

安卓APP在realse状态下Run

如下图打开,并点击realse选项

这个时候如果你点击Run运行程序你会报如下错误:the apk for your currently selected variant(xxx.apk)is not signed.Please specity a signing configuration for this variant(release)

这个时候你就需要一个签名的keystore,看我之前的文章(没找到我过段时间再发一遍)。

如下图进行设置:

config就是之前的signing里的config

在module的build.gradle中添加

//  红色为新添加的

android {
 signingConfigs {
        release {
            keyAlias 'jxt'
            keyPassword '123456'
            storeFile file('F:/qianming/jxt.key')
            storePassword '123456'
        }
    }

                 
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release
    }
    debug {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release
    }

}

 }

画红线部分是要自己写的不然运行报错,其他你点击它自动会生成代码。

一个错误事项

这个别名要和你签名里面的别名相同

如图修改配置文件

解决androidStudio中打包运行的时候debug和release签名不一致

解决androidStudio中打包运行的时候debug和release签名不一致_android debug与release签名不同_白马镇的少年的博客-CSDN博客

设置打包APK名字

   android.applicationVariants.all { variant ->
        variant.outputs.all {
            outputFileName = "自定义命名.apk"
        }
    }
打包出来的apk为自定义命名.apk

   android.applicationVariants.all { variant ->
     if (variant.buildType.name.equals('release')) {
                    variant.outputs.all {
                        outputFileName = "${defaultConfig.versionName}.apk"
                    }
                }
    }

   defaultConfig {
        applicationId "com.redstone.fotaapp"
        minSdkVersion 19
        targetSdkVersion 19
        versionCode 126
        versionName "自定义名字_app_v1.0.${versionCode}"
先判断是否是release版本,如果是打包出来的apk为自定义命名_app_v1.0.126.apk

INSTALL_FAILED_SHARED_USER_INCOMPATIBLE如何解决

1.我们统一打包签名(最优的解决方案)

如果你获取了相关的签名,进行打包APK

1.1. 对android设备进行root

首先考虑app是否有root权限,运行adb rootadb remount命令,某些情况下运行adb remount后还要重启android系统root才能生效。

1.2. 卸载旧app再运行

尝试卸载旧的app,然后重新运行程序,大概率就能正常运行。如果定制的android系统上卸载功能找不到,可以使用adb uninstall <apk的包名>的形式来卸载。

1.3手动放置apk

如果你的app已经是系统应用,且无法直接卸载,考虑去系统路径下(例如:system/app/)找到自己的应用,然后通过替换安装包的形式来完成安装(替换完成后需要重新系统才能生效)。
注意:有些系统应用被错误删除后可能会影响正常使用,例如:Launcher或SystemUI,所以更改系统apk时建议先对旧的安装包进行备份,使用adb pull <手机文件路径> <本机路径> 的命令可以将android中的文件保存到电脑上。

然后再将打包的apk用以下方式:
adb push <本机路径>  <手机路径>  从本地电脑推送信息到手机上

2.我们可以删除manifests文件中的android:sharedUserId

这样就不会安装失败。当然这种方式只是将APP从系统级别降低成普通APP,降级后APP会缺少系统级别的一些权限不是权宜之计,只能适用于开发debug调试

如果还不能成功,是时候放出绝招蓝。打开命令行,使用adb命令删除设备上已经安装的apk

招式如下:adb uninstall com.XXX.XXX,卸载后再次运行安装,发现成功了

针对此问题,网上大部分讨论的是去除android:sharedUserId这个属性,但是如果你的目的就是想使用此属性,并且能安装上去,那么请尝试下面的解决方法。
注意:使用android:sharedUserId的同时,还需要android系统的key,不同的系统的key都是不一样的,一般只提供给专门的开发人员,即使你能百度到一个,也无法在其他android设备上使用。所以如果你想在Android Studio自带的模拟器或者自己手机上使用此属性,请放弃。

INSTALL_FAILED_VERSION_DOWNGRADE报错

关键报错信息:The device already has a newer version of this application.

出现这个情况一般是因为已经安装过app,存在相同的APP了,或者你当前运行的APP版本低于安装的APP版本。

1.如果是已经安装过了,直接卸载以前的就可以了。但是有的会无法卸载,这样的话咱们可以使用adb另外的一个安装命令

adb install -r -d  C:\Users\zl\Desktop\demo.apk或者

adb install -d  C:\Users\zl\Desktop\xxx.apk(包名)

说下 -r代表强制安装 -d代表可以安装比已安装更低的版本

2.如果是安装了的版本比当前版本高这样的话解决办法:

将你项目APP的版本提高下就好了,有人会说我不知道已安装APP的版本,那也没事,咱们也可以使用adb命令获取手机里面APP的版本号:如下或者使用方法一中的-d命令安装也可以

如果已安装的Android应用,不方便使用界面查看版本号等信息的话,可以使用adb命令查看。
Linux系统:
adb shell dumpsys package com.test.hm | grep version
Windows系统:
adb shell dumpsys package com.test.hm | findstr version

DELETE_FAILED_INTERNAL_ERROR报错

1)通过命令:adb shell pm list packages -s 列出的应用包列表中找到要删除的包名
2)获取此要卸载的包名的地址:adb shell pm path com.xx.xx
3)挂载系统读写权限:adb remount
4)删除包:adb shell rm /system/app/xxxxxx/xxxxxx.apk
5)最后adb reboot重启即可

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值