[GUIDE/TIPS] How to Port OEM Apps / Vendor Apps to Your Current ROM

Search This thread
L

LastStandingDroid

Guest
like modifying the framework as well as systemui?
Framework.maybe systemui not sure how much camera related info it has there.and some jar files actually what we could do (at least those who have s4 for example and google play edition variant can actually do a good research to gain stock camera functionality in custom Roms since then you'll be able to track what's needed ;)
 

berryman13

Senior Member
Mar 30, 2011
1,988
1,239
San Francisco
What kind of changes are necessary for me to port NVIDIA Tegra SHIELD Tablet stylus launcher and game controller support? I am assuming it's very tough,
 

leon nunes

Member
Jan 5, 2014
16
0
Framework.maybe systemui not sure how much camera related info it has there.and some jar files actually what we could do (at least those who have s4 for example and google play edition variant can actually do a good research to gain stock camera functionality in custom Roms since then you'll be able to track what's needed ;)

thanks Ill learn how to modify stuff
 

webnetxpress

Member
Oct 12, 2011
20
0
Is there an APP porting service?

If I have an app (and no aptitude to doing this on my own ;) Is someone available to "port" the app so that I could use it on my generic android device? If so, I'd be happy to pay someone for their time to do this. not sure if this is the right place to post this or not. If not, sorry. Thanks.
 

vibhorchaudhary

Senior Member
Aug 15, 2014
458
1,114
Bengaluru
ABOUT ME

WHO IS MASTER RIZAL LOVINS ???

JUST FOLLOW ME OR ADD ME AS YOUR FRIEND ON SOCIAL NETWORKS




Hi girls and boys :laugh:

I just wanted to share a little tips/guide/info to port apps from the platform, this is doesn't mean all the applications of the platform can be ported!!!

This is just example

Ok Let's start!!! ;)


Requirement :

1. Knowledge in decompile/recompile/sign/zipalign apk file (apps)

- If you don't know how to do this, visit this thread http://xdaforums.com/showthread.php?t=2195680

2. Knowledge to find library file (*.so file) and framework file (*.jar) whats needed from apps

3. Knowledge to use LogCat

- if you don't know how to do this, visit this thread http://xdaforums.com/showthread.php?t=2274119

How can I know what's library is needed? :

1. Knowledge is in need if the library doesn't exist in apk file, locate the name of the library file (*.so file) that may be related to the application (the file name may be a bit the same with the application) you can search in system>lib or use NDK tool for Linux users

2. If library file already exist in apk file /folder lib>armeabi (You just need to extract it from apk file and take the file *.so)

1390685_1376164759288317_784663848_n.jpg


3. To see what's apps required library framework file :

- Decompile apps with using file framework-res.apk from that ROM apps (Also maybe need framework 2 like SemcGenericUxpRes.apk or twframework-res.apk etc)

1381721_1376164639288329_404257341_n.jpg


- Open AndroidManifest.xml using Text Editor (Like NotePad++) and see like this line

1384300_1376164685954991_1611404921_n.jpg


Leave file has been decompiled and Take it file name (In list androidmanifest) from the ROM file that you want to ported from system>framework also take permission framework file (*.xml) from system>etc>permission


What should i do know? :

1. First times you need download Full ROM is there already deodexed so you can take some file you need to ported
2. If you already understand what i said above, lets start to final section
3. If you already take all file what you need to port, collect all the files, and prepare cwm zip updater, add the file to zip with right folder

*.Apk file must be in system>app

*.So file must be in system>lib

*.jar file must be in system>framework

*.xml file permissions framework must be in system>etc>permissions

564065_1376164732621653_257947863_n.jpg


This section is not modified the apps, first you can try flash it with CWM and see its working or not, if not working (FC) you need to see whats wrong in logcat (FATAL ERROR)

Or the problem apps parsing error because your Android Version is lower (e.g apps JB to ICS)

Now you need to decompile that apps

Go to smali folder and search whats wrong in logcat, if you already fix it

Then open AndroidManifest.xml try to change minimal sdk version from Android_manifest and in apktool.yml

1377208_1376196905951769_1861282843_n.jpg


1381343_1376196852618441_1574383812_n.jpg



Code:
minSdkVersion: '[COLOR="Red"]16[/COLOR]'
targetSdkVersion: '17'

Change to this number

