Después de 5 años de desarrollo de Android, ¡los días más difíciles de mi vida son los días de comer y morir!

origen

Recientemente vi una publicación de este tipo en el foro:

Coordenadas de Shenzhen.
La empresa se disolvió a principios de abril. (Ahora piénselo como si fuera una disolución falsa y un despido real). En el
último mes y medio, he estado presionando a mis amigos para que Lagou y Boss contraten directamente, y luego para cazar y Zhaopin.
Desde la entrega precisa al principio hasta el Haitou posterior, cientos de empresas se han entregado juntas.
Me reuní con unas 10 empresas, recibí 2 ofertas y las rechacé todas.
Una es una empresa de nueva creación de 10 personas sin recursos en absoluto. Para hablar de salario, hay que solicitarlo a los inversores. .
El otro es la transición de las industrias tradicionales a Internet, y el salario está establecido, pero la cultura corporativa no lo soporta. Ir a trabajar a las 8:30 de la mañana, hacer gimnasia por radio y hacerse un chequeo de dos y medio para la hepatitis B. No hay cinco seguros y un fondo de vivienda durante el período de prueba. Después de luchar durante 2 días, todavía me negué.
Siento que mis habilidades personales son bastante buenas, me gradué de mi segunda carrera y trabajé 5 años, puedo obtener 18k en el puesto de operación.
Es realmente difícil encontrar trabajo para el desarrollo de Android este año.

Análisis de la situación

Cuando el respiradero haya pasado, todos los cerdos que se caigan caerán. En el pasado, el jefe le daba un salario alto solo debido a la brecha de talento, que estaba determinada por la relación entre la oferta y la demanda.

Pero como cada vez hay más personas que trabajan en Android, ¿cuál es su principal competitividad en ese momento?

¿O algún día Android está completamente frío? Como recién llegado que lleva menos de un año trabajando, no es la etapa de cosecha, lo que necesita es allanar el camino para su desarrollo futuro a través de la acumulación de tecnología, visión y contactos.

El arrendador obviamente está atrapado en un cuello de botella técnico, por lo que es un problema salir a buscar un trabajo que sea satisfactorio en todos los aspectos Mi líder ahora contesta el teléfono casi todos los días y le pide que salga como socio. No tiene muchas opciones ahora, por supuesto, porque sus habilidades no son lo suficientemente fuertes. Como plan de carrera personal, tendrá que tomar al menos de 3 a 5 años. No le resultará difícil encontrar un trabajo adecuado.

Durante este período de tiempo he estado ayudando al departamento a reclutar personas, y también he colgado JDs para la contratación directa del gancho y el jefe. Se estima que se han recibido cientos de currículums en más de un mes. . No he iniciado más de 5 entrevistas. Lo entregué con un cuero cabelludo y estaba cepillado. En contraste, el nivel general de mis amigos que me buscaban en Zhihu era más alto.

Pero aquí está el problema. Ahora las grandes empresas que conozco están contratando para el desarrollo de Android, y muchos departamentos todavía están muy ansiosos, pero simplemente no pueden contratar a las personas adecuadas. No me digas que hay mucha gente que usa Android ahora, la calidad es la clave, la cantidad no tiene sentido. Hay tantas personas en el grupo cada año. Un buen currículum no es solo entre empresas, sino también entre departamentos e incluso dentro de los departamentos. Sin embargo, aparte de este grupo de personas, los currículums de la mayoría de las personas pueden ocupar su tiempo. tardará más de 5 segundos.

Ya mencioné este problema antes. En esta etapa, la brecha tecnológica entre las empresas ya es muy obvia. Los desarrolladores están en ella, y debido a su propia capacidad de aprendizaje, entorno, proyecto, etc., la brecha tecnológica se hace más amplia. es decir, se produce la división de dos niveles después de unos años de trabajo, y esta brecha no se puede compensar con los propios esfuerzos. Hace algún tiempo, entrevisté a un compañero de clase que trabajaba como App en una determinada línea de fabricantes de teléfonos móviles. Nació en 985 y trabajó durante 3 años. Actualmente es la columna vertebral de la empresa. Me habló de sus muchas UI trabajos de optimización y refactorización. Su equipo de la aplicación es de aproximadamente 4 o 5 personas. Se puede ver que ha trabajado duro para hacer lo mejor dentro de su capacidad. Desafortunadamente, limitado por el tamaño del equipo, el soporte y las reservas técnicas, su techo llegó demasiado rápido. No es lo suficientemente profundo, y sus capacidades técnicas no son lo suficientemente completas.

