Tag: 匕首 2

Dagger 2命名不能没有@Provides方法提供

试图咆哮匕首2,并与指定的提供商有问题。 我有一个简单的设置如下: // Module @Module class AppModule(private val app: App) { @Provides @AppScope fun providesApp() = app @Provides @AppScope fun provideSharedPreferences(app: App) = PreferenceManager.getDefaultSharedPreferences(app) @Provides @AppScope @Named("Uri1") fun providesUri1() = Uri.Builder().scheme("https").authority("authory1").build() @Provides @AppScope @Named("Uri2") fun providesUri2() = Uri.Builder().scheme("https").authority("authory2").build() } // Component @AppScope @Component(modules = arrayOf(AppModule::class)) interface AppComponent { fun inject(target: MainActivity) } // MainActivity @Inject […]

错误:com.app.android.dagger.component.AppComponent(unscoped)可能不引用作用域绑定:

嗨我在我的android应用程序中使用dagger2。 我有提供ConnectivityManager AppModule和AppComponent。 AppModule.kt @Module class AppModule(private val application: Application) { @Provides @Singleton fun providesApplication(): Application = application @Provides @Singleton fun providesConnectivityManager(): ConnectivityManager = application.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager } AppComponent.kt @Component(modules = arrayOf(AppModule::class)) interface AppComponent { fun inject(app: ApprApplication) } 在我的应用程序类中,我正在注入ConnectivityManager但是当我正在进行日志记录时,它的值为null。 class AppApplication : Application(), AnkoLogger { private val appComponent: AppComponent by lazy { DaggerAppComponent.builder().appModule(AppModule(this)).build() } […]

参数不匹配; SimpleXML的

我正在使用SimpleXMLConverterFactory进行retrofit 。 我总是得到一个 ConstructorException: Parameter 'success' does not have a match in class ResponseInfo 我不知道有什么可能是错的。 XML是非常简单的,我只想从success节点的字符串。 XML: <?xml version="1.0" encoding="UTF-8"?> <response> <success>LoremIpsum</success> </response> ResponseInfo: @Root(strict = false, name = "response") data class ResponseInfo(@Element(required = false, name = "success) var success: String) 编辑1:我测试了Api调用,它返回给定的XML。 谢谢

匕首2在单元测试与Kotlin

在Kotlin博客中有解释如何让Dagger 2和Kotlin一起工作。 一切都像魅力一样。 到目前为止…我只是无法使它在测试中工作。 DaggerTestSomeComponent不是从TestSomeComponent : SomeComponent生成的。 我尝试了各种组合。 包括在测试中创建绝对新的组件。 依然没有。 有没有解决方法,或者我可以提供一些其他的细节?

来自Retrofit的POST请求以意想不到的方式工作

有一个使用HTTPS的第三方网站,登录时起始页执行POST。 我已经在浏览器中检查了POST请求,然后我可以用Fiddler的作曲器手动创建请求。 因此,根据凭证,我可以成功或不成功地使用Fiddler登录。 返回代码始终为302,它们分别与用户管理页面的重定向(标题“位置”)或登录失败页面一起出现。 但是,当我使用Retrofit库创建请求时,它不起作用。 我得到的响应代码是200,在这个具体的情况下,不会被认为是成功的。 为了检查来自Retrospect的POST请求,我将它指向了Fiddler( http:// localhost:8888 )而不是第三方URL。 如果我将该请求复制到作曲家,并将URL调整为第三方,请求确实起作用。 也就是说,我无法找到由Retrofit构建的请求有任何问题。 有没有人有一个想法可能是错的? 我的代码是用Kotlin编写的,但是如果你知道Java应该很容易理解: import okhttp3.ResponseBody import retrofit2.Call import retrofit2.Retrofit import retrofit2.http.* interface MyApi { @POST("<relative login url>") @FormUrlEncoded @Headers( //… ) fun login( @Field("username") username: String, @Field("password") password: String ) : Call<ResponseBody>; } fun main(args: Array<String>) { val baseUrl = "https://<url>" val retrofit = […]

我如何提供匕首依赖的活动上下文?

我如何在mainModule类中提供活动上下文? 谢谢! 代码如下所示: @Singleton @Component(modules = {AndroidInjectionModule.class, AppModule.class, ActivityBuilder.class}) public interface AppComponent { @Component.Builder interface Builder { @BindsInstance Builder application(Application application); AppComponent build(); } void inject(MvmApp app); } 活性建造者: @Module public abstract class ActivityBuilder { @ContributesAndroidInjector(modules = {MainModule.class}) abstract MainActivity bindMainActivity(); } 我有一个appModule,并为每个活动模块: @Module public class AppModule { @Provides @Singleton @ApplicationContext Context provideContext(Application application) { […]

詹金斯:Android项目未能建立(生成数据绑定/匕首类失败)

我工作场所的安卓团队正试图让詹金斯工作,但詹金斯正在建设项目的麻烦。 该项目使用下面的命令行在我们的开发机器上正确构建,但无法在Jenkins机器上构建。 注意:我们有另外一个项目,詹金斯能够建立包含数据绑定和匕首的项目。 我们收到的错误是 :app:compileDevDebugJavaWithJavac/<some-file-path> – <some_class>:27: error: cannot find symbol import <DaggerGeneratedClass>; 我们知道数据绑定类没有被生成。 如果我们到我们的build目录“intermediates / classes // debug // databinding”,我们看不到任何东西,但是在我们的开发机器上,数据绑定类生成了。 有谁知道如何解决这个问题? 命令行来建立项目 ./gradlew assemble

Kotlin Dagger2找不到符号ApplicationModule_ProvideApplicationFactory

我试图用Kotlin使用Dagger2,但今天试图编译得到这个错误: 错误:任务':app:compileDebugJavaWithJavac'的执行失败。 错误:(5,43)错误:找不到符号类ApplicationModule_ProvideApplicationFactory (应用程序)Build.gradle apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "com.ilyarb.geotags" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } sourceSets { main.java.srcDirs += 'src/main/kotlin' } dexOptions { javaMaxHeapSize "2048M" } } […]

绑定到KClass类型的地图

我想通过它们的KClass类型将ViewModel子类绑定到一个地图中: @Module abstract class ViewModelModule { @Binds @IntoMap @ViewModelKey(MyViewModel::class) abstract fun bindsMyViewModel(viewModel: MyViewModel): ViewModel @Binds abstract fun bindViewModelFactory(factory: ViewModelFactory): ViewModelProvider.Factory } 但是我得到了Dagger编译错误: e: ~/Example/app/build/tmp/kapt3/stubs/debug/com/example/app/injection/AppComponent.java:5: error: [dagger.android.AndroidInjector.inject(T)] java.util.Map<kotlin.reflect.KClass<? extends android.arch.lifecycle.ViewModel>,? extends javax.inject.Provider<android.arch.lifecycle.ViewModel>> cannot be provided without an @Provides-annotated method. e: e: public abstract interface AppComponent { e: ^ e: java.util.Map<kotlin.reflect.KClass<? extends android.arch.lifecycle.ViewModel>,? extends javax.inject.Provider<android.arch.lifecycle.ViewModel>> is injected […]

AndroidInjector <android.app.Activity>不能提供@ Provide或者@ Produces注解的方法

我在尝试从Dagger v2.11中获取新的Android Dagger类时遇到了错误。 我不确定问题是什么,因为我已经考虑到了https://google.github.io/dagger//android.html上的Android文档,仍然无法解决这个问题。 有关这个设置有什么问题的任何想法? 我的应用程序: public class MyApplication extends Application implements HasActivityInjector { @Inject AndroidInjector<Activity> androidInjector; @Override public void onCreate() { super.onCreate(); AppInjector.init(this); } @Override public AndroidInjector<Activity> activityInjector() { return androidInjector; } } AppComponent: @Singleton @Component(modules = { AndroidSupportInjectionModule.class, AppModule.class, ActivityModule.class, }) public interface AppComponent { @Component.Builder interface Builder { @BindsInstance Builder application(Application application); […]