Butterknife에서 Android의 View 바인딩으로 마이그레이션하는 방법

Android 개발 환경이 계속해서 성장함에 따라 개발자가 이전 솔루션을 사용할 때 보았던 문제를 해결하기 위해 새로운 빌드 도구가 만들어졌습니다. 일반적으로 사용되는 도구는 버터나이프였습니다. 당시 Butterknife는 애플리케이션에서 뷰를 참조하기 위해 findViewById(...) 함수가 사용된 횟수를 줄이기 위해 사용되었습니다. 그러나 Butterknife는 null 안전성 및 속도와 같은 고유한 문제를 여전히 가지고 있었습니다. 이제 View Binding을 소개합니다. 코드가 적고 null이 안전하며 빠른 바인딩 도구입니다! View Binding은 앱 내에서 보기를 참조하고 쉽게 관리하는 데 도움이 되는 Google Android 개발 팀에서 만든 자사 도구입니다. 이 게시물에서는 전환해야 하는 이유와 자신의 앱에 뷰 바인딩을 추가하는 방법을 알아봅니다.

Butterknife에서 View Binding으로 전환하는 이유는 무엇입니까?



Butterknife는 findViewById(...) 함수를 사용하여 뷰를 참조하고 상호 작용하는 문제를 해결하기 위해 만들어진 타사 라이브러리입니다. 이는 상용구 코드를 줄이는 데 도움이 되었지만 보기와 상호 작용하려고 할 때마다 @Bind 주석을 설정해야 했습니다. 그런 다음 Gradle 버전 3.6부터 View Binding이 도입되었습니다. Butterknife의 사용이 중단되고 findViewById(...) 함수의 사용이 감소한 빌드 기능입니다.

이전에는 Butterknife를 사용하여 뷰 참조 및 이벤트 리스너 처리를 처리했습니다.

자바

@Bind(R.id.etExample)
EditText etExample;


코틀린

@BindView(R.id.etExample)
lateinit var etExample: EditText


이제 다음과 같이 참조할 수 있습니다.
자바

private ActivityMainBinding binding;


코틀린

lateinit var binding: ActivityMainBinding


이 단일 바인딩 변수를 사용하면 모든 보기에 액세스하고, 이벤트 리스너를 설정하고, Butterknife로 수행하는 기타 모든 기능을 수행할 수 있습니다.

Butterknife가 더 이상 사용되지 않는 것 외에도 전환해야 하는 또 다른 이유는 View Binding이 컴파일 시간에 안전하고 빠르게 빌드되기 때문입니다. findViewById(...)의 경우 뷰를 참조하는 이러한 방식은 뷰 바인딩 변수로 대체될 수 있는 불필요한 코드를 너무 많이 생성합니다.

Butterknife에서 뷰 바인딩으로 업데이트하는 방법



이 블로그 게시물에서는 Dolby.io Communications SDK 튜토리얼에서 Android 시작 안내서를 업데이트할 예정입니다. 저장소here를 찾을 수 있습니다.

Butterknife를 View Binding으로 대체하기 위해 필요한 단계를 아래에 나열합니다.

build.gradle(app) 파일에서 뷰 바인딩 활성화



첫 번째 변경 사항은 Android 프로젝트에서 모든 Butterknife 종속성을 제거하는 것이었습니다.

뷰 바인딩을 사용하려면 build.gradle(app) 파일 내에서 활성화해야 했습니다.

android {
    ...
    buildFeatures {
        viewBinding = true
    }
}


viewBinding이 활성화되면 프로젝트를 동기화하겠습니다!

코드에서 버터나이프 제거



이전에 Butterknife를 사용했던 모든 보기를 제거해야 합니다. 이 예에서는 시작 안내서 리포지토리에서 MainActivity.java 파일을 편집했습니다.

아래에서 이전에 클래스의 모든 보기를 초기화한 방법을 볼 수 있습니다.

public class MainActivity extends AppCompatActivity {
    ...
    @Bind(R.id.user_name)
    EditText user_name;

    @Bind(R.id.conference_name)
    EditText conference_name;

    @Bind(R.id.video)
    protected VideoView video;

    @Bind(R.id.videoOther)
    protected VideoView videoOther;

    @Bind(R.id.participants)
    EditText participants;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        ...
    }

    @OnClick(R.id.login)
    public void onLogin() { ... }
}


이제 보기 바인딩을 사용하면 하나의 바인딩 변수를 사용하여 모든 보기를 참조하는 것만큼 쉽습니다.

자바

public class MainActivity extends AppCompatActivity {

    private ActivityMainBinding binding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityMainBinding.inflate(getLayoutInflater());
        View view = binding.getRoot();
        setContentView(view);

        binding.login.setOnClickListener(new View.OnClickListener() { ... }
}


코틀린

class MainActivity : AppCompatActivity() {

    lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view)

        binding.login.setOnClickListener{...}
    }
}


Butterknife를 사용할 때 뷰를 초기화하고 참조했습니다. 이제 View Binding 덕분에 직접 액세스할 수 있습니다!

View Binding을 사용하면 Button, EditText 또는 기타 뷰를 참조해야 하는 경우 이전에 생성한 바인딩 변수를 통해 검색하기만 하면 됩니다.

텍스트 설정, onClick 이벤트 처리 등과 같은 다른 동작의 경우 초기화하는 바인딩 변수를 통해 액세스할 수 있습니다.

자바

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    binding.conferenceName.setText("Avengers meeting");
}


코틀린

override fun onCreate(savedInstanceState: Bundle?) {
    ...
    binding.conferenceName.text = "Avengers meeting"
}


결론



팀에서 여전히 ButterKnife를 사용하고 있다면 지금이 View Binding으로 전환할 때입니다. 동일한 기능, 더 적은 코드 및 상용구 참조가 필요합니다.

ButterKnife가 더 이상 사용되지 않기 때문에 Android 시작 가이드 샘플 앱을 업데이트하기로 결정했습니다. Android Communications SDK에 온보딩하는 새로운 개발자로서 샘플 앱이 다른 사람들이 자신의 프로젝트에서 사용하는 최신 Android 사례를 사용하는 것이 중요합니다.

보기 바인딩에 대해 자세히 알아보려면 visit the official docs here !

읽어 주셔서 감사합니다!

좋은 웹페이지 즐겨찾기