数据库接口实现

v4
lyy 2 years ago
parent cbd9850b57
commit 616724a762
  1. 9
      AppFrame/build.gradle
  2. 8
      Aria/build.gradle
  3. 5
      FtpComponent/build.gradle
  4. 5
      HttpComponent/build.gradle
  5. 5
      M3U8Component/build.gradle
  6. 19
      PublicComponent/build.gradle
  7. 15
      PublicComponent/src/main/AndroidManifest.xml
  8. 58
      PublicComponent/src/main/java/com/arialyy/aria/core/DuaStartupProvider.kt
  9. 26
      PublicComponent/src/main/java/com/arialyy/aria/core/config/AutoGenerateConstance.kt
  10. 26
      PublicComponent/src/main/java/com/arialyy/aria/core/provider/IDbProvider.kt
  11. 32
      PublicComponent/src/main/java/com/arialyy/aria/orm/DefaultDbProvider.kt
  12. 30
      PublicComponent/src/main/java/com/arialyy/aria/orm/DuaDb.kt
  13. 41
      PublicComponent/src/main/java/com/arialyy/aria/orm/entiry/DEntity.kt
  14. 39
      PublicComponent/src/main/java/com/arialyy/aria/orm/entiry/UEntity.kt
  15. 82
      PublicComponent/src/main/java/com/arialyy/aria/util/ReflectionUtil.java
  16. 5
      SFtpComponent/build.gradle
  17. 4
      app/build.gradle
  18. 14
      build.gradle
  19. 16
      libs.versions.toml
  20. 17
      settings.gradle

