PDA

Ver la Versión Completa : [TUTORIAL] Portar aplicaciones


Jechus
17/09/14, 23:18:36
hola compañeros,voy a explicar los pasos más sencillos de como portar una aplicación
Portar una aplicación es poder hacer uso de aplicaciones exclusivas para un modelo de teléfono en otro.

-------------------------------------------------------------------------------------------
Necesitamos tener una rom completa y deodexada..al igual que la rom receptora del port debe estar también deodexada.

1-La aplicación a portar (apk)
Lo primero es tener a mano la aplicación extraída de la rom
Usaremos apk Manager para decompilarla.lo recomendable es volverla a compilar y firmarla,para poder instalarla con el instalador del movil en data-app
si es una aplicación de systema la colocamos hay. "system-app"

2-Librerias.
Una vez decompilada en "AndroidManifest.xml" Tenemos toda la información necesaria de los permisos necesarios y las librerías..
Ejemplo:.......................................... .................................................. ..............
</activity>
<uses-library android:name="com.sonyericsson.cameraextension.api" />
<uses-library android:name="com.sonyericsson.privateapis_1p" />
<uses-library android:name="com.sonymobile.camera.addon.api" />
<uses-library android:name="com.sonyericsson.navigationbar" android:required="false" />
<uses-library android:name="com.sonymobile.imageprocessor.superresolution.api" android:required="false" />
</application>
</manifest>

.................................................. .................................................. ...........
Nos esta indicando las librerías necesarias para que funcione.
Las buscaremos en " system-lib"en la rom y las meteremos en el misma ruta(system-lib) en la nuestra vía zip flaseable o con un explorador root.

