안드로이드

안드로이드 apk 100MB 넘어갈 때 확장파일추가하기(2) - 로컬테스트하기

알통몬_ 2020. 4. 27. 14:44
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


지난 포스팅에서는 확장파일을 불러오는데 필요한 모듈을 대상 안드로이드 프로젝트에 추가했습니다.


이번 포스팅에서는 필요한 리소스들을 확장파일로 만들어 불러오는 방법에 대해 공부합니다.


먼저 버튼을 누르면 사진이 바뀌는 예제를 만들었습니다.

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<Button
android:id="@+id/changeImgBtn"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="16dp"
android:background="#F8C8C8"
android:textAlignment="center"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
android:textSize="36sp"
android:textStyle="bold|italic"
app:layout_constraintDimensionRatio="3:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="이미지 바꾸기" />

<ImageView
android:contentDescription="@string/app_name"
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/origin" />
</androidx.constraintlayout.widget.ConstraintLayout>


MainActivity.kt

class MainActivity : AppCompatActivity() {

lateinit var imageView: ImageView

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val changeImgBtn = findViewById<Button>(R.id.changeImgBtn)

imageView = findViewById(R.id.imageView)

changeImgBtn.setOnClickListener {
change()
}

}

private fun change() {
try {
val ims = assets.open("change.jpg")

val d = Drawable.createFromStream(ims, null)
imageView.setImageDrawable(d)
} catch (e: Exception) {
return
}
}

}


지금은 assets 에서 변경할 이미지를 불러와서 변경하는 코드인데요.

여기는 별 신경쓸 필요 없습니다.


이제 확장파일을 만듭니다. 만드는 방법은 아주 간단한데요.

필요할 리소스들을 하나의 압축파일로 만듭니다. 저는 이미지 하나만 필요해서

하나만 압축파일로 만들었습니다.

그 다음 확장파일로 바꿔야 하는데요. 확장파일 이름 형식은

https://developer.android.com/google/play/expansion-files#Testing

여기에 나와있는 것처럼

main.versionCode.pa.cka.ge.obb 이어야합니다.

만든 압축파일을 위 이름형식처럼 바꿔주세요.

main.2.thomas.park.apkextenstionex.obb

저는 위처럼 만들었습니다.

이제 만들었다면 테스트할 디바이스를 PC와 연결하고 디바이스 저장소에 들어가서

프로젝트의 패키지가 포함된 이름으로 폴더를 만들어주고

폴더에 들어가서 만든 확장파일을 넣어줍니다.


그리고 MainActivity의 change 메소드를 아래처럼 변경해줍니다.

private fun change() {
try {
//val ims = assets.open("change.jpg")
val zipResourceFile = APKExpansionSupport.getAPKExpansionZipFile(applicationContext, 2, 0)

val ims = zipResourceFile.getInputStream("change.jpg")

val d = Drawable.createFromStream(ims, null)
imageView.setImageDrawable(d)
} catch (e: Exception) {
return
}
}
APKExpansionSupport.getAPKExpansionZipFile(applicationContext, 2, 0)

에서 숫자 2가 아까 obb확장파일 만들었을 때 들어간 versionCode입니다.

이렇게 하고 실행을 해보면 이미지가 정상적으로 변경되는 걸 확인할 수 있습니다.


이상입니다. 다음 포스팅에서는 플레이스토어에 등록하는 방법에 대해

알아봅시다.

반응형