En esta situación, ¿qué podemos hacer como desarrolladores? Lo más básico es salir de tu zona de confort y seguir perfeccionando tus habilidades. Tome mi propio ejemplo. Cuando me uní a la empresa, principalmente hice UI. Por lo general, hago algunas optimizaciones en la página y resuelvo algunos errores pequeños y ANR. Hice un buen trabajo; porque hice un buen trabajo antes y porque del cambio de dirección. Después de más de medio año, cambié a la descarga de video y luego comencé a reproducir video nuevamente. En más de un año y medio, volteé el reproductor espacial y el descargador con mi instructor y volví a hacer Hasta ahora, los indicadores son muy buenos. Fue doloroso al comienzo del cambio. Hay ciertos umbrales para entrar en el campo de audio y video. La presión del proyecto es muy alta y nunca antes me había puesto en contacto con él. Durante ese tiempo, no sé cuántas veces en medio de la noche y en días festivos en el distrito sur en el piso 15. Solo dos personas, mi mentor y yo, estábamos trabajando horas extras en la empresa. Pero pensándolo bien ahora, de hecho, es el período de crecimiento más rápido. Casi he terminado en esta área, y comencé a codificar y decodificar nuevamente este año, y continúo profundizando en el área de audio y video. Así que eso es todo. Si la tecnología no funciona, profundice en ella. Si siente que el entorno está encadenado, cambiará de trabajo lo antes posible para mantener su competitividad suficiente. Quizás un cambio de trabajo no haya podido cambiar nada, pero este es un proceso de cambio cuantitativo y cambio cualitativo, y un currículum en constante mejora también puede tocar las puertas de muchas empresas por ti.

He trabajado en empresas de Internet de primera línea durante casi diez años y he entrenado a muchos compañeros. Ayude a mucha gente a aprender y crecer.

Me doy cuenta de que hay mucha experiencia y conocimiento que vale la pena compartir con todos, y también podemos usar nuestras habilidades y experiencia para responder a muchas de sus confusiones en el aprendizaje de TI, por lo que todavía insisto en organizar y compartir todo tipo de cosas cuando estoy ocupado. Sin embargo, debido a los canales de difusión de conocimiento limitados, muchos amigos programadores no pueden obtener la información correcta para aprender y mejorar. Por lo tanto, rutas de aprendizaje importantes como la optimización del rendimiento de Android, el desarrollo de audio y video, la tecnología NDK, la corrección de complementos en componentes y Se utilizará un análisis de código fuente común.

Espero poder usar mi poder para ayudar a más amigos confundidos y confundidos, y ayudar a todos a aprender y desarrollarse en el camino del desarrollo de Android ~

Desarrollo de la capa de aplicación

En el desarrollo nativo de Android, las principales cosas en las que hay que centrarse siguen siendo varias optimizaciones de rendimiento, velocidad de inicio, consumo de energía, fluidez, optimización de red y combate real en grandes fábricas. Estas son las cualidades básicas de un excelente desarrollo de Android.

  • Velocidad de inicio
  • Fluidez
  • La práctica de optimización de recursos de tamaño de paquete APK de Douyin
  • Análisis completo de la tecnología de diseño receptivo de Youku
  • Optimización de la red
  • Revelando el secreto del proyecto de optimización del rendimiento en Taobao Double Eleven
  • Análisis de la dependencia del código fuente del enlace completo de la APLICACIÓN AutoNavi
  • Compartir la experiencia de combate real para matar completamente a OOM
  • Práctica de optimización de memoria de terminal Android WeChat

Los recursos anteriores son gratuitos para compartir con todos, y el contenido se coloca en el proyecto de código abierto: [Github] , todos pueden obtenerlo por sí mismos.

Desarrollo de audio y video

Afortunadamente, vivimos en una buena era y la tecnología se ha desarrollado rápidamente en las últimas décadas. En el momento en que la epidemia está en auge, podemos trabajar de forma remota a través de conferencias de audio y video, también tenemos un sistema de educación en línea. Para la mayoría de los estudiantes, pueden estudiar en línea en casa.

