我正在尝试让我的应用以apk的新版本形式从ftp站点下载更新。下载后,apk应该以静默方式安装,未经用户确认。我已经控制了下载部分。我也可以在得到用户确认的情况下进行此操作。问题是静默更新部分。
据我所知,唯一的方法是将应用安装为系统应用。这是我需要帮助的地方。
我尝试了很多东西。我获得的最大成功是:
向清单添加以下权限:
android.permission.ACCESS_SUPERUSER和android.permission.INSTALL_PACKAGES
使用如下所示的签名,使用Android Studio-> Build-> Generate Signed APK ...对apk进行签名:
./keytool-importkeypair -k google_certificate.keystore -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform
我从GitHub上的Android源镜像获得pk8和pem文件。
我得到的第一件事是应用程序正在请求的大量权限,而从未执行过。所以我想这是系统应用程序拥有的权限,到目前为止还不错:)
我收到消息后立即:
应用未安装。
Google无法说出为什么会发生此错误,所以我在这里问。
我在正确的道路上吗?
为什么未安装该应用程序?
因此,几年后,我再次遇到了这个问题,并且设法解决了这个问题。因此,最重要的部分是使手机正确生根:这是通过SuperSU应用程序完成的。
下载.apk文件之后,将使用类似于以下内容的方法来安装更新:
private Boolean Install(String path)
{
File file = new File(path);
if(file.exists()){
try {
Process proc = Runtime.getRuntime().exec(new String[]{"su","-c","pm install -r -d " + path});
proc.waitFor();
BufferedReader input = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
String line;
Boolean hasError = false;
while ((line = input.readLine()) != null) {
if(line.contains("Failure")){
hasError = true;
}
}
if(proc.exitValue() != 0 || hasError){
return false;
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
return false;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句