Añadir composición de jetpack a un proyecto existente

He tenido muchos problemas.

tengo un proyecto de estudio Android existente y quiero usar la composición del paquete de jets en mi proyecto. ¿La documentación explica cómo crear un nuevo proyecto usando la composición del paquete de proyectos, pero cómo usarlo para un proyecto existente?

Una solución para mí

jetpack compose requires at least 21 for minSdkVersion. Por lo tanto, añadir/actualizar lo siguiente en el archivo app/build.gradle
android{ 
   //...
   defaultConfig {       
      minSdkVersion 21
      targetSdkVersion 29
      //...
   }
  //...
 }
Además, necesita usar Android studio (del canal canario) para utilizar la composición del paquete de jetpack con las últimas características.

La forma más simple de un proyecto existente


Paso 1:
En la ventana del proyecto, right click on the package you want to include the compose activity -> compose -> Empty compose activity.
O
File -> new -> compose -> Empty compose activity.
Paso 2
Aparece una ventana de diálogo. Rellene los campos requeridos y haga clic en Finish.
enter image description here
Eso es todo.

Configuración manual de los proyectos existentes


Paso 1:
Utilice las últimas versiones de los plug INS Kotlin y gradle en el archivo project/build.gradle.
Ejemplo:
buildscript {
     ext {
    compose_version = '1.0.0-beta08'
}

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.1.0-alpha02'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.10"
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}
En project/app/build.gradle, añádase lo siguiente
android{ 
   //...
   defaultConfig {       
      minSdkVersion 21
      targetSdkVersion 30
      //...
   }
  //...

  kotlinOptions {
       jvmTarget = "1.8"
        useIR = true
  }

  buildFeatures {
    compose true
  }
  composeOptions {
    kotlinCompilerExtensionVersion compose_version
    kotlinCompilerVersion '1.4.32'
}
}


dependencies {
  implementation 'androidx.core:core-ktx:1.5.2'
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'com.google.android.material:material:1.3.0'
implementation "androidx.compose.ui:ui:$compose_version"
implementation "androidx.compose.material:material:$compose_version"
implementation "androidx.compose.ui:ui-tooling:$compose_version"
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1'
implementation 'androidx.activity:activity-compose:1.3.0-beta1'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version"
}
Paso dos:
A ñadir una actividad de escritura al archivo manifiesto.
 <application      
    android:label="@string/app_name"
     <!-- ... -->
     >
     <activity
        android:name=".MainActivity"
        android:exported="true"
        android:label="@string/app_name"
        android:theme="@style/Theme.MyApp.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
   
      <!-- ... -->
  </application>
Paso 3:
Crear una actividad de composición de jetpack.
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.Composable
import androidx.ui.foundation.Text
import androidx.ui.core.setContent
import androidx.ui.material.MaterialTheme
import androidx.ui.tooling.preview.Preview

class MainComposeActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MaterialTheme {
                Greeting("Android")
            }
        }
    }
}

@Composable
fun Greeting(name: String) {
    Text(text = "Hello $name!")
}

@Preview
@Composable
fun DefaultPreview() {
    MaterialTheme {
        Greeting("Android")
    }
}
enter image description here
enter image description here
Eso es todo. Happy Code:)