App 2.43.5: update checks log what happens
Each check writes down the networks Android sees, the server's name lookup, how a failure happened and how many reports wait, and on a failure whether the internet answers at all, to tell a SIM without data from a server that is down. The report goes to a USB stick and, once online, the server. No address or token is written. Tried on the emulator. Not tried on the car. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LhzAVaUyqcw5PkGjz4mWW6
This commit is contained in:
@@ -55,6 +55,9 @@ final class OtaUpdater {
|
||||
private static final String TAG = "OtaUpdater";
|
||||
private static final String CACHE_PREFIX = "NilsMG4-ota-";
|
||||
|
||||
/** Why the last download failed, for the update log. */
|
||||
static volatile String downloadProblem = "unknown";
|
||||
|
||||
/** The release list on the car server, for the server configured in the app. */
|
||||
static String releasesUrl(ServerConfig config) {
|
||||
return config.url + "/v1/app/releases";
|
||||
@@ -366,6 +369,7 @@ final class OtaUpdater {
|
||||
connection.setRequestProperty("User-Agent", "NilsMG4-Android");
|
||||
if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
|
||||
Log.w(TAG, "Update download returned " + connection.getResponseCode());
|
||||
downloadProblem = UpdateDiagnosis.status(connection.getResponseCode());
|
||||
return null;
|
||||
}
|
||||
long total = connection.getContentLengthLong();
|
||||
@@ -390,10 +394,14 @@ final class OtaUpdater {
|
||||
out.getFD().sync();
|
||||
}
|
||||
ok = hex(digest.digest()).equalsIgnoreCase(expectedSha256);
|
||||
if (!ok) Log.w(TAG, "Update APK does not match its SHA-256");
|
||||
if (!ok) {
|
||||
Log.w(TAG, "Update APK does not match its SHA-256");
|
||||
downloadProblem = "it does not match its SHA-256";
|
||||
}
|
||||
return ok ? target : null;
|
||||
} catch (Exception e) {
|
||||
Log.w(TAG, "Update download failed: " + e.getClass().getSimpleName());
|
||||
downloadProblem = UpdateDiagnosis.failure(e);
|
||||
return null;
|
||||
} finally {
|
||||
if (connection != null) connection.disconnect();
|
||||
|
||||
Reference in New Issue
Block a user