Android Studio 使用正式签名进行调试

在Android Studio中,能够使用Gradle进行打包时自己主动签名。

事实上Android Studio默认会给调试应用加上Debug签名,但有时候调一些第三方SDK时。须要正式签名才干调起来。所以接下来分享一下使用Gradle自己主动签名的方法。

一、创建签名文件

打开AS,选择Build->Generate Signed APK,选择要打包的项目,点击Next。再点击Create new...创建签名文件


填写签名文件响应信息。例如以下所看到的。Password、Key-Alias、Key-Password这三个值须要记住,然后点击OK,完毕创建。


完毕之后,在相应路径生成一个jks签名文件。假设选择手动再进行打包,就能够选择该签名文件,然后相应填入password与别名,进行签名,也能够。


二、配置Gradle自己主动打包

拷贝签名文件到主project根文件夹,打开主project的build.gradle文件,在android节点下,添加下面内容:

signingConfigs {
        release {
            storeFile file('keystore.jks')
            storePassword '123456'
            keyAlias 'yyh'
            keyPassword '123456'
        }
    }

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

        debug {
            signingConfig signingConfigs.release
        }
    }
    storeFile file:签名文件,假设放在其它路径,须要相应改动

    storePassword:password(刚才填的第一个password)

    keyAlias:别名

    keyPassword:别名password

然后又一次build一下project,展开右边栏Gradle选项卡,例如以下所看到的:


assembleRelease,即为正式签名。

双击assembleRelease,则会開始运行命令:

运行完成能够看到BUILD SUCCESSFUL,说明正式签名打包成功了。展开project的build目录。可发现有app-release.apk,即为正式版本号。


下次直接run起来的时候。就带正式签名了。这可比手动签名省事多啦~~

当然,为了提高安全性,我们还能够把那四个属性作为变量配置在主project的gradle.propreties,然后在build.gradle引用变量就能够了。

例如以下:



这样也能起到相同的效果。

三、应用程序签名的意义
(1)保障开发人员的合法权益
在我们相应用程序进行打包签名后,即表示此应用程序是签名人或机构所开发的,对此应用程序具有全部权。


(2)预防应用程序替换
应用程序签名能够防止部分人通过使用同样的Package Name来混淆替换已经安装的程序,从而出现一些恶意篡改。

APK假设使用一个key签名,公布时还有一个key签名的文件将无法安装或覆盖老的版本号。这样能够防止你已安装的应用被恶意的第三方覆盖或替换掉。

实际上就是一种标识。
(3)保证应用程序版本号的一致性
一般应用程序都会有更新,即版本号的升级。假设应用程序的签名不一致,是无法进行更新替代的。所以应用程序的签名是保证当前应用程序顺利进行更新安装的前提。


(4)能够通过权限(permission)的方式在多个程序间共享数据和代码

Android提供了基于数字证书的权限赋予机制。应用程序能够和其它的程序共享概功能或者数据给那那些与自己拥有同样数字证书的程序。假设某个权限(permission)的protectionLevel是signature,则这个权限就仅仅能授予那些跟该权限所在的包拥有同一个数字证书的程序。

还有一方面。Android系统同意拥有同一个数字签名的程序执行在一个进程中,Android程序会将他们视为同一个程序。所以开发人员能够将自己的程序分模块开发。而用户仅仅须要在须要的时候下载适当的模块。



原文地址:https://www.cnblogs.com/tlnshuju/p/7133826.html