Desde cierta perspectiva, aunque la epidemia ha provocado que muchas industrias estén al borde del colapso, también ha generado nuevos desarrollos industriales. Entre ellos, las conferencias de audio y video y la educación en línea son industrias que han surgido debido a la epidemia. Cuando la epidemia es difícil de acabar en un corto período de tiempo, la importancia de las conferencias de audio y video y la educación en línea se refleja de inmediato. Los nuevos métodos de comunicación y educación son reconocidos y aceptados por más y más personas.

Incluso podemos determinar que la industria de la educación en línea y la industria de las conferencias de audio y video aumentarán este año y se desarrollarán rápidamente en los próximos diez años.

Cómo aprender a desarrollar audio y video

1. Introducción elemental:

Hacer un dibujo

1. ImageView hace dibujos

2. SurfaceView hace dibujos

3. Personaliza la vista para hacer dibujos

En segundo lugar, explicación detallada de AudioRecord API

Tres, use AudioRecord para lograr la grabación y generar wav

  • Crear un objeto AudioRecord
  • Inicializar un búfer
  • iniciar la grabación
  • Cree un flujo de datos Mientras lee los datos de sonido de AudioRecord al búfer inicializado, importe los datos del búfer al flujo de datos.
  • Cerrar flujo de datos
  • Para de grabar

Cuarto, use AudioTrack para reproducir audio PCM

1. Uso básico de AudioTrack

  • Modo MODE_STATIC
  • Modo MODE_STREAM

2.AudioTrack detallada

  • Tipo de flujo de audio
  • El concepto de asignación de búfer y marco
  • Proceso de construcción de AudioTrack

3. Comparación de AudioTrack y MediaPlayer

  • la diferencia
  • contacto
  • SoundPool

5. Utilice la API de la cámara para recopilar datos de video

1. Vista previa de los datos de la cámara

2. Obtenga la devolución de llamada de datos de NV21

6. Utilice MediaExtractor y MediaMuxer API para analizar y encapsular archivos mp4

1. Introducción a la API de MediaExtractor

2. Introducción a la API de MediaMuxer

3. Usa el contexto

7. API de MediaCodec detallada

1. Introducción a MediaCodec

2.Descripción de la API de MediaCodec

Control de flujo 3.MediaCodec

  • Conceptos básicos de control de flujo
  • Control de flujo codificado de Android
  • Selección de la estrategia de control de flujo de Android

Debido a la extensión limitada del artículo, el contenido restante es demasiado y las ilustraciones del artículo son limitadas, lo siguiente solo se puede mostrar en el directorio de capturas de pantalla:

2. Artículos de nivel intermedio avanzado:
  • Desarrollo de Android OpenGL ES (1): Introducción a OpenGL ES
  • Desarrollo de Android OpenGL ES (dos): construcción del entorno OpenGL ES
  • Desarrollo de Android OpenGL ES (3): OpenGL ES define la forma
  • Desarrollo de Android OpenGL ES (4): formas de dibujo de OpenGL ES
  • Desarrollo de Android OpenGL ES (5): OpenGL ES usa proyección y vista de cámara
  • Desarrollo de Android OpenGL ES (6): OpenGL ES agrega efectos de movimiento
  • Desarrollo de Android OpenGL ES (7): OpenGL ES responde a eventos táctiles
  • Desarrollo de Android OpenGL ES (8): lenguaje de sombreado de OpenGL ES GLSL
  • Desarrollo de Android OpenGL ES (9): mapeo de texturas OpenGL ES
  • Desarrollo de Android OpenGL ES (diez): interactuar con sombreadores a través de GLES20
  • Use OpenGL para mostrar una imagen
  • GLSurfaceviw dibuja la pantalla de vista previa de la cámara y se da cuenta de la toma de fotografías
  • Use OpenGL ES para completar la grabación de video y realizar el efecto de marca de agua de video

Artículos de investigación avanzada:
  • El estudio en profundidad de la codificación de audio y video, como H.264, AAC, estudia el uso de bibliotecas de códecs de código abierto, como x.264, JM, etc.
  • Estudio en profundidad de protocolos de red relacionados con audio y video, como rtmp, hls y formatos de paquetes, como flv, mp4
  • Estudio en profundidad de algunos proyectos de código abierto en el campo del audio y video, como webrtc, ffmpeg, ijkplayer, librtmp, etc.
  • Transfiera la biblioteca ffmpeg a la plataforma Android y combine la experiencia acumulada anteriormente para escribir un reproductor de audio y video simple
  • Transfiera la biblioteca x264 a la plataforma Android y combine la experiencia acumulada anteriormente para completar la función de edición suave H264 de datos de video
  • Transfiera la biblioteca librtmp a la plataforma Android y combine la experiencia acumulada anteriormente para completar la función de transmisión de Android RTMP

Tecnología de códec de audio y video

  • Tecnología de códec de audio y video (1): estándar de códec MPEG-4 / H.264 AVC
  • Tecnología de codificación y decodificación de audio y video (dos): tecnología de codificación de audio AAC

Protocolo de transmisión

  • Protocolo de transmisión de medios (1): protocolo HLS
  • Protocolo de transmisión de medios (dos): protocolo RTMP

Formato de archivo multimedia

  • Formato de archivo multimedia (1): formato MP4
  • Formato de archivo multimedia (dos): formato FLV
  • Formato de archivo multimedia (3): formato M3U8
  • Formato de archivo multimedia (4): formato TS
  • Formato de archivo multimedia (5): formato PCM / WAV Los
    recursos anteriores son gratuitos para compartir con usted y el contenido se coloca en el proyecto de código abierto: [Github] , puede obtenerlo usted mismo .

Desarrollo de complementos, componentes y reparación en caliente

Como rama importante de la tecnología de cliente de Android, la creación de componentes ha sido la dirección de la exploración activa y la práctica en la industria en los últimos años. Los diversos equipos de desarrollo de Android en cada fábrica importante también están probando y practicando diferentes soluciones en componentes, y hay muchos resultados de alta calidad en el marco de comunicación en componentes.

Cómo lograr la componentización

Las cuestiones que deben tenerse en cuenta para lograr la componenteización incluyen principalmente las siguientes:

  • Desacoplamiento de código. Desmontar y desacoplar un gran proyecto es un trabajo que requiere mucho tiempo y mano de obra, pero también es el paso más básico e importante.
  • Transferencia de datos. Cada componente puede proporcionarse a otros componentes para su uso, el proyecto principal y el componente, la transferencia de datos entre el componente y el
    salto de interfaz de usuario del componente .
  • El ciclo de vida del componente. El ciclo de vida de la carga, descarga y reducción de dimensionalidad de los componentes.
  • Depuración integrada. ¿Cómo compilar componentes bajo demanda durante la fase de desarrollo? Es posible que solo haya uno o dos componentes involucrados en la integración durante una depuración, por lo que el tiempo de compilación se reducirá considerablemente y se mejorará la eficiencia del desarrollo.
  • Aislamiento de código. Cómo prevenir la aparición de acoplamientos.

El siguiente es el manual práctico de mejora de componentes de Android avanzado más completo en toda la red, que cubre toda la empresa de Internet. Debido a limitaciones de espacio, no se mostrará todo el contenido. Solo se pueden mostrar capturas de pantalla. El contenido completo se ha organizado en un PDF documento.

Hoy en día, el uso de tecnología de complementos es muy común, como WeChat, QQ, Taobao, Tmall, Space, Ctrip, Dianping, Mobile Manager, etc. Estas aplicaciones con las que todos no están familiarizados están todas en uso.

La tecnología de complemento puede aportar enormes beneficios al desarrollo de proyectos, como: desarrollo paralelo y eficiente, desacoplamiento de módulos, elevación del límite de una única función dex que no puede exceder 65535, actualización dinámica y actualización, carga bajo demanda, etc.

Para dominar la tecnología de complementos, necesita los siguientes conceptos básicos de Android y conocimientos relacionados, por ejemplo:

  • Instalación de la aplicación de Android, proceso de carga

  • Mecanismo operativo de la aplicación Android, principio de llamada del ciclo de vida

  • Principios de la compilación y empaquetado de recursos de aplicaciones de Android

  • Principio de recurso de lectura de la aplicación Android

  • El principio operativo del sistema Android AMS, PMS, NMS y otros servicios del sistema

  • Actualización incremental

  • HOOK y otras tecnologías