Code:
minSdkVersion: '[COLOR="Red"]14[/COLOR]'
targetSdkVersion: '17'

save all changes

then recompile, sign and zipalign


NOTE :

1. Not any apps can be ported to lower Android Version by changed minimal sdk

nice tut brother.. but it would be helpful if u go little more in deep :D
 

AlfasMP

Senior Member
Dec 13, 2013
377
297
Kerala
www.alfasmp.com
@Rizal Lovins & other fellows ,

I tried to port an ICS stock camera from my SGS Duos. But it gave me a force close . It is now running with 4.4.4 kitkat and it only has a 3 MP camera app ( only supports upto 3 MP ).

Have a look at my logcat guys
Logcat

I can't understand what cause FC .
Can anyone read it and tell me about the problem ?

regards,
 

lacoursiere18

Senior Member
Jan 9, 2013
4,183
7,001
LbTs
@Rizal Lovins & other fellows ,

I tried to port an ICS stock camera from my SGS Duos. But it gave me a force close . It is now running with 4.4.4 kitkat and it only has a 3 MP camera app ( only supports upto 3 MP ).

Have a look at my logcat guys
Logcat

I can't understand what cause FC .
Can anyone read it and tell me about the problem ?

regards,

Code:
java.lang.UnsatisfiedLinkError: Couldn't load seccamera_jni from loader

Your missing some libraries..
 

lacoursiere18

Senior Member
Jan 9, 2013
4,183
7,001
LbTs
Thank you for the reply ,

But I already checked that thing and I can't find a library named seccamera_jni in my rom :(

Well can you have a little guess about its location or something like that ? ( yea little tough I know )

Regards,
AlfasMP

I tried to port an ICS stock camera from my SGS Duos. But it gave me a force close . It is now running with 4.4.4 kitkat and it only has a 3 MP camera app ( only supports upto 3 MP ).

Have you looked in ICS where you are pulling the files from?
 

AlfasMP

Senior Member
Dec 13, 2013
377
297
Kerala
www.alfasmp.com
Have you looked in ICS where you are pulling the files from?

Of course . But there is no above mentioned file ...
I pulled almost all of the libraries and frameworks (.so & .jar) from ICS , but have no luck

Name of that library is actually
seccamera_jni.xx ? Or is that file/lib compressed in an other one with different name ?
Who knows ...

Regards,
AlfasMP
 
Last edited:

UzUmAKI_NaRuTo1

Senior Member
May 1, 2014
274
263
Mumbai
Xiaomi Poco F1
Confused

hey nice guide..!! thanks....:)
but theres a confusion

I understood whole tutorial...... but following thing makes everything messy !!

- Open AndroidManifest.xml using Text Editor (Like NotePad++) and see like this line



Leave file has been decompiled and Take it file name (In list androidmanifest) from the ROM file that you want to ported from system>framework also take permission framework file (*.xml) from system>etc>permission


1. 'like this line' . i didnt get which line you talking about.

2. and the second line ........ starting from 'Leave file has been. . . . ..' i cldnt understand this !!



Plz can you explain !! and thanks in advance:)
 
