如果你需要开发一个带有系统权限的app,往往需要配置SharedUserId,比如:

<?xml version="1.0" encoding="utf-8"?>                                                                                

此时,如果直接在AS中run,app是装不上的,需要先生成app,然后再使用系统文件对apk进行签名,

java -jar signapk.jar  platform.x509.pem platform.pk8 signDemo.apk signDemo_signed.apk

这样才能将apk安装到手机上。

虽然能够满足使用,但是作为开发者,不免会遇到需要调试的情况,然后这种离线的签名方式,就没法调试。。。严重影响了开发的效率,因此,本文介绍一中在线打包签名的方式。


需要准备的文件:

keytool-importkeypair (下载)

platform.x509.pem、platform.pk8(位于../build/target/product/security)

其本质的原理是给apk加上开发者签名(jks文件),使用keytool-importkeypair 对jks文件进行系统签名,在出包的时候,直接使用带有系统签名的jks对apk进行签名,这样编译生成的apk文件就自带系统签名了


1、生成你自己的jks文件


 如果没有的就新建,点击Create New ...  设置密码(123456)



然后Next -- Finish


2、使用keytool-importkeypair对jks文件引入系统签名

把platform.x509.pem、platform.pk8和上一部生成的jks文件统一放到一个文件夹下,比如我的是放在工程目录的signAPK目录下



将下载好的keytool-importkeypair配置一下,其实主要就是配置一下环境变量,不熟悉的可以阅读官方文档,然后使用下面这条命令(需要在linux下,用windows的可以去在linux下生成jks,然后复制出新的jks回原目录也可以)对jks文件引入系统签名


./keytool-importkeypair -k [jks文件名] -p [jks的密码] -pk8 platform.pk8 -cert platform.x509.pem -alias [jks的别名]


例如我的对应的就是:

./keytool-importkeypair -k SignDemo.jks -p 123456 -pk8 platform.pk8 -cert platform.x509.pem -alias SignDemo

运行完这条命令之后,我们就得到了有系统签名的jks


3、配置gradle(app)

在在android区域下(与defaultConfig同级)添加signingConfigs配置:

依次填写jks的路径,密码,别名等

apply plugin: 'com.android.application'android {    compileSdkVersion 23    buildToolsVersion "23.0.2"    defaultConfig {        applicationId "com.cxq.signdemo"        minSdkVersion 19        targetSdkVersion 23        versionCode 1        versionName "1.0"    }    signingConfigs {        release {            storeFile file("../signApk/SignDemo.jks")            storePassword '123456'            keyAlias 'SignDemo'            keyPassword '123456'        }        debug {            storeFile file("../signApk/SignDemo.jks")            storePassword '123456'            keyAlias 'SignDemo'            keyPassword '123456'        }    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }}dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    testCompile 'junit:junit:4.12'    compile 'com.android.support:appcompat-v7:23.3.0'}

4、运行

经过以上配置之后,点击run,app就可以直接安装到手机上了



更多相关文章

  1. android音频编辑之音频合成
  2. 深入分析Android(安卓)(build/core/*.mk脚本)
  3. Android(安卓)WiFi Direct文件传输
  4. 使用TraceView进行方法跟踪
  5. android系统服务 adbd服务的开启
  6. Android中的文件扫描
  7. Android(安卓)java.lang.NoClassDefFoundError:*报错的处理
  8. Android资源文件中特殊字符未转义引起的编译错误
  9. Android上跑OpenCV

随机推荐

  1. 另一个更简单的Android应用程序全屏的方
  2. android类
  3. android 抽屉的一些小问题
  4. Android应用程序基础
  5. 《IT蓝豹》吹雪花demo,学习android传感器
  6. Android(安卓)CTS 测试总结【转】
  7. Android(安卓)在界面中显示以及输入文本
  8. android udp通信
  9. 【android】关于退出时关闭“后台”显示
  10. 详解 Android(安卓)的 Activity 组件