[Resumen de las 39 soluciones de errores y excepciones más comunes en el desarrollo de Android]

  1. appcompat_v7

Después de actualizar ADT a la versión 22.6.0, apareció esta biblioteca appcompat_v7 es un paquete de compatibilidad del propio Google, que es una biblioteca de soporte que
permite que todas las versiones anteriores a la 2.1 usen la interfaz de la versión 4.0. Por ejemplo, al usar ActionBar, no es necesario usar bibliotecas de soporte de terceros

  1. appcompat_v7: paquete de compatibilidad de aplicaciones, V7 se refiere a la versión 7, es decir, android2.1, este paquete de compatibilidad es compatible con sistemas superiores a la versión 2.1.

  2. Recientemente, Google eliminó oficialmente el paquete jar compatible y algunos archivos de recursos para crear un proyecto de Android, que en realidad es una biblioteca de recursos. Haga clic con el botón derecho en este proyecto para ingresar a buildpath, haga clic en Android y encontrará que islibrary está marcado, lo que indica que es una biblioteca. De hecho, esta biblioteca puede ser compartida por varios proyectos. La biblioteca ya contiene el paquete v7.jar y algunos recursos adaptativos. Al desarrollar varios proyectos, puede poner código y recursos compartidos en la biblioteca para mayor comodidad. La versión inferior de ADT no genera automáticamente una biblioteca al crear un proyecto, pero cuando sea necesario, puede crear un nuevo proyecto y consultar islibrary. La versión superior de ADT genera automáticamente la biblioteca. Si no la necesita, simplemente haga clic con el botón derecho en el proyecto recién creado en Propiedades-android-biblioteca para seleccionar la biblioteca y haga clic en Eliminar para eliminarla.
    3. Cuando se empaqueta o ejecuta la aplicación, la biblioteca se empaquetará y compilará automáticamente como parte del proyecto.

  3. Después de actualizar las versiones ADT y SDK, cree un proyecto y encuentre que todas las configuraciones son correctas, y la máquina virtual se inicia normalmente, es decir, hay un signo de exclamación en el encabezado del proyecto, puede verificar en el archivo MainActivity para ver si el La actividad heredada es No, debe introducir algunos paquetes para ejecutar correctamente el programa, se recomienda cambiar a Actividad

    Habrá muchos problemas de compatibilidad cuando se mejore la versión, la mejor manera de solucionarlo es reducir la versión.

[Entonces, al crear un proyecto de Android, si el proyecto mínimo compatible es muy bajo, puede ocurrir una excepción, por lo que se recomienda que la versión mínima sea 4.0 o superior tanto como sea posible]

[Al crear un nuevo proyecto de Android, si se selecciona la versión mínima inferior a 4.0, habrá un proyecto appcompat_v7 adicional, pero este proyecto informará un error y también es propenso a otros errores y excepciones, etc.]

  1. Cuando la computadora contiene varios entornos de desarrollo de Android, habrá varios DDMS y es posible que se produzca una excepción de ocupación del puerto durante el inicio. La solucion es:

    Al ejecutar el proyecto, Eclipse muestra un cuadro de aviso "No se pudo abrir el puerto de depuración de la VM seleccionada (8700). Asegúrese de no tener otra instancia de DDMS
    o del complemento de Eclipse ejecutándose. Si lo está utilizando otra persona, elija un nuevo número de puerto en las preferencias".

     	在终端输入:netstat -ano | findstr "8700"
    
     		未找到占用端口。
    

Solución:

En eclipse, abra Ventana -> Preferencias -> Android -> DDMS a su vez: como se muestra a continuación

Cambie el puerto del depurador local base 8600 a 8601 y marque Usar ADBHOST.

  1. Problema de icono, hdpi-72px 72px, mdpi-48px 48px, xhdpi-96px 96px, xxdip-144px 144px

  2. interruptor de Android (Cadena) 错误: No se puede activar un valor de tipo Cadena para el nivel de fuente por debajo de 1.7

La condición de juicio de la instrucción switch puede aceptar int, byte, char, short y no puede aceptar otros tipos.
Solo la versión JDK 1.7 o superior puede admitir String

