PushLink uses a composite key (apiKey + packageName + deviceID) to identify one installation.
Installation means a single linux/android process using Pushlink. If one device runs two applications using Pushlink, there are two installations. In most of cases the term installation can be replaced by device, because one device usually runs a single enterprise application with Pushlink.
There is not a default and 100% guarantee way to get the Device ID on Android. It depends on OS version, device brand, etc.
However, PushLink is designed for enterprise apps, and the developer has a certain control over which types of Devices and OS the application is going to run. Don't use an ID which is changed after every uninstall/install. Try to use a long live ID. Think and create your own strategy.
Don't do that. You will not be able to manage your installations properly. For example, you can't mark as 'test' a duplicated application.
First, your information will be a mess. You will see a lot of installations on the web administration, and you won't be able manage them. Second, we charge based on installations, so you can be charge twice or more for one device running one application.
Of course. Android does not allow duplicated package names in the same device. So the installation key (apiKey + packageName + deviceId) is safe.
Well, it depends a lot on your enterprise environment. See below:
Maybe use the IMEI number.
Maybe use the SIM serial number or SDCARD number.
Maybe use the MAC address.
Maybe use the Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID), if devices are over android version 2.2.
Maybe use the android.os.Build.SERIAL, if devices are over android version 2.3.