Добавить реактивный пакет в существующий проект - PullRequest
1 голос
/ 02 мая 2020

У меня есть существующий android студийный проект, и я хочу использовать в своем проекте набор Jetpack. В документации сказано, как создать новый проект с помощью Jetpack Compose, но как использовать его с существующими проектами?

1 Ответ

3 голосов
/ 02 мая 2020

Для создания пакета Jetpack требуется minSdkVersion не менее 21. Поэтому добавьте / обновите следующее в вашем app/build.gradle файле

android{ 
   //...
   defaultConfig {       
      minSdkVersion 21
      targetSdkVersion 29
      //...
   }
  //...
 }

Также вам необходимо использовать Android studio 4.1 (из канарского канала), чтобы использовать jetpack-compose.

Самый простой метод для существующих проектов

Примечание: В настоящее время (по состоянию на 2020-05-02) последняя версия Android Studio (4.1) находится под канарским каналом и использует устаревшую версию зависимостей для jetpack-compose, поэтому рекомендуется настраивать зависимости вручную, как описано в нижнем разделе этого ответа, пока Google не исправит это.

Шаг 1:

В окне проекта right click on the package you want to include the compose activity -> compose -> Empty compose activity.

или

File -> new -> compose -> Empty compose activity.

Шаг 2

Появится диалоговое окно. Заполните обязательные поля и нажмите Finish.

enter image description here

Вот и все.

Ручная настройка для существующих проектов: рекомендуется сейчас, пока Android Studio не станет стабильным

Шаг 1: Используйте последнюю версию kotlin и подключаемые модули Gradle в вашем project/build.gradle file.

Пример:

buildscript {
    ext.kotlin_version = '1.3.71'

    def compose_release_version = "dev10"
    ext.compose_version = "0.1.0-$compose_release_version"
    ext.compose_compiler_extension_version = "0.1.0-$compose_release_version"

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.0-alpha08'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

В вашем project/app/build.gradle добавьте следующее

 android{ 
   //...
   defaultConfig {       
      minSdkVersion 21
      targetSdkVersion 29
      //...
   }
  //...

  kotlinOptions {
       jvmTarget = "1.8"
  }

  buildFeatures {
    compose true
  }
  composeOptions {
    kotlinCompilerVersion "1.3.70-dev-withExperimentalGoogleExtensions-20200424"
    kotlinCompilerExtensionVersion "$compose_compiler_extension_version"
  }
}


dependencies {
  implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version")
  implementation("androidx.compose:compose-runtime:$compose_version")
  implementation("androidx.ui:ui-framework:$compose_version")
  implementation("androidx.ui:ui-layout:$compose_version")
  implementation("androidx.ui:ui-material:$compose_version")
  implementation("androidx.ui:ui-foundation:$compose_version")
  implementation("androidx.ui:ui-animation:$compose_version")
  implementation "androidx.ui:ui-tooling:$compose_version"
  implementation('androidx.appcompat:appcompat:1.1.0')
  implementation('androidx.activity:activity-ktx:1.1.0')
  implementation "androidx.core:core-ktx:1.2.0"
}

Шаг 2: Добавьте композицию действие в ваш файл манифеста.

 <application      
    android:label="@string/app_name"
     <!-- ... -->
     >
    <activity
        android:name=".ui.MainComposeActivity"
        android:label="@string/title_activity_main_compose"
        android:theme="@style/Theme.ComposeExperiment.NoActionBar">
    </activity>

      <!-- ... -->
  </application>

Шаг 3:

Создайте задание, составленное из реактивного пакета.

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

Вот и все. Удачного кодирования:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...