Parse Error : There is a problem parsing the package.
Android-8에서 테스트 한이 문제가 발생했습니다 . 동일한 서명을 가진 동일한 apk가 있습니다. 버전 번호와 버전 이름없이 모든 것이 동일했습니다. 앱을 수동으로 설치할 때 설치 중이었지만 프로그래밍 방식으로 업데이트를 다운로드하고 설치할 때이 오류가 발생했습니다. 그런 다음 문제의 원인을 찾았습니다.
canRequestPackageInstalls 를 확인하는 옵션이 있습니다 . ()
이 메서드가 true를 반환하면 앱이 성공적으로 설치됩니다. 제 경우에는 항상 거짓을 반환했습니다.
그래서 먼저 이것을 확인한 다음 사용자가 업데이트를 다운로드하고 설치하도록합니다.
onCreate ()에서
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (!packageManager.canRequestPackageInstalls()) {
startActivityForResult(
Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES).setData(
Uri.parse(String.format("package:%s", packageName))
), requestCodeqInstallPackage
)
} else {
canInstallPackage = true
}
}
onActivityResult ()에서
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
if (requestCode == requestCodeqInstallPackage && resultCode == Activity.RESULT_OK) {
if (packageManager.canRequestPackageInstalls()) {
canInstallPackage = true
}
} else {
canInstallPackage = false
Toast.makeText(mContext, "Auto update feature will not work", Toast.LENGTH_LONG)
.show()
}
}
그런 다음 업데이트를 설치해야 할 때
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if(canInstallPackage){
doInstallAppProcess()
}else{
// generate error message
}
}
누군가를 도울 수 있기를 바랍니다.