关于kotlin插件 MVP Generator的使用方式

#####无意间在android studio中看到了 MVP Generator 插件,插件的github地址为:https://github.com/stfalcon-studio/MVPHelper;插件的作者没有说明这个插件的具体使用方式,导致做为新手折腾了好一段时间啊,现在记录一下这个插件的使用方式,该插件主要是快速创建mvp框架,其中使用了MVP + Dagger + Rx , 是编写Kotlin代码时使用;

MVP Generator的使用注意事项:

####1.首先需要在android studio 中添加插件 Mvp Generator:

	File -->Setting-->Plugins -->Browse repositories...,搜索Mvp Generator ,install ---> restart As;
2.在项目app module中java包下创建相应的模块文件夹名称,右键new–>+mvp–>选择创建Activity或者fragment–>输入要创建的Activity或者fragment名称,例如:login, 同时需要点击kotlin base DI classes,生成di文件夹及代码;

这里写图片描述

####3.此时会自动生成如图所示的类和文件夹
这里写图片描述

####4.此时生成的就是mvp的架子,但是你点开,发现全报错,why? 我就这完全不知所措了。。。。。

#####5.淡定,其实如果了解Dagger2的朋友,肯定知道,那就是我们需要导入一些依赖:

ext这个和dependencies同个级别,其实就是来控制依赖的版本,完全可以不用
ext {
    support_libraries_version = '25.3.1'
    dagger_version = '2.10'
}

在项目 module的bulid.gradle的
dependencies {......}中添加如下:


 //Dagger
    compile 'com.github.stfalcon:mvphelper:0.2.1'
    compile "com.google.dagger:dagger:$dagger_version"
    compile "com.google.dagger:dagger-android:$dagger_version"
    compile "com.google.dagger:dagger-android-support:$dagger_version"
    annotationProcessor "com.google.dagger:dagger-compiler:$dagger_version"
    annotationProcessor "com.google.dagger:dagger-android-processor:$dagger_version"
    kapt "com.google.dagger:dagger-compiler:$dagger_version"

    //Rx
    compile 'io.reactivex.rxjava2:rxjava:2.0.8'
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
apply plugin: 'kotlin-android-extensions'    
apply plugin: 'kotlin-kapt'  //新增kotlin kapt脚本
/**
*注掉了kapt代码,因为kapt3不支持
*/
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> kotlin.jvm.internal.FunctionReference.<init>(ILjava/lang/Object;)V
//kapt {
//    generateStubs = true
//}

kapt主要是为了生成DaggerAppComponent类,该类在app\build\generated\source\kapt\debug\com\example\szw\myapplication\di\components\DaggerAppComponent.java

添加如图所示:
这里写图片描述

####6. 可能还需要在项目的build.gradle中添加依赖:

classpath 'com.novoda:bintray-release:0.3.4'

####7.到这里差不多就算配置的差不多了,然后开始移动代码

  1. 在factories文件夹中可以看到两个类:ActivitiesInjectorFactories和FragmentsInjectorFactories,
    如果你是创建的activity,那么会在xxxxxActivitySubComponent中生成
 @Binds
    @IntoMap
    @ActivityKey(xxxxxActivity::class)
    internal abstract fun bindxxxxxActivityInjectorFactory(
            builder: xxxxxActivitySubComponent.Builder): AndroidInjector.Factory<out Activity>

如果是fragment,在xxxxFragmentSubComponent中有如下代码:

 @Binds
    @IntoMap
    @FragmentKey(xxxxFragment::class)
    internal abstract fun bindxxxxFragmentInjectorFactory(builder: xxxxFragmentSubComponent.Builder):
            AndroidInjector.Factory<out Fragment>

把这些代码,如果是Activity中的就剪贴到ActivitiesInjectorFactories中;
Fragment中的就剪贴到FragmentsInjectorFactories中。

2.如果是创建的fargment,同时需要在FragmentsInjectorFactories中的这段代码里添加:

@Module(subcomponents = arrayOf(
        //        register your fragments' subcomponents here
        xxxxFragmentSubComponent::class   //这里添加生成的xxxxFragmentSubComponent
))

3.如果是创建的activity,同时需要在module文件夹下的AppModule类的下面代码中添加:

	@Module(subcomponents = arrayOf(
        //        register your activities' subcomponents here
       xxxxxActivitySubComponent::class     //这里添加生成的xxxxxActivitySubComponent
))

4.最后一步,就是把App这个配置到AndroidManifest.xml中去,如下:

<application
        android:name=".App"   //就是这里
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".login.LoginActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

5.也是最重要的一步,就是需要重新编译,看能不能生成DaggerAppComponent类,如果没有,看下什么地方不对,在检查检查,就ok了。。

####新手自己使用怕忘了,就记录一下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值