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.