3- Permisos
muy importantes,sin ellos no funcionara.
usamos el mismo método en "AndroidManifest.xml" podemos ver los permisos que necesita..aunque suele bastar con un permiso con el nombre de la apk(haciendo referencia a ella)
ejemplo........................................... .................................................. ....................
com.sonymobile.album.xml
Este es el permiso del álbum,con extensión "xml"
.................................................. .................................................. ...........................
Los buscamos en "system-etc-permissions" y los introducimos en la nuestra rom de la misma forma anterior (yo suelo portar la carpeta permissions entera cuando voy a portar varias apks..pesa muy poco (60-70k)

4-framework

Mira en "system-framework" si hay alguna aplicación con extension "jar."con el mismo nombre que el permiso..o alguna que puede estar relacionada directamente con la aplicación a portar
ejemplo........................................... ....................................
com.sonymobile.album.jar
.................................................. .........................................
de la misma manera la introducimos en nuestra rom.

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
La mejor manera de introducir en nuestra rom el port es por medio de un flaseable a través del recovery.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Aquí os dejo un zip con el system del Xperia_Z3 Android4.4.4
(Xperia Z3 23.0.A.2.93 system) deodexada

Descarga:
https://mega.co.nz/#!Gc1X3TwK!BnlT6XgrGP7PevyzbIEtmFk1Ps9ximIrTOPOqR9 Pb3o
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Ademas de aplicaciones,tambien se pueden portar características de otras roms
pero hará falta decompilarla y editar el código (smali)..etc...pero eso ya es complicado,se lo dejamos a los expertos.

chucky6600
17/09/14, 23:22:15
Wwwuawwuuu!
Estupendo 👌 muchas gracias.

prepo84
17/09/14, 23:39:41
Gracias por el curro.. :thumbup:

fabox
18/09/14, 15:08:58
excelente tuto jechus :besito:

juanpirulo
18/09/14, 15:24:47
Gracias por el aporte. Saludos

juanpirulo
12/10/14, 12:32:59
Bueno ahora que ya sabemos algo mas de esto gracias a ti, me he puesto manos a la obra para aprender un poquito mas. Ahora me gustaria me ayudaras a saber que puede estar fallando con uno de mis intentos de portar la aplicacion de desenfoque (backgrounddfocus.apk). He hecho lo siguiente:

1 Decompilar la aplicacion con advance apktool.

2. Miro Android manifiest.xml y veo dentro esto
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.sonymobile.backgrounddefocus">
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.sonymobile.permission.CAMERA_ADDON"/>
<uses-permission android:name="com.sonymobile.permission.SYSTEM_UI_VISIBILITY_EXT ENSIONS"/>
<application android:debuggable="false" android:icon="@drawable/cam_app_shortcut_bokeh_icn" android:label="@string/mode_selector_selector_label" android:supportsRtl="true" android:theme="@android:style/Theme.DeviceDefault.NoActionBar.Fullscreen">
<activity android:configChanges="orientation|screenSize" android:label="@string/mode_selector_selector_label" android:launchMode="singleTask" android:name="com.sonymobile.backgrounddefocus.ViewFinderActivit y" android:screenOrientation="landscape" android:windowSoftInputMode="stateAlwaysHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
</intent-filter>
<intent-filter>
<action android:name="com.sonymobile.camera.addon.action.REGISTER_MODE"/>
</intent-filter>
<meta-data android:name="com.sonymobile.camera.addon.MODE_ATTRIBUTES" android:resource="@xml/sample_mode_attributes"/>
</activity>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="com.sonymobile.backgrounddefocus.AutoReviewActivit y" android:screenOrientation="landscape" android:windowSoftInputMode="stateAlwaysHidden"/>
<uses-library android:name="com.sonymobile.camera.addon.api" android:required="true"/>
</application>
</manifest>

3.Creo una carpeta system y creo tres subcarpetas. etc/permissions , framework, priv-app
dentro de etc/permissions he metido com.sonymobile.camera.addon.xml. dentro de framework he puesto el archivo com.sonymobile.camera.addon_impl.jar estos arhivos los he sacado del ultimo firmware del z3 y luego dentro de priv-app he metido la aplicacion bgdefocus.apk ya de nuevo compilada y firmada.

4 He creado el zip y he modificado un updater script para flashear estos archivos y el zip funciona perfectamente pero al reiniciar la camara me da fc y cierra.

A ver si me puedes decir que puede estar fallando. Saludos y gracias de antemano.

prepo84
12/10/14, 13:10:53
Creo recordar juan o lei por ahi que no se podía meter como app de sistema. Y en verdad ni se el por que. Ojala lo consigas.

juanpirulo
12/10/14, 13:31:39
En el firmware del z3 viene en esa carpeta pero probaré con data/App. Gracias por la sugerencia

juanpirulo
12/10/14, 14:48:14
Al final lo he conseguido pero solo he necesitado meter la aplicación pero sin los archivos de permisos y librerías. La he metido en system/priv-app con permisos 0644 y he borrado la aplicación bgdefocusport.apk de data/App. Saludos

https://mega.co.nz/#!i0IUVYgS!LdnGRSNphWzUPusaUiHW5bJR2aMsW7jDsBAim8x jpYc

http://tapatalk.imageshack.com/v2/14/10/12/feab1242b02fb04dc7ab17cfaf0a130d.jpg

Jechus
12/10/14, 14:57:40
JHola compañero, centrate sólo en la apk.esta necesita el lib( libmorpho_defocus_jni.so)
Puedes hacer una carpeta lib/ armeabi-v7a/y dentro de esta última el lib..luego la firmas y prueba

chucky6600
12/10/14, 15:04:06
Dos de los mejores juntos... Seguro que sale :ok:

Jechus
12/10/14, 15:21:50
Ok.Juan, ya veo que lo has conseguido, estas hecho un campeón.
Cuando instalamos una aplicación nos crea(no siempre) una carpeta en sistem/data/app-lib....ejemplo.
com.sonymobile.backgrounddefocus-1..y dentro los libs.
Si queremos mover la aplicación a sistem/app o priv-app...además de mover la apk, también movernos la carpeta renombrada « com.sonymobile.backgrounddefocus»(quitando el -1 al final)y la metemos en sistem/lib...
Un saludo compañero.

juanpirulo
12/10/14, 15:40:07
Ahhhhhhhh he reiniciado y ahora da fc el défocus que helecho mal?

Jechus
12/10/14, 15:48:19
Ahhhhhhhh he reiniciado y ahora da fc el défocus que helecho mal?
Al instalarla en data/app a creado las librerías que al pasarla a sistem han desaparecido al reiniciar...tienes que ponerlas en sistem/lib

Jechus
12/10/14, 15:51:05
Aquí tienes un ejemplo

AR_effect_for_line
http://img.tapatalk.com/d/14/10/12/a5e6uqaj.jpg

Descarga

https://mega.co.nz/#!fRMRAYoa!6tnUCn2hKyiE0HuGO5OT65HPrEv8nBlOtT1MZUe 1FUQ

Jechus
12/10/14, 16:04:33
Aquí te dejo también el bgdefocus..vamos Juan que estas haciendo una rom cojonuda y todos te estamos muy agradecidos

Bgdfocus
https://mega.co.nz/#!7NtxmTbQ!4wpC7R_Vcu6E1619yDT5f-pfTCHNk8hS4K2wZNZhqFA

Jechus
12/10/14, 16:06:11
Os dejo...que me miran de reojo

juanpirulo
12/10/14, 16:25:20
He conseguido que funcione pero hay algo que no entiendo. La primera aplicación défocus que tenia que era de un port hecho en xda no funcionaba pero si me crea la carpeta con la librería y el archivo correspondiente la segunda défocus que he portado yo la instalo ne crea la lcarpeta de la librería pero dentro no está el archivo. Al final funciona con el port mio pero con la librería creada por el otro?????

Jechus
12/10/14, 17:03:09
He conseguido que funcione pero hay algo que no entiendo. La primera aplicación défocus que tenia que era de un port hecho en xda no funcionaba pero si me crea la carpeta con la librería y el archivo correspondiente la segunda défocus que he portado yo la instalo ne crea la lcarpeta de la librería pero dentro no está el archivo. Al final funciona con el port mio pero con la librería creada por el otro?????

La portada que se instala en data, trae en la apk incluida la carpeta lib con las librerías , en la original las librerías no vienen porque ya las trae la rom original..si queremos portarla en sistem,tenemos que trasladar también las librerías que en nuestra Rom no están(esto ocurre cuando la apk tiene librerías exclusivas) en el primer post que te e contestado era lo que explicaba, tienes que incluir las librerías en la apk(lib/armeavi-v7a)y compilar.
En el zip que e puesto de bgdefocus la apk es la original(sistem/ptiv-app), con las librerías en sistem/lib.

juanpirulo
12/10/14, 18:08:04
De la segunda manera ya he conseguido que funcione, tal y como tienes tu el zip que has mandado. Pero la otra no, he decompilado la apk, en la carpeta out de la apk decompilada he creado las carpetas que me has dicho lib/armeavi-v7a y ahí he metido la librería y he vuelto a compilar (es asi no?) pero no me creaba las librerías al instalar la aplicación. Volvere a probar en otro momento, ahora me vale al menos con el zip. Saludos y gracias de nuevo.
:loco::loco:
PD hay algo para resetear el disco duro de mi cabeza, creo que ya lo tengo casi lleno. Me hace falta también un organizador de librerías ya que tengo un desorden de aupa.

Jechus
12/10/14, 18:17:06
Tu tranquilo, lo importante es que siempre te tomes esto como un pasatiempo y nunca se convierta en obligación.
Mira la captura, así tiene que quedar la apk...no se te olvide firmarla(para instalar en data)
http://img.tapatalk.com/d/14/10/13/udunuba8.jpg

juanpirulo
12/10/14, 21:00:37
Otra duda, explicabas en el tutorial cómo buscar las librerías que se necesitan mirando en el Android manifiest.xml pero en este caso como se busca? Mirando todas?

Otra duda mas. ayer otra prueba que hice fue portar soundphoto. El caso es que la meti como sistema con las librerias, no funcionaba. La cambie a data y funciona perfectamente. Esa es otra de las cosas que no me queda muy clara, cuando se puede o no se puede meter en system y hay que meter en data. Saludos

Jechus
13/10/14, 18:14:10
Otra duda, explicabas en el tutorial cómo buscar las librerías que se necesitan mirando en el Android manifiest.xml pero en este caso como se busca? Mirando todas?

Otra duda mas. ayer otra prueba que hice fue portar soundphoto. El caso es que la meti como sistema con las librerias, no funcionaba. La cambie a data y funciona perfectamente. Esa es otra de las cosas que no me queda muy clara, cuando se puede o no se puede meter en system y hay que meter en data. Saludos

El tutorial es muy básico, para portar aplicaciones que no den muchos problemas, hay aplicaciones que necesitan de otras, como soundphoto, consigues que funcione, pero para que la foto salga con sonido entra en accion mediaprovider.apk....vamos que algunas tienes que revisar todos los líbs y dejarte los ojos..jajajaja.
El porque funciona en data y en sistem no...pues no lo sé.supongo que es porque al firmarla no da problemas en data que es donde se instalan las de la Store y la trata como una más...pero bueno el caso es que funcione.

xxKirianxx
13/10/14, 18:47:42
Muuuuuyy interesante. Gracias por compartirlo.

juanpirulo
13/10/14, 19:31:17
El tutorial es muy básico, para portar aplicaciones que no den muchos problemas, hay aplicaciones que necesitan de otras, como soundphoto, consigues que funcione, pero para que la foto salga con sonido entra en accion mediaprovider.apk....vamos que algunas tienes que revisar todos los líbs y dejarte los ojos..jajajaja.
El porque funciona en data y en sistem no...pues no lo sé.supongo que es porque al firmarla no da problemas en data que es donde se instalan las de la Store y la trata como una más...pero bueno el caso es que funcione.

Bueno ya he estado hechando un ojo a un tutorial de xda, y tambien explican que cuando no vienen las lbrerias en la apk y no hay idea de cuales son lo mejor es ejecutarla y cuando hace fc hacer un logcat para que te vaya diciendo que librerias no encuentra. Pensaba que habria mas informacion dentro de las apks decompiladas acerca de esto pero ya veo que no. Bueno poco a poco voy aprendiendo algo mas. Gracias y Saludos

Jechus
14/10/14, 15:24:06
Muchas gracias Juan, este modo lo desconocía y es muy útil.

juanpirulo
14/10/14, 19:56:48
http://forum.xda-developers.com/showthread.php?t=2476050

hellonasty
14/10/14, 21:19:41
Thanks!!!!

Jechus
15/10/14, 10:15:56
http://forum.xda-developers.com/showthread.php?t=2476050

Gracias Juan.un post de Rizal Lovins.ese si que sabe, seguro que aprendemos mucho.

alone s
18/11/14, 15:07:41
Hola compañeros,un muy buen post,me gustaria saber cm portar estas apps a otra version de android,mas concretamente a la 4.1.2 Jelly Bean

Saludos

Carpinteroamador
21/11/14, 21:18:11
Hola buenas tardes...queria saber si este zip con el system del Xperia_Z3 Android4.4.4
(Xperia Z3 23.0.A.2.93 system) deodexada

Descarga:
https://mega.co.nz/#!Gc1X3TwK!BnlT6X...mIrTOPOqR9Pb3o

Se puede instalar sin mas, como si fuese una copia completa del sistema hecha por CWM o TWRP ya lista para usar sin tocarle a nada o es exclusivo para el Z3 ....

Y si se pudiera que pasos tendría que seguir para poderla instalar .me refiero a si hay que hacerle Wipes al finalizar ...bueno..... espero vuestra contestación ,,,gracias por todo:dios::dios:

Jechus
25/11/14, 18:07:14
Hola buenas tardes...queria saber si este zip con el system del Xperia_Z3 Android4.4.4
(Xperia Z3 23.0.A.2.93 system) deodexada

Descarga:
https://mega.co.nz/#!Gc1X3TwK!BnlT6X...mIrTOPOqR9Pb3o

Se puede instalar sin mas, como si fuese una copia completa del sistema hecha por CWM o TWRP ya lista para usar sin tocarle a nada o es exclusivo para el Z3 ....

Y si se pudiera que pasos tendría que seguir para poderla instalar .me refiero a si hay que hacerle Wipes al finalizar ...bueno..... espero vuestra contestación ,,,gracias por todo:dios::dios:
¡¡¡Ojala fuera tan sencillo!!!....No lo hagas,en el mejor de los casos te entrara en reinicio constante.
En el sistema hay archivos esclusivos del z3 de su hardware y su kernel que no pueden funcionar en el z1.por eso hay que portar las apks...las que se pueden.un saludo

chucky6600
26/11/14, 10:04:26
¡¡¡Ojala fuera tan sencillo!!!....No lo hagas,en el mejor de los casos te entrara en reinicio constante.
En el sistema hay archivos esclusivos del z3 de su hardware y su kernel que no pueden funcionar en el z1.por eso hay que portar las apks...las que se pueden.un saludo
Correcto:ok: