1. Algunas palabras
2. Detalles
SDK de Android
Coloque su SDK de Android en su directorio de inicio u otros lugares que no estén relacionados con la aplicación. Algunos IDE asociarán el SDK al instalar y colocar el SDK en el mismo directorio del IDE. Cuando necesite actualizar (reinstalar) el IDE o reemplazar el IDE, encontrará algo malo. Además, si su IDE se ejecuta en una cuenta de usuario en lugar de root, no coloque el SDK en el directorio de nivel del sistema, de lo contrario se requiere un permiso de sudo al usarlo.
Sistema de construcción
La elección predeterminada es graduarse. Ant tiene muchas restricciones y es demasiado grande. Con Gradle, puedes hacerlo fácilmente:
- Compilar diferentes sabores o variantes de aplicación
-Create clases simples -script tareas
-Mango y descarga dependencias
-Las talleres de claves
-etc
Google también designa el complemento de Gradle para Android como el nuevo sistema de compilación estándar, y Google continúa actualizándolo.
Estructura de proyectos
Hay dos opciones populares: la antigua estructura del proyecto Ant & Eclipse ADT; La nueva estructura del proyecto Gradle & Android Studio. Debes elegir el último. Si su proyecto usa una estructura antigua, reemplácela.
Estructura antigua
Estructura vieja ├─ Activos ─ Libs├─ Res├─ Src│ └─ Com/Futurice/Project ├─ AndroidManifest.xml├─ Build.gradle├─ Proyecto. Properties└─ Proguard-Rules.Pro
Nueva estructura
nueva estructura ├─ biblioteca-foobar├─ App│ ├─ Libs│ ├─ src│ ├─ AndroidTest│ │ │ └ └ └ │ │ └ └ ─ Futurice/Project│ │ └─ Main│ ├ ├ │ └ └ └ └ └ └ └ └ └ └ └ └ │ └ ├ ├ └ ├. Androidmanifest.xml│ ├─ build.gradle│ └─ proguard-rules.pro├─ build.gradle└─ settings.gradle
La principal diferencia entre la nueva estructura es la división del 'conjunto de código fuente' (Main, AndroidTest), que es el concepto de Gradle.
El uso de la "aplicación" de más alto nivel es útil para distinguir su aplicación de otros proyectos de biblioteca a los que se hace referencia su aplicación (como biblioteca-foobar). Luego, Settings.gradle mantiene el índice de la aplicación en estas bibliotecas, y App/Build.gradle puede señalar estas bibliotecas.
Configuración de graduación
Arquitectura general Por favor, siga la guía de Google sobre Gradle para Android;
Tareas pequeñas (scripts), puede usar Gradle para crear tareas pequeñas en lugar de shell, python o perl, etc. Para más detalles, consulte la documentación de Gradle;
contraseña. En su aplicación Build.gradle debe definir FirmingConfigs para publicar la compilación. Los detalles son los siguientes:
No escriba como lo siguiente, aparecerá en su sistema de control de versiones:
SigningConfigs {Release {StoreFile File ("MyApp.KeyStore") StorePassword "Password123" Keyalias "TheKey" KeyyPassword "Password789"}}En su lugar, debe crear un archivo Gradle.Properties que no se agregará al sistema de control de versiones.
KeyStore_Password = contraseña123key_password = contraseña789
Gradle importará automáticamente este archivo, por lo que puede usarlo en build.gradle así:
SigningConfigs {Release {try {storeFile file ("myapp.keystore") storePasswordkeyStore_password keyalias "TheKey" keyPasswordkey_password} catch (ex) {thrownewinValidUserDataException ("Debe definir KeyStore_Password y Key_Password en Gradle.poperties.")(Si usa Maven, consulte el documento original)
Biblioteca
Jackson es una biblioteca Java que puede convertir objetos y datos JSON entre sí. GSON también es una opción similar. Sin embargo, creemos que JSCKSON es mejor porque admite múltiples formas de manejar JSON: transmisión, modelo de árbol de memoria e impulsar la unión de datos de JSON-POJO. Pero recuerde, Jackson es más grande que GSON, por lo que debe considerarlo como desee, si desea evitar el límite de 65k de métodos, es mejor usar GSON. Otras opciones: Json-Smart y Boon Json
Red, caché e imágenes. Use volea o modernización. La volea también se puede usar para cargar y caché de imágenes. Si elige Retrofit, puede usar Picasso para cargar y caché de imágenes. Luego use OKHTTP para realizar una solicitud HTTP válida. Estos tres tipos: modernización, Picasso y Okhttp provienen de la misma compañía, por lo que se complementan entre sí. OKHTTP se puede usar para conectarse a la volea.
RXJAVA es una biblioteca de programación receptiva, en otras palabras, maneja eventos asíncronos. (Para más detalles, consulte el documento original)
Remolambda es una biblioteca Java que lo ayuda a usar expresiones Lambda en Android u otras plataformas antes de JDK8. (Para más detalles, consulte el documento original)
Finalmente, recuerde las limitaciones del método Dex y no use demasiadas bibliotecas. (Las aplicaciones de Android, cuando se empaquetan en archivos Dex, tienen un límite máximo: 65535 métodos de referencia [1] [2] [3]. Si excede el límite, se producirá un error grave. Por lo tanto, no use demasiadas bibliotecas, use la herramienta de conteo de metro dex para decidir qué clases usar para mantener dentro del límite, especialmente evitar usar la biblioteca Guava, porque contiene más de 13k Métodos)
Actividades y fragmentos
Los fragmentos deben ser la opción predeterminada para su interfaz UI de implementación de Android. Los fragmentos se pueden reutilizar en su aplicación. Recomendamos usar fragmentos en lugar de actividades para dibujar interfaces basadas en los siguientes puntos:
Estructura del paquete Java
La estructura Java en las aplicaciones de Android está cerca de la estructura MVC (modelo-visión-controlador). En Android, el fragmento y la actividad son en realidad clases de controladores. Desde otra perspectiva, son parte de la interacción del usuario, es decir, pertenecen a la clase View View.
Por lo tanto, es difícil para nosotros distinguir estrictamente si un fragmento (o actividad) es un controlador o una vista. Entonces, desde la perspectiva de los paquetes Java, es mejor que ponemos fragmentos en sus propios paquetes de fragmentos, y luego la actividad está en el paquete más avanzado (siga las sugerencias puestas anteriormente). Por supuesto, si desea tener 2 o más actividades, crea un paquete de actividades.
De esta manera, toda la estructura parece una estructura MVC típica. Un paquete de modelos contiene POJOS, que se utiliza para convertir los datos JSON obtenidos por la interfaz API, y un paquete de vistas contiene vistas, notificaciones, vistas de barras de acción, widgets, etc. Los adaptadores es una capa intermedia que se encuentra entre datos y vistas. Sin embargo, generalmente necesitan emitir la vista Vista a través de GetView (), para que pueda colocar adaptadores en la ubicación de subpackage del paquete Views.
Algunas clases de controlador de nivel de aplicación que pertenecen solo al sistema Android deben colocarse en el paquete de gerentes. Se pueden colocar varias clases de procesamiento de datos, como DateUtils, en el paquete Utils. Las clases que interactúan con el servidor de fondo deben colocarse en el paquete de red.
En resumen, la arquitectura general de interactuar con el servidor hasta interactuar con el usuario puede diseñarse de la siguiente manera:
com.futurice.project ├─ Red ├─ Modelos ├─ Gerentes ├─ Utiliza ├ ├ Fragmentos ├─ Vistas ├─ Adaptadores ├─ ActionBar ├─ Widgets ├─ Notificaciones
Nomentario de archivos de recursos
Siga la convención de prefijo, similar a type_foo_bar.xml, como: fragment_contact_details.xml, View_primary_button.xml, Activity_Main.xml.
Organizar archivos de diseño
Si no sabe cómo normalizar un archivo XML de diseño, puede consultar las siguientes convenciones:
<? xml versión = "1.0" encoding = "utf-8"?> <linealLayout xmlns: android = "http://schemas.android.com/apk/res/android" xmlns: herramientas = "http://schemas.android.com/tools" android: lectout_width = "Match_arent" Android: Layout_height = "Match_Parent" Android: Layout_height = "Match_Parent" Android: orientación = "Vertical"> <TextView Android: id = "@+id/name" android: Layout_width = "Match_Parent" Android: Layout_height = "wrap_content" android: Layout_alignIrt = "verdadero" verdadero "verdadero" verdadero "verdadero" Android: text = "@string/name" style = "@style/fancytext"/> <include Layout = "@Layout/ReUSable_Part"/> </LinealLayout>