<Android,Kotlin> Apikey,또는 String값 초기화시 주의점

youneeo·2024년 1월 1일

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로 일부만 노출되지 않게 사용한다면 괜찮다고 생각합니다.

profile
정돈된 공간에서 생각하기를 좋아합니다.

0개의 댓글