schweizer
adb is not rooting. Actually it's the only way to grant or deny an app the BOOT_COMPLETED broadcast.
adb shell appops set <package_name> BOOT_COMPLETED
Will prevent an app from autostart.
There is no way to grant it if it's not in the app manifest.
Send me the app github I can submit a PR to ask for it.
This is quite simple, just an intent update i.e.:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application ...>
<receiver android:name=".MyBootReceiver" android:enabled="true" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
</application>