完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
在RK3399 Android8.1上面,实现APK静默安装功能,下面是我们的测试验试过程:
在RK3399 Android8.1源码目录下生成系统签名KEY: 进入build/target/product/security目录: cd build/target/product/security 创建build_system_jks2.sh文件,内容如下: #!/bin/bash echo "生成系统签名文件中..." openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:android -name system keytool -importkeystore -destkeystore ./systemkjd.jks -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass android echo "生成完毕!" 然后保存后执行如下命令: chmod +x build_system_jks2.sh ./build_system_jks2.sh 执行后会提示如下内容: 删除文件systemkjd.jks,再次执行./build_system_jks2.sh 2. Android Studio工程相关修改: 我们创建的工程为SilentInstallAPK,进入工程根目录下创建signature目录,将上面生成的systemkjd.jks文件复制到该目录下。 修改app的build.gradle文件,在android配置项里添加如下内容: signingConfigs { rk3399_8 { keyAlias 'system' keyPassword 'android' storeFile file('../signature/systemkjd.jks') storePassword 'stxinu' } } 此处的system、android和stxinu与上面生成KEY时是对应的,stxinu为生成systemkjd.jks时你自己输入的密码。然后修改buildTypes项,改为如下内容: buildTypes { release { minifyEnabledfalse proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro' signingConfig signingConfigs.rk3399_8 } debug { minifyEnabledfalse proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro' signingConfig signingConfigs.rk3399_8 } } 接下来在AndroidManifest.xml里面加上UID以及Permission配置,如下加粗部分为需要添加的内容: 静默升级关键代码 /** * 安装下载的新版本.静默安装 */ public static boolean silenceInstallApk(String apkPath) { Process process = null; BufferedReader successResult = null; BufferedReader errorResult = null; StringBuilder successMsg = new StringBuilder(); StringBuilder errorMsg = new StringBuilder(); try { // process = new ProcessBuilder("pm", "install", "-i", "com.xh.hwcontroller", "-r", apkPath).start(); process = new ProcessBuilder("pm", "install","-i",BuildConfig.APPLICATION_ID, "-r", apkPath).start(); successResult = new BufferedReader(new InputStreamReader(process.getInputStream())); errorResult = new BufferedReader(new InputStreamReader(process.getErrorStream())); String s; while ((s = successResult.readLine()) != null) { successMsg.append(s); } while ((s = errorResult.readLine()) != null) { errorMsg.append(s); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (successResult != null) { successResult.close(); } if (errorResult != null) { errorResult.close(); } } catch (Exception e) { e.printStackTrace(); } if (process != null) { process.destroy(); } } //如果含有“success”单词则认为安装成功 return successMsg.toString().equalsIgnoreCase("success"); } |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
谁有3566+电池+POE充电的方案,有个项目需要用该功能的主板
437 浏览 0 评论
RK3588的GMAC0与PHY的参考时钟电平匹配问题??????
4425 浏览 1 评论
请问各位大佬,如何解决,瑞芯微 RV1126B 使用 mpp 自带工具 调试时,内核直接报错崩溃!
1802 浏览 0 评论
使用rk3568开发板,核0\\1\\3运行linux,核2运行hal,在核0中怎么关闭核2
2359 浏览 0 评论
2363 浏览 0 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 00:43 , Processed in 0.695510 second(s), Total 71, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1339