New SlimRoms Boot Animation

Just another simple SlimRoms boot animation. I use Gimp to make each frame, and then zip them together like so:

$ zip -r -0 ./SlimHD.zip ./part0
$ zip -r -0 ./SlimHD.zip ./part1
$ zip -r -0 ./SlimHD.zip ./desc.txt

Where -r means recursive, and -0 means no compression.

Download the Zip file:
http://www.mediafire.com/download/5kq2rn7ny1epmi7/SlimHD.zip

Animated GIF:

The desc.txt file is very straightforward, it simply says:

[CODE]
1080 1920 30
p 1 0 part0
p 0 0 part1

[/CODE]

1080 1920 – The screen resolution.

30 – Frames per second.

p 1 0 – Play this section, and stop after once.

p 0 0 – Play this section, and stop after none, which causes a loop of this folder.

If you unzip the file, you will see two folders, part0 and part1, with each frame in it, sequentially numbered 1000.jpg, 1001.jpg, etc. You will also see the desc.txt file. These boot animation files are really simple. It is the artwork that is the hard part. Personally, I don’t think art is my God given talent, but as long as he gives me the time to do it, I’m still learning how to make things that are fun and look good.

The ascii art was made by someone in the SlimRoms team, I didn’t make that one. I simply used Gimp to edit it, swirl it, pinch it, and color it.

Linux – Keep it simple.

Compile SlimRoms 6.0 for the Samsung Galaxy S4 T-mobile variant (JFLTETMO SGH-M919)

And so the epic journey to compile SlimMM for the JFLTETMO continues….

[CODE]
warning: string ‘gsm_alphabet_default_charset’ has no default translation.
device/samsung/qcom-common/overlay/frameworks/base/core/res/res/values/cm_arrays.xml:19: error: Resource does not already exist in overlay at ‘shutdown_reboot_options’; use <add-resource> to add.

device/samsung/qcom-common/overlay/frameworks/base/core/res/res/values/cm_arrays.xml:20: error: Resource at shutdown_reboot_options appears in overlay but not in the base package; use <add-resource> to add.

device/samsung/qcom-common/overlay/frameworks/base/core/res/res/values/cm_arrays.xml:21: error: Resource at shutdown_reboot_options appears in overlay but not in the base package; use <add-resource> to add.

device/samsung/qcom-common/overlay/frameworks/base/core/res/res/values/cm_arrays.xml:22: error: Resource at shutdown_reboot_options appears in overlay but not in the base package; use <add-resource> to add.

device/samsung/qcom-common/overlay/frameworks/base/core/res/res/values/cm_arrays.xml:23: error: Resource at shutdown_reboot_options appears in overlay but not in the base package; use <add-resource> to add.

device/samsung/qcom-common/overlay/frameworks/base/core/res/res/values/cm_arrays.xml:28: error: Resource does not already exist in overlay at ‘shutdown_reboot_actions’; use <add-resource> to add.

device/samsung/qcom-common/overlay/frameworks/base/core/res/res/values/cm_arrays.xml:29: error: Resource at shutdown_reboot_actions appears in overlay but not in the base package; use <add-resource> to add.

device/samsung/qcom-common/overlay/frameworks/base/core/res/res/values/cm_arrays.xml:30: error: Resource at shutdown_reboot_actions appears in overlay but not in the base package; use <add-resource> to add.

device/samsung/qcom-common/overlay/frameworks/base/core/res/res/values/cm_arrays.xml:31: error: Resource at shutdown_reboot_actions appears in overlay but not in the base package; use <add-resource> to add.

device/samsung/qcom-common/overlay/frameworks/base/core/res/res/values/cm_arrays.xml:32: error: Resource at shutdown_reboot_actions appears in overlay but not in the base package; use <add-resource> to add.

device/samsung/jf-common/overlay/frameworks/base/core/res/res/values/config.xml:166: error: Resource at config_multiColorNotificationLed appears in overlay but not in the base package; use <add-resource> to add.

device/samsung/jf-common/overlay/frameworks/base/core/res/res/values/config.xml:169: error: Resource at config_intrusiveBatteryLed appears in overlay but not in the base package; use <add-resource> to add.