A continuación, se resumirá la importancia de la tecnología de complementos y complementos de Android completos y completos para el desarrollo de Android, desde el principio del complemento básico hasta la exploración preliminar del complemento de Android y la aplicación real de la evolución de la arquitectura Dachang. Debido a las limitaciones de espacio, no se mostrará todo el contenido, solo se pueden mostrar capturas de pantalla para mostrar parte, y el contenido completo se ha organizado en un documento PDF.

Los recursos anteriores son gratuitos para compartir con todos, y el contenido se coloca en el proyecto de código abierto: [Github] , todos pueden obtenerlo por sí mismos.

Los miniprogramas son productos derivados del portal de tráfico de miles de millones de WeChat, y KuaiApp y KuaiApp son un nuevo ecosistema de aplicaciones lanzado conjuntamente por los nueve principales fabricantes de teléfonos móviles basados ​​en la plataforma de hardware. Los usuarios no necesitan descargar e instalar, hacer clic para usar, disfrutar de la experiencia de rendimiento de la aplicación nativa, pero personalmente sienten que él ya es genial, el pequeño programa es bastante prometedor, Tencent es una gran montaña, WeChat es un pabellón, es Es difícil para ti sentirte bien o no, pero depende de si solo lo necesitas. Por ejemplo, si tu empresa tiene una necesidad, entonces puedes aprender.

Nuevas tecnologías recomendadas para el aprendizaje, Flutter y Kotlin, ambas recomendadas por Google.

Aleteo

Flutter es un nuevo marco de interfaz de usuario móvil lanzado por Google en la Conferencia Mundial Móvil 2018 el 27 de febrero de 2018 para ayudar a los desarrolladores a desarrollar aplicaciones nativas de alta calidad en plataformas iOS y Android.

Desde que fue lanzado por Google, en términos de prospectos, es digno de reconocimiento.

Kotlin

Kotlin es el lenguaje de desarrollo oficial recomendado por Google. Es interoperable con Java, intercambiable, conciso y seguro, etc. Es un lenguaje de programación tipado estáticamente que se ejecuta en la máquina virtual Java. Se llama Swift del mundo Android. está diseñado y desarrollado por JetBrains. De código abierto,

Kotlin se puede compilar en código de bytes Java o JavaScript, que es conveniente para ejecutar en dispositivos sin JVM.

Por fin

Si su nivel está cerca de alcanzar el nivel avanzado, y está seguro de que puede alcanzar el nivel avanzado rápidamente, siga el nivel avanzado de puntos de habilidad y los requisitos avanzados del mercado para un empleo flexible, y paso a paso para alcanzar este nivel. Si su nivel aún es el nivel de entrada elemental, o su interés no es muy alto y desea cambiar temprano, puede hacerlo rápidamente, porque es demasiado importante para trabajar en la dirección correcta. También se recomienda no extenderse demasiado Aquí te recomiendo ir al frente grande o La dirección del producto cambia, por supuesto, si tienes interés en esta área.

Por supuesto, todo lo anterior tiene que ver con los requisitos de empleo flexible en la dirección técnica. Por supuesto, también puede desarrollarse en la dirección de la gestión técnica y los productos después de haber acumulado un cierto nivel de tecnología y tecnología. Por supuesto, también puede Elige emprender un negocio si eres lo suficientemente bueno La idea y la preparación psicológica.

Por supuesto, la mayoría de las personas se quedan en el nivel intermedio o avanzado y luego se quedan estancadas. Además, diversos entornos externos han provocado diversas ansiedades, por lo que es muy contradictorio. En este momento, tu mejor estado es desarrollar rápidamente al nivel avanzado. Por supuesto, aquí está lo más difícil, este obstáculo también es más difícil de superar. Debido a que el sistema de conocimiento de Android es relativamente grande y complejo, involucra todos los aspectos del conocimiento de la computadora.

Este artículo se ha incluido en el proyecto de código abierto: https://github.com/Android-Alvin/Android-LearningNotes , que contiene rutas de programación de autoaprendizaje en diferentes direcciones, colección de preguntas de entrevistas / sutras faciales y una serie de artículos, etc. Los recursos se actualizan continuamente ...

¡Las personas que ven buenos artículos en CSDN y les gustan son de mente más abierta que la gente común!

¡Tu apoyo! ¡Mi motivación!

Supongo que te gusta

Origin blog.csdn.net/weixin_43901866/article/details/113629354
Recomendado
Clasificación