Fix for internal problem with your device dialog

Problem: Compiling the APQ8016_410C_LA.BR.1.2.4-01810-8x16.0_5.1.1_Lollipop_P2 build produces images that result in the following dialog box on boot: Android System - There’s an internal problem with your device. Contact your manufacturer for details.

You can click OK and nothing happens - but it’s annoying.

Fix: Copy the /system/build.prop to /vendor/build.prop

Example commands:
adb root; sleep 0.5; adb shell mount -o remount,rw /system; adb shell cp /system/build.prop /vendor; adb reboot

The permanent fix will be to update the build scripts to copy this file there…but I haven’t got that fancy yet.

Sorry - I typoed. There needs to be a / after vendor:

adb root; sleep 0.5; adb shell mount -o remount,rw /system; adb shell cp /system/build.prop /vendor/; adb reboot

Forgot to include -p on cp to preserve timestamp etc. I wish this forum had an edit feature.

adb root; sleep 0.5; adb shell mount -o remount,rw /system; adb shell cp -p/system/build.prop /vendor; adb reboot

It seems like the timestamp on /vendor/build.prop might actually have to be newer than /system/build.prop. Before I added the cp -p option, my system time was wrong and it was older…but it seems having them the same can still produce the error.

Apparently it still does this sometimes. Anyone else come up with a solution?

It seems to be when an ADB connection via USB exists during boot, no dialog. If unplugged, error dialog. That’s why I thought copying the build.prop file made a difference - it was because the board was still connected to my laptop.

Okay - I have finally gotten to the bottom of this. It turns out that the system was not able to read the ro.build.fingerprint property at startup because it was longer than 91 characters.

This can be observed in the system log:

E/Build ( 720): Failed to set fingerprint property
E/Build ( 720): java.lang.IllegalArgumentException: val.length > 91
E/Build ( 720): at android.os.SystemProperties.set(SystemProperties.java:127)
E/Build ( 720): at android.os.Build.ensureFingerprintProperty(Build.java:639)
E/Build ( 720): at com.android.server.SystemServer.run(SystemServer.java:230)
E/Build ( 720): at com.android.server.SystemServer.main(SystemServer.java:178)
E/Build ( 720): at java.lang.reflect.Method.invoke(Native Method)
E/Build ( 720): at java.lang.reflect.Method.invoke(Method.java:372)
E/Build ( 720): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)
E/Build ( 720): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)

I manually edited the /system/build.prop on the device to shorten it and the error is gone. No /vendor/build.prop is necessary as the code doesn’t compare it if it doesn’t exist.