api호출후 간단한 앱을 만들던도중
api 키값을 하드코딩으로 코드에 올려놓고 git에 push했다가, 공개되면 안되는 key값이기때문에
res > value > string에 키값을 적어놓고
getstring 을 통해서 해당 프래그먼트 클래스의 멤버변수로 초기화한뒤에 사용했더니 앱이 시작과 동시에 죽었다.
Fragment가 Oncreate 시점에 초기화 되기때문에, testApiKey가 초기화 되는시점을 onCreate에 적어주면 된다.
처음에 에러가 났던 코드
class secondFragment : Fragment() {
companion object {
fun newInstance(): secondFragment = secondFragment()
}
private var _binding: FragmentSecondBinding? = null
private val binding get() = _binding!!
private val testApiKey: String = getString(R.String.ApiKey) // 멤버변수에서 직접 초기화 하였더니 앱이 죽음.
}
수정한 코드
class secondFragment : Fragment() {
companion object {
fun newInstance(): secondFragment = secondFragment()
}
private var _binding: FragmentSecondBinding? = null
private val binding get() = _binding!!
private lateinit var testApiKey: String // 지연초기화로 변수명 설정
.
.
.
// Oncreate메서드에서 프래그먼트가 초기화되는 시점에 getString 을하여 testApiKey값을 초기화 해준다.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
testApiKey = getString(R.string.nexon_api_key) // 초기화 하는부분. 필요 메서드부분에서 사용하면 됩니다.
}
api 키값과 같은 것들은 노출이 되면 안되기때문에 다른곳에서도 일반적으로 관리하지만 git 레파지토리가 private 이거나,
open일경우, git ignore로 일부만 노출되지 않게 사용한다면 괜찮다고 생각합니다.