Как заставить нож для масла распознавать R2 в тестовом классе библиотеки? - PullRequest
0 голосов
/ 17 октября 2019

Я понимаю, что Butterknife связывает представления, такие как TextViews- @BindView(R.id.test_status) EditText txtStatus;. Кроме того, он привязывается к событию щелчка - @OnClick(R.id.login_task) -. Я даже понимаю, что в настоящее время Butterknife можно использовать для привязки взглядов и т. Д. в библиотеке с надлежащими зависимостями, объявленными в файле build.Gradle. Благодаря исследованиям я знаю, что представления в библиотеке должны быть окончательными или постоянными внутри библиотеки, чтобы правильно работать с ножом. Каждый из этих сценариев у меня работает в этом приложении. Я даже понимаю, что, поскольку я нахожусь в библиотеке, использование R2.java в отличие от R.java при связывании представлений -

@BindView(R2.id.test_status)
EditText txtStatus;

Я не понимаю, почему нож с ножом не распознает представления вкласс тестирования библиотеки?

Package name
com.test-lib.sso(androidTest)

build.gradle file

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'maven-publish'
apply plugin: 'com.jakewharton.butterknife'


ext {

    MAVEN_URL = System.getenv('MAVEN_URL') ?: System.getProperty("MAVEN_URL")
    MAVEN_USERID = System.getenv('MAVEN_USERID') ?: System.getProperty("MAVEN_USERID")
    MAVEN_PASSWD = System.getenv('MAVEN_PASSWD') ?: System.getProperty("MAVEN_PASSWD")
}

buildscript {
    ext.kotlin_version = '1.3.50'
    repositories {
        mavenCentral()
        google()
        jcenter()
    }

dependencies {
    classpath 'com.android.tools.build:gradle:3.5.1'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.0'
    }

}
   dependencies {
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'com.google.code.gson:gson:2.8.0'
    implementation 'com.squareup.okhttp3:okhttp:3.4.1'

    implementation 'com.jakewharton.timber:timber:4.7.1'
    implementation 'com.jakewharton:butterknife:10.1.0'


    api 'androidx.biometric:biometric:1.0.0-beta02'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'

    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test:rules:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-web:3.2.0'
    androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
    androidTestImplementation 'com.squareup.okhttp3:mockwebserver:3.4.1'
    androidTestImplementation 'com.jakewharton:butterknife:10.1.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'
    androidTestAnnotationProcessor 'com.jakewharton:butterknife-compiler:10.2.0'
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    api 'com.jakewharton:butterknife:10.1.0'

 }

В моем классе тестирования.

import com.lib.sso.test.R;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test_main_activity);
    ButterKnife.bind(this);
}
@BindView(R.id.test_status) EditText txtStatus;
@BindView(R.id.env_spinner) AppCompatSpinner spinner;

 @OnClick(R2.id.test_login)
 public void startNewActivity(View v){
    startActivityForResult(NewActivity.getLoginIntent(activity), REQUEST_CODE_LOGIN);
 }

XML в макете

       <Button
           android:id="@+id/test_login"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textSize="10sp"
           android:text="Sign In"/>

В @BindView Android Studio требуетсяR.id.test_login чтобы быть константой, что я мог бы сделать, объявив @BindView(R2.id.test_login) за исключением того, что постоянная переменная не генерируется в R2.java.

Когда я переносу вызовы butterknife в R2, переменная становится красной и не распознается,Когда я выполняю поиск в R2.java, я вообще не найду эту переменную, в основном потому, что она не была сгенерирована.
Итак, как мне заставить нож с ножом распознавать R2 в тестовом классе библиотеки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...