studio modulos libreria library importar generar dependencias create crear agregar java android api packaging code-sharing

java - modulos - Cómo crear mi propia biblioteca de Android y alojarla



generar jar android studio (5)

Convierta las clases relevantes en un módulo de biblioteca, parece que ya sabe cómo hacerlo, y luego use el complemento Gradle Bintray para subirlo a JCenter .

Digamos que configura group en build.gradle a com.ryan-newsom , version a 1.0 y el nombre del proyecto es android-log-in-screen .

(parte de) android-log-in-screen / build.gradle :

buildscript { repositories { jcenter() } dependencies { classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:0.6" } } apply plugin: ''com.jfrog.bintray'' group = ''com.ryan-newsom'' version = ''1.0'' bintray { // Omitted for brevity, refer to the examples on GitHub. }

Usted (o cualquier otra persona) puede usarlo en su proyecto agregando lo siguiente:

(parte de) other-project / build.gradle :

repositories { jcenter() } dependencies { compile "com.ryan-newsom:android-log-in-screen:1.0" }

La biblioteca se extraerá de JCenter y se agregará a classpath.

Estoy trabajando para crear una pantalla de inicio de sesión que se utilizará con múltiples aplicaciones de Android diferentes. ¿Cuál sería la mejor forma de empaquetarlo para que otras personas puedan usar mi función de inicio de sesión en sus aplicaciones? Sería preferible que se sincronizara automáticamente en caso de que tuviéramos que hacer cambios. *** EDIT **** Parece que empaquetarlo en un módulo de biblioteca es la mejor opción. ¿Cómo se puede subir este módulo para que, si realizamos una actualización de este módulo, este se actualice a la perfección sin tener que extraerlo de github, por ejemplo?

¡Gracias!


La mejor forma de crear una lib y ponerla a disposición de otros desarrolladores es creando un AAR para que los desarrolladores puedan importarlo en su proyecto mediante dependencias.

El proceso es bastante largo. Estos son los principales pasos que debe seguir para publicar su lib:

  • Registre una cuenta y cree un nuevo boleto ( https://issues.sonatype.org )
  • Descargar (si usa OS X) GPGTools ( http://www.gpgtools.org/ )
  • Modificar los archivos gradle del proyecto
  • Crear clave de firma Crear
  • Firme y publique sus archivos en el repositorio Staging

Escribí una publicación al respecto y para obtener más detalles puedes mirar here . Este es un archivo de gradle llamado maven_push.gradle:

apply plugin: ''maven'' apply plugin: ''signing'' def sonatypeRepositoryUrl if (isReleaseBuild()) { println ''RELEASE BUILD sonatypeRepositoryUrl = hasProperty(''RELEASE_REPOSITORY_URL'') ? RELEASE_REPOSITORY_URL : "https://oss.sonatype.org/service/local/staging/deploy/maven2/" } else { println ''SNAPSHOT BUILD'' sonatypeRepositoryUrl = hasProperty(''SNAPSHOT_REPOSITORY_URL'') ? SNAPSHOT_REPOSITORY_URL : "https://oss.sonatype.org/content/repositories/snapshots/" } def getRepositoryUsername() { return hasProperty(''nexusUsername'') ? nexusUsername : "" } def getRepositoryPassword() { return hasProperty(''nexusPassword'') ? nexusPassword : "" } afterEvaluate { project -> uploadArchives { repositories { mavenDeployer { beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } pom.artifactId = POM_ARTIFACT_ID repository(url: sonatypeRepositoryUrl) { authentication(userName: getRepositoryUsername(), password: getRepositoryPassword()) } pom.project { name POM_NAME packaging POM_PACKAGING description POM_DESCRIPTION url POM_URL scm { url POM_SCM_URL connection POM_SCM_CONNECTION developerConnection POM_SCM_DEV_CONNECTION } licenses { license { name POM_LICENCE_NAME url POM_LICENCE_URL distribution POM_LICENCE_DIST } } developers { developer { id POM_DEVELOPER_ID name POM_DEVELOPER_NAME } } } } } } signing { required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") } sign configurations.archives } task androidJavadocs(type: Javadoc) { source = android.sourceSets.main.allJava classpath += project.files(android.plugin.getRuntimeJarList().join(File.pathSeparator)) } task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) { classifier = ''javadoc'' //basename = artifact_id from androidJavadocs.destinationDir } task androidSourcesJar(type: Jar) { classifier = ''sources'' //basename = artifact_id from android.sourceSets.main.allSource } artifacts { //archives packageReleaseJar archives androidSourcesJar archives androidJavadocsJar } }

mientras que gradle.properties es:

VERSION_NAME= VERSION_CODE=1 GROUP= POM_DESCRIPTION= POM_URL= POM_SCM_URL= POM_SCM_CONNECTION= POM_SCM_DEV_CONNECTION=scm:[email protected]: POM_LICENCE_NAME=The Apache Software License, Version 2.0 POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt POM_LICENCE_DIST=repo POM_DEVELOPER_ID= POM_DEVELOPER_NAME=

Hay otra manera, pero no lo intenté y parece ser más fácil. jitpack un vistazo a jitpack .

Espero que te ayude


Puede empaquetar la biblioteca en un formato AAR. También contendrá los recursos que utilizó en su módulo de inicio de sesión. Después de eso, puede pasar el formato de la biblioteca AAR a bintray (que es gratuito y le permite configurar su propio repositorio).

Sus colaboradores pueden acceder a la biblioteca usando una dependencia que se ve así:

compilar ''com.newsom: awesome-login-screen: 0.5''

Consulte este tutorial inicial si está utilizando AndroidStudio / Gradle y desea enviarlo a bintray. https://github.com/jimcoven/android-bintray-kit


Si ha transferido su código a GitHub, compartir la biblioteca (aar) es fácil con jitpack .

Sus usuarios solo necesitarán agregar el repositorio a su build.gradle:

repositories { jcenter() maven { url "https://jitpack.io" } }

y luego su repositorio de GitHub como dependencia:

dependencies { // ... compile ''com.github.YourUsername:Repo:Release'' }

Lo bueno es que no tienes que subir tu biblioteca. Detrás de escena, JitPack comprobará el código de GitHub y lo compilará. A medida que publicas una nueva versión en GitHub, está disponible para que otros la usen.

También hay una guía sobre cómo preparar un proyecto de Android.


haga que el paquete o tarro dependa de su fuente, y publíquelo en git hub; puede referirse al git de su ide para importar o verificar si hay actualizaciones.