Android开发经验谈Android开发android知识一角

Android项目配置系统签名

2019-11-04  本文已影响0人  一笑小先生

简述

公司开发一款产品,需要在应用内打开谷歌浏览器,并向浏览器网页中编辑框提交文本并执行回车事件,这时候我们想到了Instrumentation。

Instrumentation接口原本是用来对软件进行测试而留出来的,但是可以模拟按键,前提是应用处于前台,当应用处于后台时,会提示

Injecting to another application requires INJECT_EVENTS permission

提示没有 INJECT_EVENTS这个权限。没则加之,在AndroidManifest.xml文件里面添加该权限,再运行,问题还是没有解决。

网上各种google各种百度,最后在stackoverflow
解决的方案有一种是需要将我们的应用userId修改成系统级别,即在manifest添加:

android:sharedUserId="android.uid.system"

配置系统签名

1. 准备

2. 生成keystore文件

将keytool-importkeypair、platform.pk8和platform.x509.pem文件放在同一个目录下,执行如下命令,会生成platform.keystore文件:

sh keytool-importkeypair -k android.keystore -p wangyy2019 -pk8 platform.pk8 -cert platform.x509.pem -alias wangyy

这里演示mac电脑操作流程,我把下载的keytool-importkeypair与platform.pk8和platform.x509.pem放到Downloads/keytok目录下

android系统签名.png

此时,keytool目录下已自动生成android.keystore文件

3. AndroidManifest.xml修改

在项目的AndroidManifest.xml添加android:sharedUserId="android.uid.system"

4. Android Studio配置keystore

① 拷贝刚生成的android.keystore文件到项目工程目录下(和app目录同一级)

② 在项目工程的app/build.gradle 的android层级下添加:

    signingConfigs {
        Sign {
            keyPassword 'wangyy2019'
            storePassword 'wangyy2019'
            keyAlias 'wangyy'
            storeFile file('../android.keystore')
        }
    }

然后是

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            // 添加release版本签名
            signingConfig signingConfigs.Sign
                }
            }
        }
        // 添加debug版本签名
        debug {
            signingConfig signingConfigs.Sign
        }
    }

至此,我们的打包的应用已经是系统签名下的应用了。

上一篇 下一篇

猜你喜欢

热点阅读