Thanks your thread, now i can understand how to port app! After read your guide, i try to port the Browser OEM app from Stock rom 4.4.2 to Custom rom 5.1.1 (SDK 19 or 20 [im not sure] to SDK22, right?), but i im stuck on step 3: what's apps required library framework file, cause AndroidManifest.xml file haven't any structure same <uses-library android:name="com.sony.device" android:required="true" />, as you can see below:
Code:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.browser">
    <original-package android:name="com.android.browser"/>
    <permission android:label="@string/permission_preload_label" android:name="com.android.browser.permission.PRELOAD" android:protectionLevel="signatureOrSystem"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
    <uses-permission android:name="android.permission.USE_CREDENTIALS"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.NFC"/>
    <uses-permission android:name="android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS"/>
    <uses-permission android:name="android.permission.SET_WALLPAPER"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/>
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
    <uses-permission android:name="android.permission.READ_PROFILE"/>
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
    <uses-permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"/>
    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.GET_TASKS"/>
    <uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS"/>
    <uses-permission android:name="android.permission.ACCESS_VOICE_ACTION"/>
    <uses-permission android:name="com.android.launcher3.permission.READ_SETTINGS"/>
    <uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE"/>
    <uses-permission android:name="android.permission.GET_TASKS"/>
    <application android:backupAgent=".BrowserBackupAgent" android:hardwareAccelerated="true" android:icon="@drawable/shortcut_browser" android:label="@string/application_name" android:name="Browser" android:taskAffinity="android.task.browser" android:theme="@style/BrowserTheme" supportreartouch="true">
        <provider android:authorities="com.android.browser;browser" android:exported="true" android:multiprocess="false" android:name=".provider.BrowserProvider2" android:readPermission="com.android.browser.permission.READ_HISTORY_BOOKMARKS" android:writePermission="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS">
            <path-permission android:path="/bookmarks/search_suggest_query" android:readPermission="android.permission.GLOBAL_SEARCH"/>
        </provider>
        <activity android:alwaysRetainTaskState="true" android:configChanges="locale|keyboard|keyboardHidden|orientation|screenSize" android:label="@string/application_name" android:launchMode="singleTask" android:name="BrowserActivity" android:theme="@style/BrowserTheme" android:windowSoftInputMode="adjustResize">
            <intent-filter>
                <action android:name="android.speech.action.VOICE_SEARCH_RESULTS"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <data android:scheme="http"/>
                <data android:scheme="https"/>
                <data android:scheme="about"/>
                <data android:scheme="javascript"/>
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:scheme="http"/>
                <data android:scheme="https"/>
                <data android:scheme="inline"/>
                <data android:mimeType="text/html"/>
                <data android:mimeType="text/plain"/>
                <data android:mimeType="application/xhtml+xml"/>
                <data android:mimeType="application/vnd.wap.xhtml+xml"/>
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:scheme="http"/>
                <data android:scheme="https"/>
                <data android:scheme="file"/>
                <data android:mimeType="application/x-webarchive-xml"/>
            </intent-filter>
            <intent-filter android:priority="-101">
                <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:scheme="http"/>
                <data android:scheme="https"/>
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.LAUNCHER"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <category android:name="android.intent.category.APP_BROWSER"/>
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.WEB_SEARCH"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <data android:scheme=""/>
                <data android:scheme="http"/>
                <data android:scheme="https"/>
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.MEDIA_SEARCH"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SEARCH"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.pantech.MULTIWINDOW_LAUNCHER"/>
            </intent-filter>
            <meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/>
        </activity>
        <activity android:icon="@mipmap/ic_launcher_shortcut_browser_bookmark" android:label="@string/shortcut_bookmark" android:name="ShortcutActivity" android:theme="@style/ShortcutTheme">
            <intent-filter>
                <action android:name="android.intent.action.CREATE_SHORTCUT"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <activity android:configChanges="orientation|screenSize" android:icon="@mipmap/ic_launcher_shortcut_browser_bookmark" android:label="@string/shortcut_bookmark" android:name="SimpleHomeAddBookmark" android:theme="@style/ShortcutTheme">
            <intent-filter>
                <action android:name="android.intent.action.ADD_SIMPLE_BOOKMARK"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <activity android:configChanges="orientation|screenSize" android:label="@string/menu_preferences" android:name="BrowserPreferencesPage" android:theme="@style/PreferencesPageTheme">
            <intent-filter>
                <action android:name="android.intent.action.MANAGE_NETWORK_USAGE"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SKYSettingSlot"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
            <meta-data android:name="IntentString" android:value="\#Intent;launchFlags=0x20000000;component=com.android.browser/.BrowserPreferencesPage;end"/>
        </activity>
        <activity android:excludeFromRecents="true" android:label="@string/bookmarks_search" android:name="BookmarkSearch" android:stateNotNeeded="true" android:theme="@android:style/Theme.NoDisplay">
            <intent-filter>
                <action android:name="android.intent.action.SEARCH"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
            <meta-data android:name="android.app.searchable" android:resource="@xml/bookmarks_searchable"/>
        </activity>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:label="@string/bookmarks_add_page" android:name="AddBookmarkPage" android:theme="@style/DialogWhenLarge" android:windowSoftInputMode="adjustResize">
            <intent-filter>
                <action android:name="android.intent.action.INSERT"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:mimeType="vnd.android.cursor.dir/bookmark"/>
            </intent-filter>
        </activity>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:label="@string/bookmarks_history" android:name="ComboViewActivity" android:theme="@style/BookmarkTheme"/>
        <activity android:launchMode="singleTask" android:name=".OneHandControlHelpActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent">
            <intent-filter>
                <action android:name="android.intent.action.OneHandControlHelpActivity"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <activity android:launchMode="singleTask" android:name=".QuickControlTutorial1" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent">
            <intent-filter>
                <action android:name="android.intent.action.QUICK_CONTROL_TUTORIAL1"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <activity android:launchMode="singleTask" android:name=".QuickControlTutorial2" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent">
            <intent-filter>
                <action android:name="android.intent.action.QUICK_CONTROL_TUTORIAL2"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <receiver android:label="@string/v_bookmarks" android:name=".widget.BookmarkThumbnailWidgetProvider">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
                <action android:name="com.android.browser.BOOKMARK_APPWIDGET_UPDATE"/>
                <action android:name="com.pantech.launcher3.action.UPDATE_WIDGET_THEME"/>
            </intent-filter>
            <meta-data android:name="android.appwidget.provider" android:resource="@xml/bookmarkthumbnailwidget_info"/>
            <meta-data android:name="com.pantech.appwidget" android:value="bookmarks"/>
            <meta-data android:name="com.pantech.appwidget.update_later" android:value="bookmarks"/>
        </receiver>
        <service android:exported="false" android:name=".widget.BookmarkThumbnailWidgetService" android:permission="android.permission.BIND_REMOTEVIEWS"/>
        <receiver android:exported="false" android:name=".widget.BookmarkWidgetProxy"/>
        <activity android:name=".widget.BookmarkWidgetConfigure" android:taskAffinity="android.task.BookmarkWidgetConfigure" android:theme="@style/WidgetBookmarkConfigure">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
            </intent-filter>
        </activity>
        <meta-data android:name="android.app.default_searchable" android:value=".BrowserActivity"/>
        <meta-data android:name="com.google.android.partnersetup.RLZ_ACCESS_POINT" android:value="@string/rlz_access_point"/>
        <receiver android:name=".OpenDownloadReceiver">
            <intent-filter>
                <action android:name="android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED"/>
            </intent-filter>
        </receiver>
        <provider android:authorities="com.android.browser.home" android:exported="false" android:name=".homepages.HomeProvider" android:readPermission="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
        <receiver android:name=".AccountsChangedReceiver">
            <intent-filter>
                <action android:name="android.accounts.LOGIN_ACCOUNTS_CHANGED"/>
            </intent-filter>
        </receiver>
        <receiver android:name=".PreloadRequestReceiver" android:permission="com.android.browser.permission.PRELOAD">
            <intent-filter>
                <action android:name="android.intent.action.PRELOAD"/>
                <data android:scheme="http"/>
            </intent-filter>
        </receiver>
        <provider android:authorities="com.android.browser.snapshots" android:exported="false" android:name=".provider.SnapshotProvider"/>
        <receiver android:exported="false" android:name=".SetPreferredBrowser">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>
        <receiver android:name=".FontLocaleChangeReceiver">
            <intent-filter>
                <action android:name="android.intent.action.LOCALE_CHANGED"/>
            </intent-filter>
        </receiver>
        <activity android:configChanges="orientation|screenSize" android:excludeFromRecents="true" android:label="SimpleHomeBookmark" android:name=".simplehome.SimpleBookmark" android:screenOrientation="portrait" android:taskAffinity="android.task.simplebookmark" android:theme="@style/SimpleHome" android:windowSoftInputMode="adjustPan">
            <intent-filter>
                <action android:name="com.pantech.simple.BROWSER"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <service android:name=".inarrator.INarratorService" android:process=":InarratorService">
            <intent-filter>
                <action android:name="com.pantech.Inarrator"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.PHONE_STATE"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </service>
        <receiver android:name="com.android.browser.inarrator.INarratorServiceReceiver">
            <intent-filter>
                <action android:name="android.intent.action.MEDIA_BUTTON"/>
                <action android:name="android.media.AUDIO_HEADSET_PLUGED"/>
                <action android:name="android.media.AUDIO_BECOMING_NOISY"/>
            </intent-filter>
        </receiver>
        <activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenSize" android:name=".inarrator.INarratorDetailActivity" android:theme="@style/INarratorTheme">
            <intent-filter>
                <action android:name="android.intent.action.INARRATOR_DETAIL_PAGE"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:label="@string/narrator_offline_list" android:name=".inarrator.INarratorListeningActivity" android:theme="@style/BookmarkTheme"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name=".inarrator.ViewListActivitys" android:theme="@style/BookmarkTheme"/>
        <provider android:authorities="com.android.browser.inarrator" android:exported="false" android:name=".provider.INarratorProvider"/>
        <service android:name="com.android.browser.aot.AOTBrowser" android:permission="android.permission.BIND_ALWAYS_ON_TOP">
            <intent-filter>
                <action android:name="android.alwaysontopservice.AlwaysOnTopService"/>
            </intent-filter>
            <meta-data android:name="android.alwaysontopservice.aot" android:resource="@xml/aot_method"/>
        </service>
        <receiver android:exported="false" android:name="com.android.browser.capture.PageCaptureReceiver">
            <intent-filter>
                <action android:name="com.android.browser.capture.DELETE"/>
            </intent-filter>
            <intent-filter>
                <action android:name="com.android.browser.capture.EDIT"/>
            </intent-filter>
        </receiver>
    </application>
