[RK3288][Android6.0] 调试笔记 --- 替换系统签名

本文档详细介绍了在RK3288平台上,针对Android 6.0系统如何替换默认的platform签名文件以解决apk安装权限问题。通过生成新的签名文件并修改系统及APK的签名设置,确保apk能够顺利安装并拥有system权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

Platform: RK3288
OS: Android 6.0
Kernel: 3.10.92

由于项目的apk安装需要sharedUserId为system的权限(不需要高权限的apk是可以正常安装的),
一开始我用的是releasekey,导致签名文件不匹配无法安装,因此就替换系统默认platform签名文件.

生成新的签名文件
方法参考 rk3288/build/target/product/security/README

 

[kris@:~/rk3288]$./development/tools/make_key platform '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'

后面参数可自行修改,参见:
http://blog.csdn.net/jscese/article/details/24243171

会生成两种文件:

  • 公钥: platform.x509.pem
  • 私钥: platform.pk8


系统端修改:
不管编译版本(项目需求),都改成platform签名文件.
build/core/Makefile:

 

ifeq ($(TARGET_BUILD_VARIANT),user)
BUILD_KEYS := release-keys
endif
#Kris, 170214, use our 
### 解决方案 当遇到 `Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported` 错误时,主要原因是浏览器的安全策略阻止了跨域图像数据的访问。为了防止潜在的安全风险,浏览器不允许将包含外部资源(尤其是来自不同源的图像)的画布转换为数据URL。 #### 方法一:设置CORS头 服务器端可以通过配置响应头来允许跨域资源共享 (CORS),从而使得客户端可以合法地加载并操作这些资源。具体来说,在提供图片资源的服务端添加如下HTTP头部: ```http Access-Control-Allow-Origin: * ``` 这表示任何域名都可以请求此资源。对于更严格控制的情况,则可以用具体的域名代替星号[^1]。 #### 方法二:使用代理服务 如果无法修改远程服务器上的 CORS 设置,另一种解决方案是在同一域内创建一个简单的 HTTP 代理脚本。这个脚本负责向目标 URL 发起请求并将返回的内容转发给前端应用。通过这种方式,所有的网络通信都发生在同一个源下,因此不会触发同源策略限制[^2]。 #### 方法三:确保所有资源都是本地文件或来自相同源 最简单的方法就是保证所使用的全部媒体素材要么托管在同一台服务器上,要么是从支持适当 CORS 头部的可信第三方获取而来。这样可以直接绕过跨域问题[^3]。 #### JavaScript 实现示例 下面是一个基于上述原则调整后的JavaScript代码片段,用于处理 OpenLayers 地图导出 PDF 的场景: ```javascript // 假设 map 是已经初始化好的OpenLayer地图实例对象 map.once('postrender', function () { var canvas = document.createElement('canvas'); var ctx = canvas.getContext('2d'); // 获取当前视口大小,并据此设定新创建的<canvas>尺寸 const size = map.getSize(); canvas.width = size[0]; canvas.height = size[1]; // 将地图渲染上下文复制到新的<canvas> Array.prototype.forEach.call( document.querySelectorAll('.ol-layer canvas'), function (layerCanvas) { if (layerCanvas.width > 0) { // 防止空白层干扰 let transform = layerCanvas.style.transform; transform = transform.replace(/^matrix\(([^\(]*)\)$/, '$1'); transform = transform.split(',').map(Number); // 应用变换矩阵以保持坐标系一致 ctx.setTransform(...transform); // 使用 drawImage 绘制每一层至最终输出的<canvas> ctx.drawImage(layerCanvas, 0, 0); } }); // 导出前先尝试清除现有样式属性中的transform影响 ctx.setTransform(1, 0, 0, 1, 0, 0); // 如果一切正常,此时应该能够成功调用toDataURL() try { console.log(canvas.toDataURL()); } catch(e){ alert(`Error exporting image:\n${e.message}`); } }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值