internal static ApkInfo Merge(ApkInfo init, IEnumerable <ApkInfo> apks)
        {
            if (init == null)
            {
                init = new ApkInfo();
            }

            var appApk = apks.FirstOrDefault(a => a.AppName.Length > 0);

            if (appApk != null)
            {
                init.AppName = appApk.AppName;
            }

            var pckApk = apks.FirstOrDefault(a => a.PackageName.Length > 0);

            if (pckApk != null)
            {
                init.Version     = pckApk.Version;
                init.PackageName = pckApk.PackageName;
            }

            var sdkApk = apks.FirstOrDefault(a => !SDKInfo.Unknown.Equals(a.MinSDK));

            if (sdkApk != null)
            {
                init.MinSDK    = sdkApk.MinSDK;
                init.TargetSDK = sdkApk.TargetSDK;
            }

            var perApk = apks.FirstOrDefault(a => a.Permissions.Count > 0);

            if (perApk != null)
            {
                init.Permissions = perApk.Permissions;
            }

            var scrApk = apks.FirstOrDefault(a => a.SupportScreens.Count > 0);

            if (scrApk != null)
            {
                init.SupportScreens = scrApk.SupportScreens;
            }

            var iconApk = apks.FirstOrDefault(a => !Icon.Default.Equals(a.Icon));

            if (iconApk != null)
            {
                init.Icon = iconApk.Icon;
            }

            var pathApk = apks.FirstOrDefault(a => a.FullPath.Length > 0);

            if (pathApk != null)
            {
                init.FullPath = pathApk.FullPath;
            }

            return(init);
        }
        internal ApkInfo megre(params ApkInfo[] apks)
        {
            if (apks.Any(a => a == null))
            {
                throw new ArgumentNullException();
            }

            return(ApkInfo.Merge(this, apks));
        }
 internal static ApkInfo Merge(IEnumerable <ApkInfo> apks)
 {
     return(ApkInfo.Merge(null, apks));
 }