device/samsung/jf-common/overlay/frameworks/base/core/res/res/values/config.xml:172: error: Resource at config_multiColorBatteryLed appears in overlay but not in the base package; use <add-resource> to add.

device/samsung/jf-common/overlay/frameworks/base/core/res/res/values/config.xml:239: error: Resource at config_deviceHardwareKeys appears in overlay but not in the base package; use <add-resource> to add.

device/samsung/jf-common/overlay/frameworks/base/core/res/res/values/config.xml:253: error: Resource at config_deviceHardwareWakeKeys appears in overlay but not in the base package; use <add-resource> to add.

make: *** [/home/alaskalinuxuser/Documents/projects/phones/compile/slimroms6/out/target/common/obj/APPS/framework-res_intermediates/package-export.apk] Error 1
make: *** Deleting file `/home/alaskalinuxuser/Documents/projects/phones/compile/slimroms6/out/target/common/obj/APPS/framework-res_intermediates/package-export.apk’
make: *** Waiting for unfinished jobs….
Kernel: arch/arm/boot/Image is ready
Kernel: arch/arm/boot/zImage is ready
make[1]: Leaving directory `/home/alaskalinuxuser/Documents/projects/phones/compile/slimroms6/kernel/samsung/jf’
DTBs not enabled
Kernel Modules not enabled
make: Leaving directory `/home/alaskalinuxuser/Documents/projects/phones/compile/slimroms6′

#### make failed to build some targets (52:46 (mm:ss)) ####
[/CODE]

It would appear that taking the a CM device tree and putting it into SlimRoms was not exactly a drop in ready solution! That’s okay, since I wasn’t expecting it to be. Here are several cm.array and config xml problems. These files are specifically setting up things that would work with CM13. However, those items don’t exist in SlimRoms, so these two files should just be removed. It seems to me that there should be SOME xml files here, however, so I removed these and dropped in some from SlimLP thinking hopefully that will work. Well, it didn’t, so I just removed them entirely.

Linux – Keep it simple.

Compile SlimRoms 6.0 for the Samsung Galaxy S4 T-mobile variant (JFLTETMO SGH-M919)

So I have an excerpt of my error log here from the previous build. It is a bit lengthy. One of the things about Android compiling that is interesting to me, is that you are compiling multiple parts at the same time. That being said, at the bottom is the notification of failure to build, but no-where near there is one of our key-words to denote the failure. The failure actually transpired 169 lines up from the finished failure line, because make has to wait for all jobs to finish before it can actually stop the build.

Just so we are not confused, the commands do not continue to build new things on the list, they simply complete whatever item that they are working on before closing shop due to the error.

[CODE]
hardware/qcom/media-caf/msm8960/mm-video/vidc/vdec/src/omx_vdec.cpp:10428:39: warning: format specifies type ‘int’ but the argument has type ‘OMX_U32’ (aka ‘unsigned long’) [-Wformat]
buffer_size_req,bytes);
^~~~~
system/core/include/log/log.h:156:52: note: expanded from macro ‘ALOGE’
#define ALOGE(…) ((void)ALOG(LOG_ERROR, LOG_TAG, __VA_ARGS__))
^
system/core/include/log/log.h:453:38: note: expanded from macro ‘ALOG’
LOG_PRI(ANDROID_##priority, tag, __VA_ARGS__)
^
system/core/include/log/log.h:461:37: note: expanded from macro ‘LOG_PRI’
android_printLog(priority, tag, __VA_ARGS__)
^
system/core/include/log/log.h:534:36: note: expanded from macro ‘android_printLog’
__android_log_print(prio, tag, fmt)
^
hardware/qcom/media-caf/msm8960/mm-video/vidc/vdec/src/omx_vdec.cpp:10442:45: warning: comparison of integers of different signs: ‘int’ and ‘uint32_t’ (aka ‘unsigned int’) [-Wsign-compare]
if ((temp_bufferHdr – omx->m_out_mem_ptr) >=
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
hardware/qcom/media-caf/msm8960/mm-video/vidc/vdec/src/omx_vdec.cpp:10512:51: warning: format specifies type ‘int’ but the argument has type ‘OMX_U32’ (aka ‘unsigned long’) [-Wformat]
func, bufferHdr, buffer_size_req, bytes);
^~~~~
system/core/include/log/log.h:156:52: note: expanded from macro ‘ALOGE’
#define ALOGE(…) ((void)ALOG(LOG_ERROR, LOG_TAG, __VA_ARGS__))
^
system/core/include/log/log.h:453:38: note: expanded from macro ‘ALOG’
LOG_PRI(ANDROID_##priority, tag, __VA_ARGS__)
^
system/core/include/log/log.h:461:37: note: expanded from macro ‘LOG_PRI’
android_printLog(priority, tag, __VA_ARGS__)
^
system/core/include/log/log.h:534:36: note: expanded from macro ‘android_printLog’
OMX_EventError, p2, NULL, NULL );
^~~~
0
211 warnings and 3 errors generated. ##################<—-HERE IS THE ERROR! #################
make: *** Waiting for unfinished jobs….
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:697:44: warning: implicit conversion of NULL constant to ‘OMX_U32’ (aka ‘unsigned long’) [-Wnull-conversion]
NULL, NULL);
^~~~
0
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:413:19: warning: comparison of integers of different signs:
system/core/include/log/log.h:156:52: note: expanded from macro ‘ALOGE’
#define ALOGE(…) ((void)ALOG(LOG_ERROR, LOG_TAG, __VA_ARGS__))
^
system/core/include/log/log.h:453:38: note: expanded from macro ‘ALOG’
LOG_PRI(ANDROID_##priority, tag, __VA_ARGS__)
^
system/core/include/log/log.h:461:37: note: expanded from macro ‘LOG_PRI’
android_printLog(priority, tag, __VA_ARGS__)
^
system/core/include/log/log.h:534:36: note: expanded from macro ‘android_printLog’
__android_log_print(prio, tag, fmt)
^
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:2953:82: warning: unused parameter ‘hComp’ [-Wunused-parameter]
OMX_IN OMX_HANDLETYPE hComp,
^
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:2955:82: warning: unused parameter ‘port’ [-Wunused-parameter]
OMX_IN OMX_U32 port,
^
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:3213:69: warning: unused parameter ‘hComp’ [-Wunused-parameter]
OMX_ERRORTYPE omx_video::free_buffer(OMX_IN OMX_HANDLETYPE hComp,
^
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:3595:21: warning: format specifies type ‘unsigned int’ but the argument has type ‘unsigned long’ [-Wformat]
(width*height), chromaOffset, buffer->nAllocLen,
^~~~~~~~~~~~~~
system/core/include/log/log.h:156:52: note: expanded from macro ‘ALOGE’
#define ALOGE(…) ((void)ALOG(LOG_ERROR, LOG_TAG, __VA_ARGS__))
^
system/core/include/log/log.h:453:38: note: expanded from macro ‘ALOG’
LOG_PRI(ANDROID_##priority, tag, __VA_ARGS__)
^
system/core/include/log/log.h:461:37: note: expanded from macro ‘LOG_PRI’
android_printLog(priority, tag, __VA_ARGS__)
^
system/core/include/log/log.h:534:36: note: expanded from macro ‘android_printLog’
__android_log_print(prio, tag, fmt)
^
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:3595:37: warning: format specifies type ‘unsigned int’ but the argument has type ‘OMX_U32’ (aka ‘unsigned long’) [-Wformat]
(width*height), chromaOffset, buffer->nAllocLen,
^~~~~~~~~~~~
system/core/include/log/log.h:156:52: note: expanded from macro ‘ALOGE’
#define ALOGE(…) ((void)ALOG(LOG_ERROR, LOG_TAG, __VA_ARGS__))
^
system/core/include/log/log.h:453:38: note: expanded from macro ‘ALOG’
LOG_PRI(ANDROID_##priority, tag, __VA_ARGS__)
^
system/core/include/log/log.h:461:37: note: expanded from macro ‘LOG_PRI’
android_printLog(priority, tag, __VA_ARGS__)
^
system/core/include/log/log.h:534:36: note: expanded from macro ‘android_printLog’
__android_log_print(prio, tag, fmt)
^
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:3595:51: warning: format specifies type ‘unsigned int’ but the argument has type ‘OMX_U32’ (aka ‘unsigned long’) [-Wformat]
(width*height), chromaOffset, buffer->nAllocLen,
^~~~~~~~~~~~~~~~~
system/core/include/log/log.h:156:52: note: expanded from macro ‘ALOGE’
#define ALOGE(…) ((void)ALOG(LOG_ERROR, LOG_TAG, __VA_ARGS__))
^
system/core/include/log/log.h:453:38: note: expanded from macro ‘ALOG’
LOG_PRI(ANDROID_##priority, tag, __VA_ARGS__)
^
system/core/include/log/log.h:461:37: note: expanded from macro ‘LOG_PRI’
android_printLog(priority, tag, __VA_ARGS__)
^
system/core/include/log/log.h:534:36: note: expanded from macro ‘android_printLog’
__android_log_print(prio, tag, fmt)
^
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:3596:21: warning: format specifies type ‘unsigned int’ but the argument has type ‘unsigned long’ [-Wformat]
chromaOffset+chromaSize);
^~~~~~~~~~~~~~~~~~~~~~~
system/core/include/log/log.h:156:52: note: expanded from macro ‘ALOGE’
#define ALOGE(…) ((void)ALOG(LOG_ERROR, LOG_TAG, __VA_ARGS__))
^
system/core/include/log/log.h:453:38: note: expanded from macro ‘ALOG’
LOG_PRI(ANDROID_##priority, tag, __VA_ARGS__)
^
system/core/include/log/log.h:461:37: note: expanded from macro ‘LOG_PRI’
android_printLog(priority, tag, __VA_ARGS__)
^
system/core/include/log/log.h:534:36: note: expanded from macro ‘android_printLog’
__android_log_print(prio, tag, fmt)
^
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:3470:81: warning: unused parameter ‘hComp’ [-Wunused-parameter]
OMX_ERRORTYPE omx_video::empty_this_buffer_proxy(OMX_IN OMX_HANDLETYPE hComp,
^
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:3688:78: warning: unused parameter ‘hComp’ [-Wunused-parameter]
OMX_IN OMX_HANDLETYPE hComp,
^
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:3696:56: warning: comparison of integers of different signs: ‘int’ and ‘OMX_U32’ (aka ‘unsigned long’) [-Wsign-compare]
if(bufferAdd == NULL || ((bufferAdd – m_out_mem_ptr) >= m_sOutPortDef.nBufferCountActual) )
~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:3743:70: warning: unused parameter ‘hComp’ [-Wunused-parameter]
OMX_ERRORTYPE omx_video::set_callbacks(OMX_IN OMX_HANDLETYPE hComp,
^
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:3770:78: warning: unused parameter ‘hComp’ [-Wunused-parameter]
OMX_ERRORTYPE omx_video::use_EGL_image(OMX_IN OMX_HANDLETYPE hComp,
^
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:3771:74: warning: unused parameter ‘bufferHdr’ [-Wunused-parameter]
OMX_INOUT OMX_BUFFERHEADERTYPE** bufferHdr,
^
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:3772:79: warning: unused parameter ‘port’ [-Wunused-parameter]
OMX_IN OMX_U32 port,
^
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:3773:76: warning: unused parameter ‘appData’ [-Wunused-parameter]
OMX_IN OMX_PTR appData,
^
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:3774:75: warning: unused parameter ‘eglImage’ [-Wunused-parameter]
OMX_IN void* eglImage)
^
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:3793:69: warning: unused parameter ‘hComp’ [-Wunused-parameter]
OMX_ERRORTYPE omx_video::component_role_enum(OMX_IN OMX_HANDLETYPE hComp,
^
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:4138:21: warning: format specifies type ‘int’ but the argument has type ‘OMX_U32’ (aka ‘unsigned long’) [-Wformat]
buffer, idx, m_sOutPortDef.nBufferCountActual);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
system/core/include/log/log.h:156:52: note: expanded from macro ‘ALOGE’
#define ALOGE(…) ((void)ALOG(LOG_ERROR, LOG_TAG, __VA_ARGS__))
^
system/core/include/log/log.h:453:38: note: expanded from macro ‘ALOG’
LOG_PRI(ANDROID_##priority, tag, __VA_ARGS__)
^
system/core/include/log/log.h:461:37: note: expanded from macro ‘LOG_PRI’
android_printLog(priority, tag, __VA_ARGS__)
^
system/core/include/log/log.h:534:36: note: expanded from macro ‘android_printLog’
__android_log_print(prio, tag, fmt)
^
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:4135:50: warning: comparison of integers of different signs: ‘int’ and ‘OMX_U32’ (aka ‘unsigned long’) [-Wsign-compare]
if(buffer == NULL || ((buffer – m_out_mem_ptr) > m_sOutPortDef.nBufferCountActual))
~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:4188:21: warning: comparison of integers of different signs: ‘int’ and ‘OMX_U32’ (aka ‘unsigned long’) [-Wsign-compare]
((buffer_index > m_sInPortDef.nBufferCountActual) &&
~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:4189:26: warning: comparison of integers of different signs: ‘int’ and ‘OMX_U32’ (aka ‘unsigned long’) [-Wsign-compare]
(buffer_index_meta > m_sInPortDef.nBufferCountActual)))
~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:4405:121: warning: format specifies type ‘int’ but the argument has type ‘OMX_U32’ (aka ‘unsigned long’) [-Wformat]
DEBUG_PRINT_ERROR(“get_parameter: OMX_IndexParamVideoProfileLevelQuerySupported nProfileIndex ret NoMore %d\n”, profileLevelType->nProfileIndex); %lu
system/core/include/log/log.h:156:52: note: expanded from macro ‘ALOGE’
#define ALOGE(…) ((void)ALOG(LOG_ERROR, LOG_TAG, __VA_ARGS__))
^
system/core/include/log/log.h:453:38: note: expanded from macro ‘ALOG’
LOG_PRI(ANDROID_##priority, tag, __VA_ARGS__)
^
system/core/include/log/log.h:461:37: note: expanded from macro ‘LOG_PRI’
android_printLog(priority, tag, __VA_ARGS__)
^
system/core/include/log/log.h:534:36: note: expanded from macro ‘android_printLog’
__android_log_print(prio, tag, fmt)
^
hardware/qcom/media-caf/msm8960/mm-video/vidc/venc/src/omx_video_base.cpp:4423:121: warning: format specifies type ‘int’ but the argument has type ‘OMX_U32’ (aka ‘unsigned long’) [-Wformat]
DEBUG_PRINT_ERROR(“get_parameter: OMX_IndexParamVideoProfileLevelQuerySupported nProfileIndex ret NoMore %d\n”, profileLevelType->nProfileIndex);
system/core/include/log/log.h:453:38: note: expanded from macro ‘ALOG’
LOG_PRI(ANDROID_##priority, tag, __VA_ARGS__)
^
system/core/include/log/log.h:461:37: note: expanded from macro ‘LOG_PRI’
android_printLog(priority, tag, __VA_ARGS__)
^
system/core/include/log/log.h:534:36: note: expanded from macro ‘android_printLog’
__android_log_print(prio, tag, fmt)
^
95 warnings generated.
make: Leaving directory `/home/alaskalinuxuser/Documents/projects/phones/compile/slimroms6′

