package Ġcom . coding fel ine . build kon fig . gradle Ċ Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġorg . gradle . test kit . runner . Gradle Runner Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . rules . Temporary Folder Ċ import Ġjava . io . File Ċ Ċ class ĠBuild kon fig Plugin Kotlin DSL Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġproject Dir Ġ= ĠTemporary Folder () ĊĊĠĠĠ Ġlateinit Ġvar Ġbuild File : ĠFile ĊĊĠĠĠ Ġlateinit Ġvar Ġsetting File : ĠFile ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġbuild File Ġ= Ġproject Dir . new File (" build . gradle . k ts ") ĊĠĠĠĠĠĠĠ Ġsetting File Ġ= Ġproject Dir . new File (" settings . gradle ") ĊĠĠĠĠĠĠĠ Ġsetting File . write Text ( settings Gradle ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` issue Ġ 5 0 Ġ- Ġjs ( IR ) Ġtarget `() Ġ{ ĊĠĠĠĠĠĠĠ Ġbuild File . write Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġorg . jetbrains . kotlin . gradle . plugin . mpp . Kotlin Native Target ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġcom . coding fel ine . build kon fig . compiler . Field Spec . Type . STRING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| plugins Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġkotlin (" multi platform ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġid (" com . android . library ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġid (" com . coding fel ine . build kon fig ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| kotlin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġandroid () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġval Ġios Target : Ġ( String , ĠKotlin Native Target . () Ġ-> ĠUnit ) Ġ-> ĠKotlin Native Target Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġif Ġ( System . getenv (" SDK _ NAME ") ?. startsWith (" iphone os ") Ġ== Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠ Ġ:: ios Arm 6 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠ Ġ:: ios X 6 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġios Target (" ios ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġbinaries Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠ Ġframework Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Name Ġ= Ġ" shared " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġjs ( IR ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġbrowser () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġsource Sets Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġval Ġcommon Main Ġby Ġgetting ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġval Ġandroid Main Ġby Ġgetting ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġval Ġios Main Ġby Ġgetting ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġval Ġjs Main Ġby Ġgetting ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| configure < com . coding fel ine . build kon fig . gradle . Build Kon fig Extension > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ ĠpackageName Ġ= Ġ" com . sample . build kon fig . issues " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġdefault Configs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġbuild Config Field ( STRING , Ġ" VERSION ", Ġ" mys uper se cre tp assword ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| android Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġcompile Sdk Version ( 3 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġsource Sets [" main "]. manifest . src File (" src / android Main / Android Manifest . xml ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġdefault Config Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġmin Sdk Version ( 2 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġtarget Sdk Version ( 3 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcreate Android Manifest ( project Dir ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbuild Dir Ġ= ĠFile ( project Dir . root , Ġ" build / build kon fig ") ĊĠĠĠĠĠĠĠ Ġbuild Dir . delete Re cursively () ĊĊĠĠĠĠĠĠĠ Ġval Ġrunner Ġ= ĠGradle Runner . create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Project Dir ( project Dir . root ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Plugin Classpath () ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrunner ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Arguments (" generate Build Kon fig ", Ġ"-- stack trace ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result . output ). contains (" BUILD ĠSUCCESS FUL ") ĊĊĠĠĠĠĠĠĠ Ġval Ġcommon Result Ġ= ĠFile ( build Dir , Ġ" common Main / com / sample / build kon fig / issues / Build Kon fig . kt ") ĊĠĠĠĠĠĠĠ ĠassertThat ( common Result . exists ()). isTrue () ĊĊĠĠĠĠĠĠĠ Ġval Ġandroid Result Ġ= ĠFile ( build Dir , Ġ" android Main / com / sample / build kon fig / issues / Build Kon fig . kt ") ĊĠĠĠĠĠĠĠ ĠassertThat ( android Result . exists ()). isFalse () ĊĊĠĠĠĠĠĠĠ Ġval Ġjs Result Ġ= ĠFile ( build Dir , Ġ" js Main / com / sample / build kon fig / issues / Build Kon fig . kt ") ĊĠĠĠĠĠĠĠ ĠassertThat ( js Result . exists ()). isFalse () ĊĠĠĠ Ġ} Ċ }