[Galaxy S II Android Development] Goldie:
Hi all,

So as everyone knows the vast majority of custom roms based on Sammy JB use preload and symlink to system/app. From reading most of the threads here I have noticed that there is not much consistency between different roms on what is symlinked and what is left in system/app. I have noticed this is making themers and modders lives difficult as they have to assume that the apks they want to install are in preload and symlink accordingly. If they arent this causes fc etc.

So...I have a proposition which I think will help the community as a whole but needs devs here to agree. Instead of splitting the apks between preload and system and then symlinking every single apk that is in preload (which leaves room for typos etc and missing apps) like this...

symlink("/preload/symlink/system/app/ApplicationsProvider.apk", "/system/app/ApplicationsProvider.apk");
symlink("/preload/symlink/system/app/AutomationTest_JBUP.apk", "/system/app/AutomationTest_JBUP.apk");
symlink("/preload/symlink/system/app/BackupRestoreConfirmation.apk", "/system/app/BackupRestoreConfirmation.apk");
symlink("/preload/symlink/system/app/BadgeProvider.apk", "/system/app/BadgeProvider.apk");
symlink("/preload/symlink/system/app/BasicLiveWallpapers.apk", "/system/app/BasicLiveWallpapers.apk");
symlink("/preload/symlink/system/app/BCService.apk", "/system/app/BCService.apk");
symlink("/preload/symlink/system/app/BluetoothAvrcp.apk", "/system/app/BluetoothAvrcp.apk");
symlink("/preload/symlink/system/app/BluetoothMap.apk", "/system/app/BluetoothMap.apk");
symlink("/preload/symlink/system/app/CapabilityManagerService.apk", "/system/app/CapabilityManagerService.apk");
symlink("/preload/symlink/system/app/CertInstaller.apk", "/system/app/CertInstaller.apk");
symlink("/preload/symlink/system/app/ChromeBookmarksSyncAdapter.apk", "/system/app/ChromeBookmarksSyncAdapter.apk");
symlink("/preload/symlink/system/app/ClipboardSaveService.apk", "/system/app/ClipboardSaveService.apk");
symlink("/preload/symlink/system/app/ClockPackage.apk", "/system/app/ClockPackage.apk");
t
symlink("/preload/symlink/system/app/CSC.apk", "/system/app/CSC.apk");
symlink("/preload/symlink/system/app/DataCreate_U1_EUR_OPEN.apk", "/system/app/DataCreate_U1_EUR_OPEN.apk");
symlink("/preload/symlink/system/app/Days.apk", "/system/app/Days.apk");
symlink("/preload/symlink/system/app/DefaultContainerService.apk", "/system/app/DefaultContainerService.apk");
symlink("/preload/symlink/system/app/Divx.apk", "/system/app/Divx.apk");
symlink("/preload/symlink/system/app/DrmProvider.apk", "/system/app/DrmProvider.apk");
symlink("/preload/symlink/system/app/EdmSysScopeService.apk", "/system/app/EdmSysScopeService.apk");
symlink("/preload/symlink/system/app/EdmVpnServices.apk", "/system/app/EdmVpnServices.apk");
symlink("/preload/symlink/system/app/EnterprisePermissions.apk", "/system/app/EnterprisePermissions.apk");
symlink("/preload/symlink/system/app/FactoryTest_U1_EUR_OPEN.apk", "/system/app/FactoryTest_U1_EUR_OPEN.apk");
symlink("/preload/symlink/system/app/GmsCore.apk", "/system/app/GmsCore.apk");
symlink("/preload/symlink/system/app/GoogleCalendarSyncAdapter.apk", "/system/app/GoogleCalendarSyncAdapter.apk");
symlink("/preload/symlink/system/app/GoogleContactsSyncAdapter.apk", "/system/app/GoogleContactsSyncAdapter.apk");
symlink("/preload/symlink/system/app/GoogleFeedback.apk", "/system/app/GoogleFeedback.apk");
symlink("/preload/symlink/system/app/GoogleLoginService.apk", "/system/app/GoogleLoginService.apk");
symlink("/preload/symlink/system/app/GooglePartnerSetup.apk", "/system/app/GooglePartnerSetup.apk");
symlink("/preload/symlink/system/app/GoogleServicesFramework.apk", "/system/app/GoogleServicesFramework.apk");
symlink("/preload/symlink/system/app/GoogleTTS.apk", "/system/app/GoogleTTS.apk");
symlink("/preload/symlink/system/app/GroupCast.apk", "/system/app/GroupCast.apk");
symlink("/preload/symlink/system/app/InputDevices.apk", "/system/app/InputDevices.apk");
symlink("/preload/symlink/system/app/InputEventApp_U1_EUR_OPEN.apk", "/system/app/InputEventApp_U1_EUR_OPEN.apk");
symlink("/preload/symlink/system/app/JobManager.apk", "/system/app/JobManager.apk");
symlink("/preload/symlink/system/app/KeyChain.apk", "/system/app/KeyChain.apk");
symlink("/preload/symlink/system/app/Keystring_factory_JBUP.apk", "/system/app/Keystring_factory_JBUP.apk");
symlink("/preload/symlink/system/app/Kobo.apk", "/system/app/Kobo.apk");
symlink("/preload/symlink/system/app/lcdtest_U1_EUR_OPEN.apk", "/system/app/lcdtest_U1_EUR_OPEN.apk");
symlink("/preload/symlink/system/app/LogsProvider.apk", "/system/app/LogsProvider.apk");
symlink("/preload/symlink/system/app/Microbes.apk", "/system/app/Microbes.apk");
symlink("/preload/symlink/system/app/minimode-res.apk", "/system/app/minimode-res.apk");
symlink("/preload/symlink/system/app/MusicFX.apk", "/system/app/MusicFX.apk");
symlink("/preload/symlink/system/app/MusicPlayer.apk", "/system/app/MusicPlayer.apk");
symlink("/preload/symlink/system/app/NetworkLocation.apk", "/system/app/NetworkLocation.apk");
symlink("/preload/symlink/system/app/OmaCP.apk", "/system/app/OmaCP.apk");
symlink("/preload/symlink/system/app/OmaDrmPopup.apk", "/system/app/OmaDrmPopup.apk");
symlink("/preload/symlink/system/app/PackageInstaller.apk", "/system/app/PackageInstaller.apk");
symlink("/preload/symlink/system/app/PanningTryActually.apk", "/system/app/PanningTryActually.apk");
symlink("/preload/symlink/system/app/Phone_Util_U1_EUR_OPEN.apk", "/system/app/Phone_Util_U1_EUR_OPEN.apk");
symlink("/preload/symlink/system/app/PhoneErrService.apk", "/system/app/PhoneErrService.apk");
symlink("/preload/symlink/system/app/Phonesky.apk", "/system/app/Phonesky.apk");
symlink("/preload/symlink/system/app/PopupuiReceiver.apk", "/system/app/PopupuiReceiver.apk");
symlink("/preload/symlink/system/app/Preconfig.apk", "/system/app/Preconfig.apk");
symlink("/preload/symlink/system/app/SamsungCamera.apk", "/system/app/SamsungCamera.apk");
symlink("/preload/symlink/system/app/SamsungIME.apk", "/system/app/SamsungIME.apk");
symlink("/preload/symlink/system/app/SecBrowser.apk", "/system/app/SecBrowser.apk");
symlink("/preload/symlink/system/app/SecCalendar.apk", "/system/app/SecCalendar.apk");
symlink("/preload/symlink/system/app/SecCalendarProvider.apk", "/system/app/SecCalendarProvider.apk");
symlink("/preload/symlink/system/app/SecCalculator2.apk", "/system/app/SecCalculator2.apk");
symlink("/preload/symlink/system/app/SecContacts.apk", "/system/app/SecContacts.apk");
symlink("/preload/symlink/system/app/SecContactsProvider.apk", "/system/app/SecContactsProvider.apk");
symlink("/preload/symlink/system/app/SecDownloadProvider.apk", "/system/app/SecDownloadProvider.apk");
symlink("/preload/symlink/system/app/SecDownloadProviderUi.apk", "/system/app/SecDownloadProviderUi.apk");
symlink("/preload/symlink/system/app/SecEmail.apk", "/system/app/SecEmail.apk");
symlink("/preload/symlink/system/app/SecExchange.apk", "/system/app/SecExchange.apk");
symlink("/preload/symlink/system/app/SecGallery2.apk", "/system/app/SecGallery2.apk");
symlink("/preload/symlink/system/app/SecLauncher2.apk", "/system/app/SecLauncher2.apk");
symlink("/preload/symlink/system/app/SecMediaProvider.apk", "/system/app/SecMediaProvider.apk");
symlink("/preload/symlink/system/app/SecMms.apk", "/system/app/SecMms.apk");
symlink("/preload/symlink/system/app/SecNoteMyFiles.apk", "/system/app/SecNoteMyFiles.apk");
symlink("/preload/symlink/system/app/SecOmaDownloadProvider.apk", "/system/app/SecOmaDownloadProvider.apk");
symlink("/preload/symlink/system/app/SecPhone.apk", "/system/app/SecPhone.apk");
symlink("/preload/symlink/system/app/SecSettings.apk", "/system/app/SecSettings.apk");
symlink("/preload/symlink/system/app/SecSettingsProvider.apk", "/system/app/SecSettingsProvider.apk");
symlink("/preload/symlink/system/app/SecSetupWizard.apk", "/system/app/SecSetupWizard.apk");
symlink("/preload/symlink/system/app/SecTelephonyProvider.apk", "/system/app/SecTelephonyProvider.apk");
symlink("/preload/symlink/system/app/SelfTestMode_U1_EUR_OPEN.apk", "/system/app/SelfTestMode_U1_EUR_OPEN.apk");
symlink("/preload/symlink/system/app/serviceModeApp_U1_EUR_OPEN.apk", "/system/app/serviceModeApp_U1_EUR_OPEN.apk");
symlink("/preload/symlink/system/app/SetupWizard.apk", "/system/app/SetupWizard.apk");
symlink("/preload/symlink/system/app/SharedStorageBackup.apk", "/system/app/SharedStorageBackup.apk");
symlink("/preload/symlink/system/app/shutdown_JBUP.apk", "/system/app/shutdown_JBUP.apk");
symlink("/preload/symlink/system/app/SmartcardService.apk", "/system/app/SmartcardService.apk");
symlink("/preload/symlink/system/app/SPlannerAppWidget.apk", "/system/app/SPlannerAppWidget.apk");
symlink("/preload/symlink/system/app/Stk.apk", "/system/app/Stk.apk");
symlink("/preload/symlink/system/app/Swype.apk", "/system/app/Swype.apk");
symlink("/preload/symlink/system/app/SystemUI.apk", "/system/app/SystemUI.apk");
symlink("/preload/symlink/system/app/talkback.apk", "/system/app/talkback.apk");
symlink("/preload/symlink/system/app/TwDVFSApp.apk", "/system/app/TwDVFSApp.apk");
symlink("/preload/symlink/system/app/UserDictionaryProvider.apk", "/system/app/UserDictionaryProvider.apk");
symlink("/preload/symlink/system/app/VideoPlayer.apk", "/system/app/VideoPlayer.apk");
symlink("/preload/symlink/system/app/voice_talk_U1.apk", "/system/app/voice_talk_U1.apk");
symlink("/preload/symlink/system/app/VoiceSearchStub.apk", "/system/app/VoiceSearchStub.apk");
symlink("/preload/symlink/system/app/VpnDialogs.apk", "/system/app/VpnDialogs.apk");
symlink("/preload/symlink/system/app/WAPPushManager.apk", "/system/app/WAPPushManager.apk");
symlink("/preload/symlink/system/app/Zinio.apk", "/system/app/Zinio.apk");

....why not move ALL apks from system/app to preload, symlink the entire folder and then REMOVE system/app from your ROM zips. So system/app exists purely as a link. Like this...

symlink("/preload/symlink/system/app", "/system/app");

My ROM has been doing this since LSJ and personally I find it makes a lot more sense. :good:

Benefits:

Consistency between ROMS

One line in your script instead of a huge list.

All apks in one place meaning modders and themers know they can safely install stuff to preload without having to put symlinks in their scripts as the folder is already linked.

Users can move more easily between ROMS of the same base without FC because of left over stuff in other places.

Opinions? :)