@ -9,15 +9,10 @@ android {
defaultConfig { defaultConfig {
minSdkVersion libs.versions.minSdk.get().toInteger() minSdkVersion libs.versions.minSdk.get().toInteger()
targetSdkVersion libs.versions.targetsdk.get().toInteger() targetSdkVersion libs.versions.targetsdk.get().toInteger()
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }
buildTypes { buildTypes {
debug{
debuggable true
}
release { release {
minifyEnabled false minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
@ -37,8 +32,8 @@ dependencies {
androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0', { androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0', {
exclude group: 'com.android.support', module: 'support-annotations' exclude group: 'com.android.support', module: 'support-annotations'
}) })
testImplementation 'junit:junit:4.12' testImplementation libs.bundles.android.test
api "androidx.appcompat:appcompat:${rootProject.ext.XAppcompatVersion}" implementation(libs.appcompat)
api 'com.google.code.gson:gson:2.8.2' api 'com.google.code.gson:gson:2.8.2'
api 'io.reactivex:rxandroid:1.2.0' api 'io.reactivex:rxandroid:1.2.0'
api 'io.reactivex:rxjava:1.1.5' api 'io.reactivex:rxjava:1.1.5'

@ -1,7 +1,6 @@
plugins { plugins {
id 'com.android.library' id 'com.android.library'
id 'org.jetbrains.kotlin.android' id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt'
} }
android { android {
@ -11,13 +10,8 @@ android {
defaultConfig { defaultConfig {
minSdkVersion libs.versions.minSdk.get().toInteger() minSdkVersion libs.versions.minSdk.get().toInteger()
targetSdkVersion libs.versions.targetsdk.get().toInteger() targetSdkVersion libs.versions.targetsdk.get().toInteger()
versionCode rootProject.ext.versionCode
versionName rootProject.ext.versionName
} }
buildTypes { buildTypes {
debug{
debuggable true
}
release { release {
minifyEnabled false minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
@ -31,8 +25,6 @@ dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs') implementation fileTree(include: ['*.jar'], dir: 'libs')
testImplementation(libs.bundles.android.test) testImplementation(libs.bundles.android.test)
implementation(libs.appcompat) implementation(libs.appcompat)
implementation(libs.room.runtime)
kapt libs.room.compiler
api project(path: ':AriaAnnotations') api project(path: ':AriaAnnotations')
api project(path: ':PublicComponent') api project(path: ':PublicComponent')
api project(path: ':HttpComponent') api project(path: ':HttpComponent')

@ -10,17 +10,12 @@ android {
defaultConfig { defaultConfig {
minSdkVersion libs.versions.minSdk.get().toInteger() minSdkVersion libs.versions.minSdk.get().toInteger()
targetSdkVersion libs.versions.targetsdk.get().toInteger() targetSdkVersion libs.versions.targetsdk.get().toInteger()
versionCode rootProject.ext.versionCode
versionName rootProject.ext.versionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'consumer-rules.pro' consumerProguardFiles 'consumer-rules.pro'
} }
buildTypes { buildTypes {
debug{
debuggable true
}
release { release {
minifyEnabled false minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

@ -10,16 +10,11 @@ android {
defaultConfig { defaultConfig {
minSdkVersion libs.versions.minSdk.get().toInteger() minSdkVersion libs.versions.minSdk.get().toInteger()
targetSdkVersion libs.versions.targetsdk.get().toInteger() targetSdkVersion libs.versions.targetsdk.get().toInteger()
versionCode rootProject.ext.versionCode
versionName rootProject.ext.versionName
consumerProguardFiles 'consumer-rules.pro' consumerProguardFiles 'consumer-rules.pro'
} }
buildTypes { buildTypes {
debug{
debuggable true
}
release { release {
minifyEnabled false minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

@ -10,17 +10,12 @@ android {
defaultConfig { defaultConfig {
minSdkVersion libs.versions.minSdk.get().toInteger() minSdkVersion libs.versions.minSdk.get().toInteger()
targetSdkVersion libs.versions.targetsdk.get().toInteger() targetSdkVersion libs.versions.targetsdk.get().toInteger()
versionCode rootProject.ext.versionCode
versionName rootProject.ext.versionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'consumer-rules.pro' consumerProguardFiles 'consumer-rules.pro'
} }
buildTypes { buildTypes {
debug{
debuggable true
}
release { release {
minifyEnabled false minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

@ -1,6 +1,7 @@
plugins { plugins {
id 'com.android.library' id 'com.android.library'
id 'org.jetbrains.kotlin.android' id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt'
} }
android { android {
@ -10,17 +11,12 @@ android {
defaultConfig { defaultConfig {
minSdkVersion libs.versions.minSdk.get().toInteger() minSdkVersion libs.versions.minSdk.get().toInteger()
targetSdkVersion libs.versions.targetsdk.get().toInteger() targetSdkVersion libs.versions.targetsdk.get().toInteger()
versionCode rootProject.ext.versionCode
versionName rootProject.ext.versionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'consumer-rules.pro' consumerProguardFiles 'consumer-rules.pro'
} }
buildTypes { buildTypes {
debug{
debuggable true
}
release { release {
minifyEnabled false minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
@ -35,16 +31,15 @@ android {
dependencies { dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar']) implementation fileTree(dir: 'libs', include: ['*.jar'])
testImplementation 'junit:junit:4.12' testImplementation(libs.bundles.android.test)
implementation "androidx.core:core-ktx:+" implementation(libs.appcompat)
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation(libs.bundles.room)
implementation(libs.startup)
kapt libs.room.compiler
} }
//apply from: 'bintray-release.gradle' //apply from: 'bintray-release.gradle'
ext{ ext{
PUBLISH_ARTIFACT_ID = 'public' PUBLISH_ARTIFACT_ID = 'public'
} }
apply from: '../gradle/mavenCentral-release.gradle' apply from: '../gradle/mavenCentral-release.gradle'
repositories {
mavenCentral()
}

@ -1,12 +1,19 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.arialyy.aria.publiccomponent" > xmlns:tools="http://schemas.android.com/tools"
package="com.arialyy.aria.publiccomponent">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application> <application>
<provider <provider
android:authorities="${applicationId}.com.arialyy.aria.provider" android:name="androidx.startup.InitializationProvider"
android:name="com.arialyy.aria.orm.DbContentProvider" android:authorities="${applicationId}.androidx-startup"
android:exported="false" /> android:exported="false"
tools:node="merge">
<!-- This entry makes ExampleLoggerInitializer discoverable. -->
<meta-data android:name="com.arialyy.aria.core.DuaStartupProvider"
android:value="androidx.startup" />
</provider>
</application> </application>
</manifest> </manifest>

@ -0,0 +1,58 @@
/*
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.arialyy.aria.core
import android.content.Context
import androidx.room.Room
import androidx.room.RoomDatabase
import androidx.room.RoomDatabase.Builder
import androidx.startup.Initializer
import com.arialyy.aria.core.config.AutoGenerateConstance
import com.arialyy.aria.orm.DefaultDbProvider
import com.arialyy.aria.util.ReflectionUtil
class DuaStartupProvider : Initializer<Unit> {
/**
* Find a user-defined database
*/
private fun findCustomDatabase(context: Context): Builder<RoomDatabase>? {
try {
val clazz = javaClass.classLoader.loadClass(AutoGenerateConstance.GenerateClassName)
?: return null
val obj = clazz.newInstance()
val method = ReflectionUtil.getMethod(clazz, "generateDb", Context::class.java) ?: return null
return method.invoke(obj, context) as Builder<RoomDatabase>?
} catch (e: java.lang.Exception) {
return null
}
}
override fun create(context: Context) {
var customDb = findCustomDatabase(context)
if (customDb == null) {
customDb = DefaultDbProvider().generateDb(context)
}
customDb.build()
// .addMigrations(MIGRATION_2_3(), MIGRATION_3_4())
}
override fun dependencies(): MutableList<Class<out Initializer<*>>> {
return mutableListOf()
}
}

@ -0,0 +1,26 @@
/*
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.arialyy.aria.core.config
/**
* Automatically created configurations
*/
object AutoGenerateConstance {
const val GenerateClassName = "com.arialyy.aria.custom.Constance"
const val DbClassKeyName = "roomBuilder"
}

@ -0,0 +1,26 @@
/*
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.arialyy.aria.core.provider
import android.content.Context
import androidx.room.RoomDatabase
interface IDbProvider {
fun getDbName() = "duaDb"
fun <T : RoomDatabase> generateDb(context: Context): RoomDatabase.Builder<T>
}

@ -0,0 +1,32 @@
/*
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.arialyy.aria.orm
import android.content.Context
import androidx.room.Room
import androidx.room.RoomDatabase
import androidx.room.RoomDatabase.Builder
import com.arialyy.aria.core.provider.IDbProvider
class DefaultDbProvider : IDbProvider {
override fun <T : RoomDatabase> generateDb(context: Context): Builder<T> {
return Room.databaseBuilder(
context,
DuaDb::class.java, getDbName()
) as Builder<T>
}
}

@ -0,0 +1,30 @@
/*
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.arialyy.aria.orm
import androidx.room.Database
import androidx.room.RoomDatabase
import com.arialyy.aria.orm.entiry.UEntity
@Database(
entities = [DbEntity::class, UEntity::class],
version = 1
)
abstract class DuaDb : RoomDatabase() {
companion object {
}
}

@ -0,0 +1,41 @@
/*
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.arialyy.aria.orm.entiry
import androidx.room.Entity
import androidx.room.Index
import androidx.room.PrimaryKey
/**
* Download Entity
*/
@Entity(tableName = "d_entity", indices = [Index(value = ["sourceUrl", "savePath"])])
data class DEntity(
@PrimaryKey(autoGenerate = true) val dId: Int = 0,
/**
* file source url
*/
val sourceUrl: String,
/**
* file save path
*/
val savePath: String,
/**
* extended Information
*/
var ext: String? = null
)

@ -0,0 +1,39 @@
/*
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.arialyy.aria.orm.entiry
import androidx.room.Entity
import androidx.room.Index
import androidx.room.PrimaryKey
@Entity(tableName = "u_entity", indices = [Index(value = ["serverUrl", "filePath"])])
data class UEntity(
@PrimaryKey(autoGenerate = true) val uId: Int = 0,
/**
* uploader server url
*/
val serverUrl: String,
/**
* file path
*/
val filePath: String,
/**
* extended Information
*/
var ext: String? = null
)

@ -0,0 +1,82 @@
package com.arialyy.aria.util;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
/**
* Created by lyy on 2015/7/30.
* 反射工具类
*/
public class ReflectionUtil {
private static final String TAG = "ReflectionUtil";
/**
* 获取类里面的所在字段
*/
public static Field[] getFields(Class clazz) {
Field[] fields = null;
fields = clazz.getDeclaredFields();
if (fields == null || fields.length == 0) {
Class superClazz = clazz.getSuperclass();
if (superClazz != null) {
fields = getFields(superClazz);
}
}
return fields;
}
/**
* 获取类里面的指定对象如果该类没有则从父类查询
*/
public static Field getField(Class clazz, String name) {
Field field = null;
try {
field = clazz.getDeclaredField(name);
} catch (NoSuchFieldException e) {
try {
field = clazz.getField(name);
} catch (NoSuchFieldException e1) {
if (clazz.getSuperclass() == null) {
return field;
} else {
field = getField(clazz.getSuperclass(), name);
}
}
}
if (field != null) {
field.setAccessible(true);
}
return field;
}
/**
* 利用递归找一个类的指定方法如果找不到去父亲里面找直到最上层Object对象为止
*
* @param clazz 目标类
* @param methodName 方法名
* @param params 方法参数类型数组
* @return 方法对象
*/
public static Method getMethod(Class clazz, String methodName, final Class<?>... params) {
Method method = null;
try {
method = clazz.getDeclaredMethod(methodName, params);
} catch (NoSuchMethodException e) {
try {
method = clazz.getMethod(methodName, params);
} catch (NoSuchMethodException ex) {
if (clazz.getSuperclass() == null) {
ALog.e(TAG, "无法找到" + methodName + "方法");
ALog.e(TAG, ALog.getExceptionString(e));
return method;
} else {
method = getMethod(clazz.getSuperclass(), methodName, params);
}
}
}
if (method != null) {
method.setAccessible(true);
}
return method;
}
}

@ -10,17 +10,12 @@ android {
defaultConfig { defaultConfig {
minSdkVersion libs.versions.minSdk.get().toInteger() minSdkVersion libs.versions.minSdk.get().toInteger()
targetSdkVersion libs.versions.targetsdk.get().toInteger() targetSdkVersion libs.versions.targetsdk.get().toInteger()
versionCode rootProject.ext.versionCode
versionName rootProject.ext.versionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'consumer-rules.pro' consumerProguardFiles 'consumer-rules.pro'
} }
buildTypes { buildTypes {
debug{
debuggable true
}
release { release {
minifyEnabled false minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

@ -1,6 +1,5 @@
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
apply plugin: 'kotlin-android' apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-kapt'
android { android {
@ -91,6 +90,3 @@ dependencies {
debugImplementation 'com.amitshekhar.android:debug-db:1.0.6' debugImplementation 'com.amitshekhar.android:debug-db:1.0.6'
} }
repositories {
mavenCentral()
}

@ -3,17 +3,21 @@ buildscript {
ext.kotlin_version = '1.7.20' ext.kotlin_version = '1.7.20'
dependencies { dependencies {
classpath files(libs.class.superclass.protectionDomain.codeSource.location) classpath files(libs.class.superclass.protectionDomain.codeSource.location)
classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.4.30" // classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.4.30"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // kotlin // classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // kotlin
} }
} }
plugins { plugins {
id 'com.android.application' version '7.3.1' apply false id 'com.android.application' version '7.4.0' apply false
id 'com.android.library' version '7.3.1' apply false id 'com.android.library' version '7.4.0' apply false
id 'org.jetbrains.kotlin.android' version '1.7.20' apply false id 'org.jetbrains.kotlin.android' version '1.7.20' apply false
} }
task clean(type: Delete) {
delete rootProject.buildDir
}
ext { ext {
versionCode = 390 versionCode = 390
versionName = '3.8.16-beta-1' versionName = '3.8.16-beta-1'
@ -49,4 +53,4 @@ ext {
// androidX // androidX
XAppcompatVersion = "1.1.0" XAppcompatVersion = "1.1.0"
} }

@ -1,22 +1,24 @@
[versions] [versions]
minSdk = "21" minSdk = "23"
compilesdk = "33" compilesdk = "32"
targetsdk = "33" targetsdk = "30"
appcompat = "1.5.1" buildToolsVersion="30.0.2"
appcompat = "1.6.0"
recyclerview = "1.2.1" recyclerview = "1.2.1"
buildToolsVersion="33.0.1" room = "2.5.0"
room = "2.4.3"
test-junit = "4.13.2" test-junit = "4.13.2"
android-junit = "1.1.4" android-junit = "1.1.4"
android-espresso = "3.5.0" android-espresso = "3.5.0"
android-ktx = "1.7.0" android-ktx = "1.7.0"
lifecycle = "2.5.1" lifecycle = "2.5.1"
startup = "1.1.1"
[libraries] [libraries]
recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" } recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" }
room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" } room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" }
room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" } room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" }
room-common = {module = "androidx.room:room-common", version.ref = "room"}
junit = { module = "junit:junit", version.ref = "test-junit" } junit = { module = "junit:junit", version.ref = "test-junit" }
android-junit = { module = "androidx.test.ext:junit", version.ref = "android-junit" } android-junit = { module = "androidx.test.ext:junit", version.ref = "android-junit" }
android-espresso = { module = "androidx.test.espresso:espresso-core", version.ref = "android-espresso" } android-espresso = { module = "androidx.test.espresso:espresso-core", version.ref = "android-espresso" }
@ -25,7 +27,9 @@ appcompat = {module = "androidx.appcompat:appcompat", version.ref = "appcompat"}
lifecycle-viewmodel-ktx = {module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "lifecycle"} lifecycle-viewmodel-ktx = {module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "lifecycle"}
lifecycle-viewmodel-compose = {module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "lifecycle"} lifecycle-viewmodel-compose = {module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "lifecycle"}
lifecycle-runtime-ktx = {module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "lifecycle"} lifecycle-runtime-ktx = {module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "lifecycle"}
startup = {module = "androidx.startup:startup-runtime", version.ref = "startup"}
[bundles] [bundles]
room = ["room-runtime", "room-common"]
android-test = ["android-junit", "android-espresso"] android-test = ["android-junit", "android-espresso"]
lifecycle = ["lifecycle-viewmodel-ktx", "lifecycle-viewmodel-compose", "lifecycle-runtime-ktx"] lifecycle = ["lifecycle-viewmodel-ktx", "lifecycle-viewmodel-compose", "lifecycle-runtime-ktx"]

@ -3,24 +3,37 @@ pluginManagement {
gradlePluginPortal() gradlePluginPortal()
google() google()
mavenCentral() mavenCentral()
maven { url 'https://jitpack.io' }
mavenLocal() mavenLocal()
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
} }
} }
enableFeaturePreview('VERSION_CATALOGS') enableFeaturePreview('VERSION_CATALOGS')
dependencyResolutionManagement { dependencyResolutionManagement {
// repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories { repositories {
google() google()
mavenCentral() mavenCentral()
mavenLocal() mavenLocal()
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://jitpack.io' }
maven {
url 'https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1'
}
} }
versionCatalogs { versionCatalogs {
libs { libs {
from(files("libs.versions.toml")) // from("com.lyy.kpa.version:catalog:0.0.1")
from(files('libs.versions.toml'))
// catalog中的groovy版本
// version("groovy", "3.0.6")
} }
} }
}
}
include ':app', ':Aria', ':AriaAnnotations', ':AriaCompiler', ':AppFrame', ':HttpComponent', ':M3U8Component', ':SFtpComponent', include ':app', ':Aria', ':AriaAnnotations', ':AriaCompiler', ':AppFrame', ':HttpComponent', ':M3U8Component', ':SFtpComponent',
':FtpComponent', ':PublicComponent' ':FtpComponent', ':PublicComponent'
rootProject.name='Aria'
Loading…
Cancel
Save