El problema se puede resolver configurando de la siguiente manera: (si no hay una versión JDK1.7, puede descargarla e instalarla)
Opción de menú: "proyecto->propiedades->compilador java->nivel de cumplimiento del compilador: elija 1.7

  1. Al depurar un programa de Android: se produjo un problema de aviso Se produjo un error interno durante el lanzamiento de New_configuration

Solución:
Paso 1: ingrese a la ventana Configuración de ejecución/depuración, hay dos métodos de implementación: 1. Proyecto -> Propiedades -> Configuración de ejecución/depuración:

La ventana Configuración de ejecución/depuración es la siguiente:

Paso 2: después de seleccionar New_configuration en la figura anterior, haga clic en Eliminar para eliminarlo.

Paso 3: limpia el proyecto nuevamente y estará bien.

Haga clic en Aceptar para tener éxito.

  1. Después de conectar el teléfono a la computadora y activar la depuración USB, se informa un error que indica que la instalación de la interfaz ADB falló o que la instalación del controlador de Android falló.
  • 【ganar7】

    [El proceso de instalación del sistema Win7 indica "el sistema no puede encontrar el archivo especificado" (13.01.23 caso nuevo)]

    Los usuarios del sistema Win7 se han encontrado algunas veces al instalar el controlador adb que "el sistema no puede encontrar el archivo especificado". La razón real es que el sistema necesita instalar el controlador winusb que viene con el sistema al instalar el controlador adb, y el winusb.sys requerido por winusb El archivo se copia confiando en el campo "windows cd" del archivo inf. A veces, el sistema no sabrá la ubicación de "windows cd", lo que provocará la falta del archivo winusb.sys durante el proceso de instalación y la instalación se detendrá.

    1. Solución:
      busque la ruta de origen del directorio winusb "c:\windows\system32\DriverStore\FileRepository\winusb.inf_x86_neutral_6cb50ae9f480775b\", copie el archivo Winusb.sys en el directorio "c:\windows\inf" y luego otra vez Hay no hay problema con la instalación.

    2. 【Solución 2】: Instale el controlador ADB con un software como Driver Wizard. [Y al instalar el controlador, debe configurar la opción usb para cargar solo.

       						(例如:)类型:安卓
       								名称:USB Composite Device
       								制造商:Android
       								设备描述:USB Composite Device  【Android usb 混合驱动】
      
       		 或者 直接 下载安装 对应手机型号的 adb 驱动。
      
       	【Window-->ShowView--->Device --> 就可以查看当前可用的设备了】--[尝试打开或关闭 usb选项媒体设备,可以刷新 Device]
      
       	【然后选择runConfiguration-->Always prompt to pick device(每次运行总是提示选择设备)】
      
  • [xp]
    [El controlador ADB no se puede instalar, hay varias razones diferentes y las soluciones también son diferentes. Dado que la mayoría de los problemas encontrados son los sistemas Windows XP, todos los Windows XP se utilizan aquí como ejemplo.

    1. La misma versión de WDF ya existe en el sistema, lo que hace que el controlador ADB no se instale

    Este tipo de situación es la más común.Cuando la computadora ya tiene la misma versión de WDF, pero faltan elementos de desinstalación relacionados, se producirá este problema.El rendimiento es que la computadora indica un error fatal en la instalación.

Solución:
  a. Agregue un elemento de desinstalación de la versión relevante, tome la versión wdf1005 como ejemplo, importe el elemento de desinstalación del registro. Luego reinstale el controlador ADB.

	  b. 升级到一个更高版本的ADB驱动也能够解决这个问题。

2. El sistema carece del servicio de servicios criptográficos, lo que hace que el controlador ADB no se instale

En una pequeña cantidad de sistemas XP, la instalación final del controlador falla debido a la ausencia del servicio de servicios criptográficos, ya que la instalación del controlador wdf depende de los servicios criptográficos.

Solución:
   Importe el valor de la clave de registro del servicio, luego reinicie la computadora y luego instale el controlador ADB.

3. Hay un conflicto con la U-KEY de la banca en línea del Banco Agrícola de China, lo que conduce a la falla de la instalación del controlador ADB

Cuando se instala el controlador ADB de Android, habrá conflictos con la U-KEY de algunos bancos en línea, lo que hará que el controlador de la interfaz adb no se instale y se mostrará el error 10.

Solución:
    solo puede desinstalar archivos y servicios relacionados con la banca en línea primero y luego reinstalar el controlador ADB.

4. La anomalía del controlador ADB causada por una fuente de alimentación insuficiente hace que sea imposible instalar el controlador ADB

Algunas computadoras de escritorio muestran un signo de exclamación amarillo en la interfaz adb debido a una fuente de alimentación insuficiente desde el puerto USB frontal.

Solución:
   conecte el cable de datos del teléfono móvil a la interfaz USB trasera de la caja principal, mantenga la energía suficiente y estable y vuelva a instalar el controlador ADB.

  1. estFeature() debe llamarse antes de agregar contenido

Provocado por: Android.util.AndroidRuntimeException: se debe llamar a requestFeature() antes de agregar contenido
Llame a android.hardware.Camera en Android para completar la función de la cámara, pero encontró una excepción de este tipo.

setContentView(R.layout.main);
requestWindowFeature(Window.FEATURE_NO_TITLE);

La solución es la siguiente: cambiar el orden

requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.main);

--------------------【Por lo tanto: this.requestWindowFeature(); el método debe escribirse delante de this.setContentView(); method】------ - --------------

Pregunta 2:
se debe llamar a Resolver requestFeature () antes de agregar el error de contenido

Android 实现画面全屏(取消标题、取消状态栏):

  //取消标题
  this.requestWindowFeature(Window.FEATURE_NO_TITLE);
  
  this.setContentView(R.layout.logo); //Activity样式文件,一定要写在中间

  //取消状态栏
  this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:background="@color/white"
    >

    <ImageView 
    android:id="@+id/logo" 
    android:src="@drawable/logo_bg"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    
    />
    
</LinearLayout>

java.lang.RuntimeException:Unable to start activity ComponentInfo
_
这是因为:

java的执行顺序有关!目前遇到的这个问题就是因为在系统运行开始的时候就已经调用父类的构造方法,接着调用setContentView方法展示视图界面。R.layout.main是R.java资源类中的一个属性。当你在调用这个方法之后在声明Widget就会报:android.util.AndroidRuntimeException: requestFeature() must be called before adding content

所以前面的那三句中加载Activity的样式的那句代码一定要写在中间。

9. Las causas y soluciones centralizadas de java.lang.RuntimeException: no se puede iniciar la actividad ComponentInfo{xxx}: errores de java.lang.NullPointerException en el desarrollo de Android

Cadena de mensaje de error: java.lang.RuntimeException: No se puede iniciar la actividad ComponentInfo{com.first/com.first.Game}: java.lang.NullPointerException

Generalmente, este error ocurre en setContentView(XXX) en el método Activity onCreate() Hay muchas razones posibles en Internet, y probablemente hay cuatro razones posibles importantes:

Motivo 1: el error de xxx, si es R.layout.main, entonces debería ser el uso incorrecto de las etiquetas en el archivo main.xml.El error más común que el compilador no mostrará es la confusión entre android:name y android: id Verifique cuidadosamente si las etiquetas de main.xml son correctas

Motivo 2: el método requestWindowFeature() se usa después del método setContentView(view), y el siguiente error indicará que se debe usar requestFeature antes de setContentView, solo coloque el método requestWindowFeature() antes del método setContentView(view) para resolver el problema

Razón 3: Fuera del método onCreate(), y no pertenece a ningún cuerpo de método, se produce al dar directamente un control findById(R.id.xx). Es necesario realizar findById(R. .id.xx ) puede ser resuelto

Razón 4: La vista no se instancia antes de setContentView(view), pero directamente setContentView(view) es causado por la declaración. Verifique cuidadosamente si la vista se instancia en el método antes de llamar a setContentView(view).

Motivo 5: debido a una excepción de error de puntero nulo, debe verificar si hay un valor en algo como Spinner o list

  1. Resolución de error: java.lang.SecurityException: Denegación de permiso [permiso denegado]

[Este error a veces ocurre cuando otra aplicación llama a la Actividad de su programa]:

java.lang.SecurityException: Denegación de permiso: intento inicial { cmp=com.siveco.bluebee.phone.supervisor/com.siveco.bluebee.core.activity.GetServerAddressActivity } de ProcessRecord{4456781 1644:com.siveco.bluebee.project. productionfeedback/10056} (pid=1774, uid=10056) no exportado desde uid 1044

Este error se origina en el siguiente código.

if (APPTools.checkAPP(this.getApplicationContext(), BBA_PACKAGENAME)) { Intención intención = nueva Intención(); intent.setClassName(BBA_PACKAGENAME, “com.siveco.bluebee.core.activity.GetServerAddressActivity”); startActivityForResult(intención, SOLICITUD_CÓDIGO);


}

Solución: Puede configurar el atributo exported="true" en la Actividad


  1. Información de excepción: debe reinsertar adb
    Solución: DDMS–>haga clic en el pequeño triángulo invertido en la ventana Dispositivo y seleccione Restablecer adb

  2. El método onClick(View) de tipo new View.OnClickListener(){} debe anular una superclase

    mButton1.setOnClickListener(new Button.OnClickListener()
    { @Override public void onClick(View v) { // TODO Método generado automáticamente stub mTextView1.setText(“¡¡Hola a todos!!”); } });






El código anterior informa un error de la siguiente manera

  • implementa android.view.View.OnClickListener.onClick
  • El método onClick(View) de tipo new View.OnClickListener(){} debe anular una superclase

Después de buscar, se encuentra que es un problema de versión jdk.Propiedades del proyecto---->el nivel de cumplimiento del compilador en javaCompiler se puede cambiar de 1.5 a 1.6

Porque [solo puede escribir así cuando jdk1.6, de lo contrario no puede escribir @Override, porque @Override no es compatible cuando se implementa el método en la interfaz a continuación 1.6]

  1. Al usar la base de datos SQLite: android.database.sqlite.SQLiteException: no se puede degradar la base de datos de la versión 2 a la 1

    Solución: Esta base de datos ya existe y la versión es 2. Utiliza la versión 1 para operar, por lo que algo sale mal.

          你要是没改数据库就用2,改了就增加1,写成3.
    
  2. Al ejecutar el programa ----【Actividad no iniciada, su tarea actual se ha traído al frente】

运行错误:【Actividad no iniciada, su tarea actual ha sido traída al frente】。

Análisis de la razón: porque todavía hay cosas ejecutándose en su simulador, es decir, una de las actividades que desea ejecutar ya se está ejecutando en el simulador. No crea que no se está ejecutando nada después de que el emulador sale al escritorio. Es posible que el programa que se cerró de manera anormal durante la depuración tenga actividad en ejecución.

Explicación: esto no es un error de la plataforma Android, pero Android en sí mismo es un mecanismo de procesamiento de este tipo.

En la plataforma Android, cuando finalizamos un proceso mediante el botón de retorno o la operación de salida del propio programa, de hecho, es posible que la máquina virtual Android no finalice el proceso.

En el caso de que la memoria lo permita, este programa se almacenará en la máquina virtual de Android en forma de caché. Solo en caso de memoria insuficiente, el sistema Android limpiará las tareas que no se han activado durante mucho tiempo,

Proporcionar memoria para otros programas.

Android hace esto para que inicie este programa más rápido la próxima vez.

Por lo tanto, la situación del propietario ocurre porque su programa no ha cambiado de ninguna manera y la memoria es suficiente, el programa ejecutado la última vez se colocará directamente en la parte superior de la pila de tareas desde el estado almacenado en caché y su programa se ejecutará nuevamente. Puede continuar ejecutando.

解决方法一: 退出目前执行的程序。。

解决方案二: project--->clean , 让程序重新编译一下就行
  1. Al usar comandos como adb, ddms, sqlite, etc. en la línea de comando: save xxx no es un comando interno ni un archivo ejecutable.

Solución: hay un directorio de herramientas de la plataforma en el directorio de instalación del SDK y la ubicación está configurada en la variable del sistema de ruta.

  1. Escuchar mensajes de texto
要使自己写的android程序能够收到短信息来临的广播,则不管是在java程序中注册broadcastReceiver还是在manifest.xml中注册,在manifest.xml文件中必须添加一句代码:

Y el código está al mismo nivel que la aplicación, es decir, es una subetiqueta directa del manifiesto, si no se cambia la frase, aunque la recepción de la emisión esté registrada en el programa, el SMS no se recibirá.

[Y la declaración de registro de permiso debe escribirse antes de la etiqueta de la aplicación, no después, de lo contrario arrojará: Denegación de permiso: advertencia de intención de recepción { xxx}]

  1. Eclipse [Administrador de SDK] 'xcopy' no se reconoce como un comando interno o externo, programa operable.

Eclipse inicia SDK Manager e informa un error: [SDK Manager] 'xcopy' no es un comando interno o externo, ni es un programa ejecutable.
Como solución, agregue C:\WINDOWS\system32 a la variable de entorno de ruta; o copie C:\WINDOWS\system32\xcopy.exe a las herramientas en el directorio sdk de Android para que se ejecute normalmente.

  1. Error de desarrollo de Android: no se pudo ejecutar tools\android.bat (o: no se pudo ejecutar SDK Manager.exe) Solución:

La solucion es:

1. Busque la carpeta temporal en el directorio sdk, que se utiliza para almacenar datos temporalmente.

2. Busque tools_r24.1.2-windows.zip en la carpeta temporal u otro tools_r***-windows.zip (se recomienda elegir el último), descomprímalo para obtener una carpeta de herramientas

3. Copie todo el contenido de la carpeta de herramientas (con android.bat dentro) que acaba de descomprimir en su propia carpeta de herramientas, es decir, sdk/tools, y listo.


20. Si abre SDK Manager, encontrará que no hay una nueva versión de la API o que la pantalla está incompleta. Entonces puede considerar actualizar las herramientas SDK de Android: aún puede actualizarlo en SDKManager

  1. Si ingresa adb en la línea de comando de Windows, encontrará que ninguno es interno. . . . Tampoco lo es. . . :

    Solución:
    Por ejemplo: D:\Study_SoftWare\adt-bundle-windows-x86_64-20140702\sdk\platform-tools
    Simplemente agregue este directorio a la ruta de la variable de entorno

  2. Cuando se usa una clase interna local de Java o una clase interna anónima, si la clase llama a una variable local del método, la variable local debe estar decorada con la palabra clave final, de lo contrario, se producirá un error de compilación.

No se puede hacer referencia a una variable no final i dentro de una clase interna definida en un método diferente

解决方案:【在外部定义一个成员变量,用来存储局部变量的值,然后在匿名内部类中直接使用成员变量即可。】      
  1. Se informa una excepción al actualizar la interfaz del subproceso principal en el subproceso: android.view.ViewRoot$CalledFromWrongThreadException
    Solo el subproceso original que creó una jerarquía de vistas puede tocar sus vistas

Solución 1: use el mecanismo del controlador de Android para enviar información en el subproceso, luego reciba el mensaje en el subproceso principal de la interfaz de usuario y luego procéselo

Solución 2: use Activity.runOnUiThread(Runnable)
para crear el código para actualizar la interfaz de usuario en Runnable y luego pase el objeto Runnable a Activity.runOnUiThread(Runnable) cuando la interfaz de usuario necesite actualizarse. De esta forma, el objeto Runnable se puede llamar en el programa ui.

          FusionField.currentActivity.runOnUiThread(new Runnable()   
          {  
              public void run()  
              {  
                  Toast.makeText(FusionField.currentActivity, "Success",  
                          Toast.LENGTH_LONG).show();  
              }  
    
          });  
  1. [No se puede acceder a la red en el hilo principal: excepción android.os.NetworkOnMainThreadException]

    Solución 1: acceda a la red en un subproceso secundario. —Si es necesario actualizar la interfaz, se puede implementar en combinación con un controlador. Porque la interfaz principal no se puede actualizar en el hilo secundario]

    Solución 2: Usar mecanismo asíncrono
    ——————————————————————————————————————————— —— ———————————————————————————————————————————————————— ———————

  2. Problema de detección de colisión

在项目中使用并映入 java.awt.Rectangle类后,编译正常,但运行时抛出:

        java.lang.NoClassDefFoundError: java.awt.Rectangle


    原因:Android 底层不支持 java.awt 与,Swing,因此即使编译通过,但运行时会报错    


解决办法一:使用安卓自带的 Rect类,它直接提供了intersects方法,可以用于碰撞检测

解决办法二: 查看JDK的Rectangle源码,把构造方法与 intersects(MyRectangle r) 提取到我的 MyRectangle工具类中。
           --经检测正常可用
              
解决办法三:自己编写碰撞检测API   

———————————————————————————————————————————————————— ————————————————————————————————————————————————

  1. : En el método onCreate();, luego de obtener la referencia del objeto de control (findViewById), se encuentra un error al configurar el listener: Causado por: java.lang.NullPointerException

    解决方案:1.查看find控件之前,有没有为Activity设置 this.setContentView(); 如果没有设置则会抛出空指针异常.
    

———————————————————————————————————————————————————— ———————————————————————————————————————————————————— ————————————————

  1. Durante el desarrollo de Eclipse Android, si se encuentra que algunas clases no tienen código fuente (Ctrl + botón izquierdo del mouse), el código fuente no se puede ver:

    Solución: en la página de error: haga clic en adjuntar fuente. Luego seleccione la carpeta del código fuente:

    Ejemplo: D:\Study_SoftWare\adt-bundle-windows-x86_64-20140702\sdk\sources\android-19 ready

  2. Encontrado Bug1:-----【Usando el adaptador BaseAdapter, la colección Bean es normal, pero todos los elementos muestran los mismos datos cuando se muestran los datos】-----

[Solución]:
primero verifique si el objeto Bean se crea para cada dato en el método de obtención de datos para completar la colección Bean, en lugar de agregar repetidamente el objeto Bean anterior.
entonces en

            【getView方法中 设置子控件内容时用:beans.get(position); //来获取指定位置的Bean对象,然后设置子控件内容 】

                            且记:此处不能使用循环遍历的方式设置子控件内容

[En resumen]: 1. Primero asegúrese de que una parte de los datos corresponda a un objeto Bean (en lugar de agregar repetidamente el objeto Bean anterior)
2. Luego asegúrese de que el método beans.get(posición) debe usarse para obtener el Bean cuando establecer el contenido del objeto de subcontrol (en lugar de recorrer el contenedor de beans)

  1. Llame al actualizar los datos de ListView (AdapterView): adaptador.notificarDataSetChanged (); [error de actualización encontrado]

    Solución: el punto de lista pasado a AdapterView no se puede cambiar, debe apuntar a la misma memoria de principio a fin; de lo contrario, puede ocurrir una falla de actualización

  2. java.lang.RuntimeException: setOnItemClickListener no se puede usar con un control giratorio.

    Significa que spinner no es compatible con OnItemClickListener, porque su implementación se reescribe en AdapterView.

    [Puede ser reemplazado por setOnItemSelectedListener]

  3. Si la información de los datos consultados se muestra en la ventana de la línea de comando cmd, ¿hay caracteres ilegibles?

    En primer lugar, SQLiteDataBase de Android utiliza UTF-8 de forma predeterminada y, si el método de codificación utilizado en la ventana de la línea de comandos no es UTF-8, pueden aparecer caracteres distorsionados.

    Solución: Cambie el método de codificación de la ventana de la línea de comandos (página de códigos actual) para que sea consistente con el método de codificación de los datos en la base de datos.

            使用命令:chcp   936         -----修改成GBK
                             950         -----修改成繁体中文(Big5) 
                             932         -----修改成日文
                             437         -----修改成英文
                             65001       -----修改成UTF-8
    
  4. Encontrado al usar ContentProvider: java.lang.SecurityException: Denegación de permiso: proveedor de apertura

Solución: agregue android:exported="true" a la definición de ContentProvider en AndroidManifest.xml

  1. Encontrado al usar ContentProvider:
    java.lang.IllegalStateException: no se puede realizar esta operación porque el grupo de conexiones se ha cerrado.

    Solución: Verifique los métodos expuestos en ContentProvider, tales como: query(…); Antes de regresar a Cursor, ¿está cerrada la base de datos o el objeto de cursor?

        如果关闭了,则取消关闭即可。【因为要返回cursor对象给调用者使用,因此不能调用 db.close(),或cursor.close() 】             
    
  2. Mediaplayer Debería tener el controlador de subtítulos ya configurado Se produce una excepción cuando se usa MediaPlayer+SurfaceView para reproducir video, hay sonido pero no imagen.

Solución: 1: no use android4.4 kitkat para ejecutar este programa, después de probar android5.1 se ejecuta normalmente

  1. Después de usar el cliente SVN para asociar la carpeta del espacio de trabajo con el servidor SVN, se encuentra que la carpeta del espacio de trabajo no tiene una pequeña marca de verificación verde:

    Solución: [Ingrese al administrador de tareas para eliminar primero el proceso del explorador y luego inicie el proceso del explorador]

  2. ADB no se inicia y arroja un registro de error (y usar la función de reinicio adb es inútil):

    'El servidor ADB no ACK
    [2017-02-09 14:29:14 - adb] * no se pudo iniciar el demonio *
    [2017-02-09 14:29:14 - ddms] '...\sdk\platform-tools\ adb.exe, start-server' falló: ejecútelo manualmente si es necesario

    Solución: vaya directamente al administrador de tareas de la computadora, elimine todos los procesos adb y luego reinicie adb.

  3. Gradle "manifiesto requiere una sustitución de marcador de posición" error pero manifestPlaceholders proporciona un valor

Los detalles son los siguientes:

  AndroidManifest.xml:89:16 Error:
    Attribute uses-library#com.company.platform.${encoding}@name at AndroidManifest.xml:89:16 requires a placeholder substitution but no value for <encoding> is provided.
/Users/Company/Desktop/Checkout/android/Project/app/src/main/AndroidManifest.xml:0:0 Error:
    Validation failed, exiting

¡Este problema generalmente ocurre cuando agregamos datos de pareja al archivo AndroidManifest.xml y compilamos errores!

solución:

进入 app.gradle 

    然后在 app.gradle 文件中: 为 mate-data 注入值!
      productFlavors{
        productFlavors.all{
                  flavor->
                      Map<String,Object> map=new HashMap<String,Object>()
       
                      map.put("encoding",encoding)
          
                      flavor.manifestPlaceholders.putAll(map)
          }
        }

  You need to just add to the array. You are replacing it. Do this:

  manifestPlaceholders = [encoding: "some value", version: cityVersion]
  By declaring manifestPlaceholders twice for the same flavor/build type, your are replacing the previous one. After the previous one got replaced, your build failed because the property no longer exists.
  1. BaseApplication está empaquetado, pero en realidad devuelve un valor nulo al llamar a BaseApplication.getAppContext()
public class BaseApplication extends Application {
    
    

    private static Context mContext;

    @Override
    public void onCreate() {
    
    
        super.onCreate();
        mContext = this;
    }

    public static Context getAppContext() {
    
    
        return mContext;
    }

    @Override
    public void onTerminate() {
    
    
        super.onTerminate();
        mContext = null;
    }
}

Solución:
compruebe si android:name=".base.BaseApplication" está configurado en el nodo del archivo AndroidManifest.xml.

  1. Resuelva el error de marcador de posición de formato strings.xml: Múltiples sustituciones especificadas en formato no posicional

Ejemplo: Juego %s, Autor: %s

Después de verificar, se encuentra que %s en string.xml hace que la compilación falle, y %s debe cambiarse a la forma de %position$s.

Es decir, cambie a: juego %1 s, autor: s, autor: %2s , autor: s puede

Supongo que te gusta

Origin blog.csdn.net/UserFrank/article/details/129298070
Recomendado
Clasificación