diff --git a/README.es-ES.md b/README.es-ES.md new file mode 100644 index 0000000..ec7debc --- /dev/null +++ b/README.es-ES.md @@ -0,0 +1,153 @@ + + +# spi + +[中文](README_CN.md) +> SPI para la componentización. + +## Descarga + +¡Añade **spi-gradle-plugin** a tu proyecto! + +``` + +buildscript { + ext { + kotlin_version = '1.5.31' + booster_version = '4.6.0' + } + + repositories { + mavenCentral() + google() + // jcenter() + + // didi booster + maven { url 'https://oss.sonatype.org/content/repositories/public/' } + maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } + + // add maven repository for spi-plugin at build.gradle file of root project + maven { url "https://raw.githubusercontent.com/afirez/apps_android_repo/master" } + // maven { url "https://raw.githubusercontent.com/afirez/spi/master/repo/" } + } + + dependencies { + classpath 'com.afirez.spi:spi-gradle-plugin:3.0.0' + // ① + classpath "com.didiglobal.booster:booster-gradle-plugin:$booster_version" + // ② figure out the features you really need, then choose the right module for integration + // ② 弄清楚真正需要的特性,然后从下面的模块列表中选择正确的模块进行集成 + // classpath "com.didiglobal.booster:booster-task-all:$booster_version" + // classpath "com.didiglobal.booster:booster-transform-all:$booster_version" + + // gradle plugin version <= 4.1.2 + // classpath 'com.afirez.spi:spi-gradle-plugin:2.0.0' + + // gradle plugin version <= 3.6.4 + // classpath 'com.afirez.spi:spi-gradle-plugin:1.0.1' + } +} + +// in module build.gradle +apply plugin: 'com.android.application' + +// didi booster +apply plugin: 'com.didiglobal.booster' // ③ + +// gradle plugin version <= 4.1.2 +// apply plugin: 'spi' +// or apply plugin: 'com.afirez.spi' + +``` + +¡Añade **spi** al proyecto del módulo si es necesario! + +``` +allprojects { + repositories { + ... + + mavenCentral() + google() + // jcenter() + + // didi booster + maven { url 'https://oss.sonatype.org/content/repositories/public/' } + maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } + + // add maven repository for spi at build.gradle file of root project + maven { url "https://raw.githubusercontent.com/afirez/apps_android_repo/master" } + + ... + } +} +``` + +``` + +implementation "com.afirez.spi:spi:1.0.1" + +``` + +## Uso + +### SPI AppLike + +![](https://user-gold-cdn.xitu.io/2019/6/1/16b13c2f4c0b6821?w=1252&h=946&f=png&s=193865) + +Para que cada módulo sea consciente del ciclo de vida de la Aplicación, anótelo con @SPI; será descubierto y registrado en ExtensionLoader. Por ejemplo: + +![](https://user-gold-cdn.xitu.io/2019/6/1/16b13c2f4c026017?w=1632&h=1272&f=png&s=299116) + +Posteriormente, AppDelegate cargará y despachará los AppLikes a través de ExtensionLoader. + +![](https://user-gold-cdn.xitu.io/2019/6/1/16b13c2f51b66ed3?w=2018&h=1774&f=png&s=329836) + +Llama a AppDelegate en la App y no olvides registrar la App en AndroidManifest.xml. ¡Disfrútalo! + +![](https://user-gold-cdn.xitu.io/2019/6/1/16b13c2f55447fa2?w=1374&h=1048&f=png&s=234748) + +### SPI Actiivty + +![](https://user-gold-cdn.xitu.io/2019/6/1/16b13c2f51c034a6?w=2040&h=1192&f=png&s=333383) + +Anota la Activity con @SPI incluyendo una ruta (path) para que sea descubierta y registrada en ExtensionLoader; luego podrá ser cargada por ExtensionLoader mediante dicha ruta. (si se anota sin ruta, la ruta será su nombre de clase.) + +### SPI Fragment + +![](https://user-gold-cdn.xitu.io/2019/6/1/16b13c2f7f338ee5?w=1932&h=1666&f=png&s=400667) + +Anota el Fragment con @SPI incluyendo una ruta (path) para que sea descubierto y registrado en ExtensionLoader; luego podrá ser cargado por ExtensionLoader mediante dicha ruta. (si se anota sin ruta, la ruta será su nombre de clase.) + +### SPI Provider + +![](https://user-gold-cdn.xitu.io/2019/6/1/16b13c2f89aab5fc?w=1930&h=1012&f=png&s=246460) + +Anota SpiKotlinProviderImpl con @SPI incluyendo una ruta (path) para que sea descubierta y registrada en ExtensionLoader; luego podrá ser cargada por ExtensionLoader mediante dicha ruta. (si se anota sin ruta, la ruta será su nombre de clase.) + +### Haz más con SPI + +SPI se centra en el descubrimiento de interfaces, registro e implementación de tablas de enrutamiento. Así, podemos recopilar y despachar interfaces como AppLike, o crear una implementación de enrutador basada en SPI, entre otros usos. + +## Agradecimientos + +- [ASM](https://asm.ow2.io/) +- [hunter](https://github.com/Leaking/Hunter) +- [KnightTransform](https://github.com/kakayang2011/KnightTransform) +- [booster](https://github.com/didi/booster) + +## Licencia + + Copyright 2019 afirez + + Licenciado bajo la Licencia Apache, Versión 2.0 (la "Licencia"); + no podrá utilizar este archivo excepto en cumplimiento con la Licencia. + Puede obtener una copia de la Licencia en + + http://www.apache.org/licenses/LICENSE-2.0 + + Salvo que lo exija la legislación aplicable o se acuerde por escrito, el software + distribuido bajo la Licencia se distribuye en una base "TAL CUAL", + SIN GARANTÍAS O CONDICIONES DE NINGÚN TIPO, ni expresas ni implícitas. + Consulte la Licencia para conocer el lenguaje específico que rige los permisos y + limitaciones de la Licencia.