Error libz.so.1 en Android Studio y Debian/Ubuntu al abrir o ejecutar una app

Al tratar de ejecutar una app en Android Studio, éste manda el siguiente error:

appt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory

jx_post_328_01

Este mensaje de error es presentado debido a que faltan algunas bibliotecas por instalar en nuestro GNU/Linux, para resolver este problema en plataformas basadas en Debian, bastará con ejecutar lo siguiente:

sudo apt-get install lib32z1

Con ésto, se eliminará el mensaje de error y se podrá ejecutar la app.

Error al abrir Android Device Monitor y ejecutar adb en Debian/Ubuntu

En Ubuntu de 64 bits y lanzar Android Studio y abrir el Adroid Device Monitor, manda el siguiente error:

adb: error=2, No such file or directory

jx_post_324_01

Este mensaje de error es producido, debido a que el sistema operativo es a 64 bits y requiere manejar la compatibilidad a 32 bits para que pueda ejecutar adb correctamente.

Lo que se debe instalar es lo siguiente:

sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5

Eso permitirá ejecutar adb sin problemas.

Cambiar la ruta del SDK de Android en Android Studio

Ahora que me encuentro haciendo la migración de Eclipse a Android Studio,  me encontré que al aplicar algunas actualizaciones de éste último, es necesario que el SDK de Android no se encuentre dentro de la estructura de archivos de Android Studio. Una vez que coloqué el SDK en otra parte me encontré con la duda motivo de este post. ¿Ahora donde encuentro la opción para especificar la nueva ruta del SDK al Android Studio?, pues bueno, la respuesta es sencilla, simplemente hay que seguir los siguientes pasos:

Abrir Android Studio

jx_post_316_01

y ahora ir a Configure -> Project Defaults -> Project Structure

jx_post_316_02 jx_post_316_03 jx_post_316_04 jx_post_316_05

Y justo en Android SDK Location podremos hacer el cambio que se desea.

Copiar un texto al portapaples en Android

Para realizar esta acción en Android se puede hacer de dos formas debido a que en versiones anteriores al SDK 11 se maneja una sintaxis y a partir de ésta se usa otra diferente.

SDK anterior a 11:

android.text.ClipboardManager clipboard = (android.text.ClipboardManager)this.getSystemService(CLIPBOARD_SERVICE);
clipboard.setText("Texto copiado al portapapeles");

SDK mayor o igual a 11:

ClipData clip = ClipData.newPlainText("text", "Texto copiado al portapapeles");
ClipboardManager clipboard = (ClipboardManager)this.getSystemService(CLIPBOARD_SERVICE);
clipboard.setPrimaryClip(clip);

Error de AdMob en Android: Error parsing XML: unbound prefix

Otro problema con el cuál me encontré, fue al ingresar la siguiente línea en el layout donde deseaba colocar la publicidad:

<com.google.ads.AdView android:id="@+id/adView"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         ads:adUnitId="MY_AD_UNIT_ID"
                         ads:adSize="BANNER"
                         ads:testDevices="TEST_EMULATOR, TEST_DEVICE_ID"
                         ads:loadAdOnCreate="true"/>

El error que me apareció fue:

Error parsing XML: unbound prefix

Realmente este error fue por un poco de falta de atención, ya que omití una línea que es necesaria y la cual deberemos colocar en el RelativeLayout principal de nuestro layout:

xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"

Quedando de la siguiente manera:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

Esto permitirá que desaparezca ese error.

Error de AdMob en Android: String types not allowed

Al iniciar la integregración de AdMob en una aplicación en Android, me encontré que al agregar la siguiente línea:

<activity android:name="com.google.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

Me surgía el siguiente error:

Error: String types not allowed (at 'keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize')

Esto parte es por no seguir las indicaciones a los requerimientos jajaja, pero para poder corregirlo, habrá que abrir el archivo project.properties y cambiar el valor del target a android-13 o superior:

target=android-13

Si al guardar los cambios sigue mostrando el error, es posible que tenga que aplicar clean al proyecto. Esto es seleccionando la opción:

Project -> Clean…

Con eso se corregirá ese problema.

Ocultar el teclado virtual en Android cuando hacemos un onClick en un botón

Cuando estamos implementando una búsqueda en nuestra app en Android, muchas veces si no es que en su mayoría, colocamos un elemento EditView para introducir la palabra a buscar y un Button o ImageButton para presionar y comenzar la búsqueda ya sea a través de un Web Service o en una base de datos local de la palabra ingresada.

Por ende cuando ingresamos la palabra es porque se muestra el teclado virtual de nuestro dispositivo, pero cuando presionamos el botón de búsqueda no se oculta el teclado. Pues para hacer eso, vamos a simular lo siguiente.

Vamos a suponer que tenemos dos atributos:

protected EditText editTextBuscar;

protected ImageButton imageButtonBuscar;

Ahora en el listener del botón vamos a colocar las instrucciones para ocultar el teclado virtual.

imageButtonBuscar.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {
        InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

        inputMethodManager.hideSoftInputFromWindow(editTextBuscar.getWindowToken(), 0);
    }
});

Con esto al presionar el botón el teclado se ocultará.

Error de Android en Eclipse: Failed to install apk on device timeout

Desarrollando una aplicación (app) en Android, me surgió el siguiente error:

Failed to install MiApp.apk on device ‘30344C3XXXXX’: timeout

Este error me ha surgido al conectar mi dispositivo a la computadora y correr la app en dicho dispositivo. Por tal motivo, me puse a investigar la forma de resolverlo y encontré la siguiente solución.

Lo que deberemos hacer es cambiar el valor de Timeout de 5000 a 10000:

En Linux y Windows

Window -> Preferences -> Android -> DDMS -> ADB connection timeout (ms)

En Mac OS X

Eclipse -> Preferences -> Android -> DDMS -> ADB connection timeout (ms)

Con esto pude ejecutar la app en mi dispositivo conectado a la computadora.