#### make failed to build some targets (02:10:13 (hh:mm:ss)) ####
[/CODE]

When we look back through the logs, we can see that there are actually a lot of warnings, and several errors. Most of them seem to revolve around things in the “mm-video” folder, and the system/core/include/log/log.h file. Once again, we really don’t want to change SLimRoms source code unless we have to, but in this case, the two are both in the source code downloaded from SlimRoms.

I decided to compare the SlimRom source download with the CM13 source that provided a successful build. There were several notable differences from the two mm-video folders, so I decided to drop in the CM13 mm-video folder and see where that takes us. It built successfully on the CM13 build, so I am hoping that it will work here too.

Linux – Keep it simple.

Compile SlimRoms 6.0 for the Samsung Galaxy S4 T-mobile variant (JFLTETMO SGH-M919)

Well, since God was gracious enough to allow me to complete a working compilation of SlimRoms 5.1.1 for the Samsung Galaxy S4 T-mobile variant (JFLTETMO SGH-M919), I decided it was time to try to compile a SlimRoms 6.0 ROM as well. There is not an up-to-date branch (mm6.0) for the JFTLETMO in the SlimRoms repository. However, there is several available branches in other repositories. I have chosen the same branch from the CyanogenMod repository that I recently used to successfully compile CM13 for the JFLTETMO phone.

After setting up my build environment, here was the first set of failures:

[CODE]
logtags: /home/alaskalinuxuser/Documents/projects/phones/compile/slimroms6/out/target/common/obj/APPS/PackageInstaller_intermediates/src/src/com/android/packageinstaller/EventLogTags.java <= packages/apps/PackageInstaller/src/com/android/packageinstaller/EventLogTags.logtags
Notice file: packages/apps/PackageInstaller/NOTICE — /home/alaskalinuxuser/Documents/projects/phones/compile/slimroms6/out/target/product/jfltetmo/obj/NOTICE_FILES/src//system/priv-app/PackageInstaller/PackageInstaller.apk.txt
make: *** No rule to make target `/home/alaskalinuxuser/Documents/projects/phones/compile/slimroms6/out/target/common/obj/JAVA_LIBRARIES/org.cyanogenmod.platform.internal_intermediates/classes.jack’, needed by `/home/alaskalinuxuser/Documents/projects/phones/compile/slimroms6/out/target/common/obj/APPS/SamsungDoze_intermediates/with-local/classes.dex’. Stop.
make: *** Waiting for unfinished jobs….
make: Leaving directory `/home/alaskalinuxuser/Documents/projects/phones/compile/slimroms6′

#### make failed to build some targets (05:21 (mm:ss)) ####
[/CODE]

Doze is a new option that allows for deeper sleep cycles when your phone is not in use. Supposedly it can add significant time to your battery life in respect to the time that your phone is sitting unused. I don’t think that my quick and dirty fix is the right answer, but I think this will keep things moving while I figure it out:

[CODE]
alaskalinuxuser@alaskalinuxuser-HP-Compaq-6715b-FY288UC-ABA:~/Documents/projects/phones/compile/slimroms6$ mkdir /home/alaskalinuxuser/Documents/projects/phones/compile/slimroms6/out/target/common/obj/JAVA_LIBRARIES/org.cyanogenmod.platform.internal_intermediates
alaskalinuxuser@alaskalinuxuser-HP-Compaq-6715b-FY288UC-ABA:~/Documents/projects/phones/compile/slimroms6$ touch /home/alaskalinuxuser/Documents/projects/phones/compile/slimroms6/out/target/common/obj/JAVA_LIBRARIES/org.cyanogenmod.platform.internal_intermediates/classes.jack
[/CODE]

And I gave it another run. Usually this process takes hours. We’ll see how it goes!

Linux – Keep it simple.

Compiling Slimrom 6 for the Samsung Galaxy S4 T-mobile (JFLTETMO SGH-M919)

Today I started work on compiling Slimrom 6 for the Samsung Galaxy S4 T-mobile (JFLTETMO SGH-M919). There currently isn’t an up to date branch for the JFLTETMO phone in the Slimrom repository, so my chances of success may be slim (pun intended). However, it has to start somewhere, so I figure I might as well start with the latest branch of JFLTETMO, which is from lp5.1, and see if I can update it for mm6.0. The first thing I need is the device specific files.

[CODE]
alaskalinuxuser@alaskalinuxuser-HP-Compaq-6715b-FY288UC-ABA:~/Documents/projects/phones/compile/slimroms6$ breakfast
including vendor/slim/vendorsetup.sh

You’re building on Linux

Breakfast menu… pick a combo:
(—EDITED FOR SPACE—)
46. slim_jfltetmo-userdebug 97. slim_vs985-userdebug
(—EDITED FOR SPACE—)
… and don’t forget the bacon!

Which would you like? [aosp_arm-eng] 46
build/core/product_config.mk:234: *** Can not locate config makefile for product “slim_jfltetmo”. Stop.
Device jfltetmo not found. Attempting to retrieve device repository from SlimRoms Github (http://github.com/SlimRoms).
Found repository: device_samsung_jfltetmo
Checking branch info
Calculated revision: mm6.0
Default revision: android-6.0.1_r43
Default revision android-6.0.1_r43 not found in device_samsung_jfltetmo. Bailing.
Branches found:
jb4.2
jb4.3
kk4.4
lp5.0
lp5.1
Use the ROOMSERVICE_BRANCHES environment variable to specify a list of fallback branches.
build/core/product_config.mk:234: *** Can not locate config makefile for product “slim_jfltetmo”. Stop.

** Don’t have a product spec for: ‘slim_jfltetmo’
** Do you have the right repo manifest?
[/CODE]

As we can see here, the problem is that the specified device does not have a github branch that is the correct branch. In this case, it is looking for a branch named mm6.0, but it would possibly take a branch named android-6.0.1_r43. The repo command then lists the available branches. The latest branch available for this github repository of this device is lp5.1.

Now the question is what do we do about it? Well, we have several options, but one that I decided to explore today was to use the ROOMSERVICE_BRANCHES variable and choose another branch, as we see here:

[CODE]
alaskalinuxuser@alaskalinuxuser-HP-Compaq-6715b-FY288UC-ABA:~/Documents/projects/phones/compile/slimroms6$ export ROOMSERVICE_BRANCHES=lp5.1
alaskalinuxuser@alaskalinuxuser-HP-Compaq-6715b-FY288UC-ABA:~/Documents/projects/phones/compile/slimroms6$ breakfast
including vendor/slim/vendorsetup.sh

You’re building on Linux

Breakfast menu… pick a combo:
(—EDITED FOR SPACE—)
46. slim_jfltetmo-userdebug 97. slim_vs985-userdebug
(—EDITED FOR SPACE—)
… and don’t forget the bacon!

Which would you like? [aosp_arm-eng] 46
build/core/product_config.mk:234: *** Can not locate config makefile for product “slim_jfltetmo”. Stop.
Device jfltetmo not found. Attempting to retrieve device repository from SlimRoms Github (http://github.com/SlimRoms).
Found repository: device_samsung_jfltetmo
Checking branch info
Calculated revision: mm6.0
Default revision: android-6.0.1_r43
Using fallback branch: lp5.1
Adding dependency: SlimRoms/device_samsung_jfltetmo -> device/samsung/jfltetmo
Using branch lp5.1 for SlimRoms/device_samsung_jfltetmo
Syncing repository to retrieve project.
Fetching project SlimRoms/device_samsung_jfltetmo
remote: Counting objects: 81, done.
remote: Total 81 (delta 0), reused 0 (delta 0), pack-reused 81
From git://github.com/SlimRoms/device_samsung_jfltetmo
* [new branch] jb4.2 -> github/jb4.2
* [new branch] jb4.3 -> github/jb4.3
* [new branch] kk4.4 -> github/kk4.4
* [new branch] lp5.0 -> github/lp5.0
* [new branch] lp5.1 -> github/lp5.1
Fetching projects: 100% (1/1), done.

Repository synced!
Looking for dependencies
Adding dependencies to manifest
Adding dependency: SlimRoms/device_samsung_qcom-common -> device/samsung/qcom-common
Adding dependency: SlimRoms/hardware_samsung -> hardware/samsung
Adding dependency: SlimRoms/device_samsung_jf-common -> device/samsung/jf-common
Adding dependency: CyanogenMod/android_kernel_samsung_jf -> kernel/samsung/jf
Syncing dependencies
Fetching project Slim
[/CODE]

As you can see, it worked to download the older branch. This does not mean, however, that the build will be successfull or work when done by using this older branch. It simply allows you to sync something that was not on the default branch. This tool is pretty handy if you want to try other branches of something without editing your roomservice files, or as in this case, older branches that need updating to a newer branch for testing purposes.

Linux – Keep it simple.

Compile SlimRoms 5.1.1 for the Samsung Galaxy S4 T-mobile variant (JFLTETMO SGH-M919)

SlimRoms has always fascinated me. It is particularly, well, slim. Cutting things down to the bare-bones of what you really need, and then using alternate tool-chains to build a faster, more compact system. That is what SlimRoms is all about.

As a fan of SlimRoms, I looked and looked, and could not find a SlimRoms for my phone that was newer than 4.4.2, which is Kitkat. Not only is that less than secure, it does not use ART, but uses Davlik instead. Wishing to have something a little newer, I thought I’d try compiling it myself.

After downloading SlimRoms source, I pulled the device specific source from the following gits.
Device tree – https://github.com/SlimRoms/device_samsung_jfltetmo
Vendor blobs – https://github.com/TheMuppets/proprietary_vendor_samsung

There were a few hiccups along the way, several small items that I needed to iron out, but in the end, here was the result:

[CODE]
running: java -Xmx2048m -jar /home/alaskalinuxuser/Documents/projects/phones/compile/slimlp51/out/host/linux-x86/framework/signapk.jar -w build/target/product/security/testkey.x509.pem build/target/product/security/testkey.pk8 /tmp/tmpCSp0zg /home/alaskalinuxuser/Documents/projects/phones/compile/slimlp51/out/target/product/jfltetmo/slim_jfltetmo-ota-b340d7e285.zip
done.
Package Complete: /home/alaskalinuxuser/Documents/projects/phones/compile/slimlp51/out/target/product/jfltetmo/Slim-jfltetmo-5.1.1.beta.0.15-UNOFFICIAL-20160511-0642.zip

#### make completed successfully (11:03:48 (hh:mm:ss)) ####
[/CODE]

Yes, after 11 hours of compiling, God was gracious, and the build was finally successful. Ironically, that is 11 hours using ccache! I probably should get a newer computer to do this on. I’m currently using a HP Compaq 6715b laptop with a mechanical hard drive and only 4 GB of ram. I mention that because most compiler guides will tell you to have 8 GB of ram and a solid state hard drive. Those things are great, and I’m sure my build times would cut literally in half if I had those, but don’t be afraid to try compiling on a lesser machine. For me, it works just fine. I usually start a compilation and let it run over night. I guess you might say that I make my own “nightlies”!

As with any ROM, I began with my standard tests. It installed properly, booted, and worked! Actually, I haven’t found anything that fails to work on it yet, which is a blessing indeed!

In any event, since I could not find this ROM for my phone, and since it was successful and functional, I posted it on XDA’s website. Here is the link to it if you would like to see that:
http://forum.xda-developers.com/galaxy-s4-tmobile/development/rom-slimlp-jfltetmo-t3377731

Here is the direct download link, if you happen to have the same phone and would like to try it:
http://www.mediafire.com/download/baspvw621ram4ge/Slim-jfltetmo-5.1.1-AKLU-20160511.zip

Linux – Keep it simple.

SlimRoms Boot Animation

So while I was waiting for my homemade SlimRoms to compile, I used my time to put together this boot animation.

Download link:
http://www.mediafire.com/download/yrommhqq68j5dy2/slimrom.zip

It’s very, well, slim. Kind of keeps with the overall tone of Slimroms, I think.

I used gimp to create each frame, and then zipped them together with no compression. You are welcome to break down the zip if you would like to see the setup. Pretty simple really. While I am using it on my SGH-M919, with a 1080×1920 screen, the resolution of this animation is actually 480×800. Your phone should automatically center it on your screen, and in this case, undersizing it helps make it look even slimmer.

Be sure to rename it bootanimation.zip and drop it in your /system/media/ folder if you want to use it on your phone.

Linux – Keep it simple.