</manifest>

so i cant know how to do next. Would you help me, please!
 

Attachments

  • Capture.PNG
    Capture.PNG
    53.8 KB · Views: 72
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 153
    2a9zUsv.png

    INTRODUCING

    Hello XDA Community
    I just want to share TIPS how to port OEM/VENDOR Apps to your current ROM

    Requirement :

    1. Knowledge in decompile/recompile/sign/zipalign apk file (apps)
    - If you don't know how to do this, visit this thread http://xdaforums.com/showthread.php?t=2195680

    2. Knowledge to find library file (*.so file) and framework file (*.jar) whats needed from apps
    3. You should understand MANAGING APPLICTAIONS it help on making update into system like porting APPS
    - if you don't know how to do this, visit this post http://xdaforums.com/showpost.php?p=60829642&postcount=2
    4. Knowledge to use LogCat
    - if you don't know how to do this, visit this thread http://xdaforums.com/showthread.php?t=2274119

    What should i do now? :

    1. First times you need download Full ROM is there already deodexed so you can take some file you need to ported or you make it by yourself
    2. If you already understand what i said above, lets start to final section
    3. If you already take all file what you need to port, collect all the files, and prepare update.zip updater, add the file to zip with right folder

    *.Apk file must be in system>app or priv-app
    *.So file must be in system>lib
    *.jar file must be in system>framework
    *.xml file permissions framework must be in system>etc>permissions

    How can I know what's library is needed? :

    1. Knowledge is in need if the library doesn't exist in apk file, locate the name of the library file (*.so file) that may be related to the application (the file name may be a bit the same with the application) you can search in system>lib or use using a logcat after installing apps, you will see a missing library like :
    FATAL error can't find class blablabla something like that :D

    2. If library file already exist in apk file /folder lib>armeabi (You just need to extract it from apk file and take the file *.so)
    Moawj5V.png


    (Taking *.so files)
    Example for all applications

    NOTE For Lollipop : Google has change structure of an applications in system that every applications having lib folder itself, it make more easy to locate lib files

    - Open SemcAlbum.apk using winrar/rar and extract folder lib then remove folder lib from that app
    vwzTO3J.png

    - Rename com.sonyericsson.album.apk to SemcAlbum.apk
    - Create folder with same name with apk name (SemcAlbum)
    - Under that folder create folder lib
    - Under lib folder create folder arm
    - navigate to the extracted lib before, move *.so files from armeabi-v7a if exist or armeabi into SemcAlbum/lib/arm/
    xiSQsHB.png

    3. To see what's apps required library framework file :
    - Decompile apps with using file framework-res.apk from that ROM apps (Also maybe need framework 2 like SemcGenericUxpRes.apk etc)
    - Open AndroidManifest.xml using Text Editor (Like NotePad++) and see like this line
    2SZ4pl2.png

    <uses-library android:name="com.sony.device" android:required="true" />
    <uses-library android:name="com.sony.device" android:required="false" />
    Leave file has been decompiled and Take it file name (In list AndroidManifest) from the ROM file that you want to ported from system>framework also take permission framework file (*.xml) from system>etc>permissions

    Example :
    com.sonyericsson.navigationbar < it mean jar file, so you should take the file from system/framework

    framework files need xml file permissions
    com.sonyericsson.navigationbar.xml file, so you should take the file from system/etc/permissions


    Explaination :
    What The different true & false?
    true : the application is required that framework to work
    false : the application is still required that framework but without that framework the application can still work but some feature that need framework files will not work.

    This section is not modified the apps, first you can try flash it with Recovery and see its working or not, if not working (FC) you need to see whats wrong in logcat (FATAL ERROR)

    Or the problem apps parsing error because your Android Version is lower (e.g apps JB to ICS)

    Now you need to decompile that apps

    Go to smali folder and search whats wrong in logcat, if you already fix it (I will explain how to fix it in next post)

    Then open AndroidManifest.xml try to change minimal sdk version from Android_manifest or in apktool.yml
    Code:
    minSdkVersion: '[COLOR="Red"]16[/COLOR]'
    targetSdkVersion: '17'
    Change to this number
    Code:
    minSdkVersion: '[COLOR="Red"]14[/COLOR]'
    targetSdkVersion: '17'
    save all changes
    then recompile, sign and zipalign

    NOTE :
    1. Not any apps can be ported to lower Android Version by change minimal sdk
    59
    Analizing app force close and how to fix it

    Well in this post i will explain how to fix force close app that you are trying to port
    Typically applications that do not work is because several factors:
    1. Missing library framework
    2. Missing *.so files
    3. Java Method or function that do not match with your current ROM

    1. Missing library framework
    You should look at AndroidManifest.xml what app needed framework files, see screenshots!
    2SZ4pl2.png

    take the file name like on AndroidManifest.xml in system/framework and take xml permissions files from system/etc/permissions

    2. Missing *.so files
    This is really confused how to find what app is need *.so files
    The solution is install the app and take a logcat!

    The log will say something like this :
    example (can't find class libUXVisualizer blablabla)

    then you just search on system/lib for libUXVisualizer.so from the ROM you want to port and take it!

    3. Java Method or function that do not match with your current ROM
    There is many factors that make app force close, but in SONY Apps usually only error "GetString". if you are trying to port SONY Apps to your current ROM (E.g. CM Based ROM) you will face same issue like this.
    lxIbQpz.jpg


    What should i do now after i see this log?

    Ok let's start!!!
    1. Decompile apps with using file framework-res.apk from that ROM apps (Also maybe need framework 2 like SemcGenericUxpRes.apk etc)
    2. Go to folder smali/com/sonyericsson/metadatacleanup/util/
    3. Open StorageManagerIf.smali using text editor
    - Find .line 262 and see like this!
    tyTiMqL.png

    4. Decompile your framework-res.apk
    - Go to folder res/value/
    - Open Public.xml using text editor
    - Following StorageManagerIf.smali in .line 262 there is code look like this
    Code:
    const-string v2, "[COLOR="Red"]storage_internal[/COLOR]"
    RIGHT?
    - SO Search storage_internal in Public.xml in your framework-res.apk
    EqxeMSF.png

    copy the code and change the code look like this!
    Code:
        const-string v2, "[COLOR="Red"]storage_internal[/COLOR]"
    
        invoke-direct {p0, v1, v2}, Lcom/sonyericsson/metadatacleanup/util/StorageManagerIf;->getString(Landroid/content/res/Resources;Ljava/lang/String;)Ljava/lang/String;
    
        move-result-object v2
    
        invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
    
        move-result v2
    
        if-eqz v2, :cond_0
    Shrink code to
    Code:
    const v2, [COLOR="Red"]0x10405ad[/COLOR]
    So it will look like this
    Code:
     .line 262
        .local v0, "description":Ljava/lang/String;
        const v2, 0x10405ad
    
        if-eqz v2, :cond_0

    In screenshot logcat say there is many error, you should search similar code like before "storage_sdcard" & "storage_usb" and follow changing code guide like before!!! also search in other smali that same error like that.

    If you are done, save all change then recompile apk and sign apk

    CONGRATZ YOU ARE DONE.
    39
    CREDITS :

    Thanks to @Lasan for the trick @ibanez7 for always helping me if i stuck
    6
    Thanks for it...... :good::good::good::good:
    but still waiting for more detil tuttor, give some example to port apk from sony to all android device
    because i wana be RC-RD like you:D:silly:

    you are realy great RC-RD here

    you are welcome my friend :)

    Yeah i will post with all detail later, now just uploaded some screenshots :)

    No!!! i'm not developer :D
    4
    Any tutorial for round switches in settings like homani framework
    And xperia u phone book port to tipo ????