gradle 适配最新开发工具 android studio2024.2.2

master
hwf452 10 months ago
parent 06bea1aa89
commit 1f59c77b7d

@ -1,8 +1,3 @@
//plugins {
// id 'com.android.application'
// id 'org.jetbrains.kotlin.android'
//}
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
@ -48,7 +43,6 @@ android {
abortOnError false
}
minifyEnabled false //
zipAlignEnabled true // zip
debuggable false // debug
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
//apk
@ -89,35 +83,23 @@ dependencies {
implementation 'com.squareup.okhttp3:logging-interceptor:4.9.0'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
//implementation 'org.litepal.android:core:1.5.1'//
implementation 'com.github.huangyanbin:SmartTable:2.2.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'de.hdodenhof:circleimageview:3.1.0'
implementation 'com.github.wanglu1209:PhotoViewer:0.50'
implementation 'io.github.azhon:appupdate:4.2.6'
implementation 'com.tencent.bugly:crashreport:3.2.1'
implementation 'com.github.xuexiangjys:XUI:1.1.4'
implementation 'org.greenrobot:eventbus:3.0.0'
//implementation 'com.zhihu.android:matisse:0.5.3-beta3'//
implementation libs.logging.interceptor
implementation libs.retrofit
implementation libs.com.squareup.retrofit2.converter.gson5
implementation libs.smarttable
implementation libs.androidx.recyclerview
implementation libs.circleimageview
implementation libs.photoviewer
implementation libs.appupdate
implementation libs.crashreport
implementation libs.xui
implementation libs.eventbus
//
implementation 'io.github.justson:agentweb-core:v5.1.1-androidx'
//implementation 'com.lcodecorex:tkrefreshlayout:1.0.7'//
implementation 'androidx.multidex:multidex:2.0.1'
implementation libs.agentweb.core
implementation libs.androidx.multidex
// implementation 'androidx.core:core-ktx:1.9.0'
// implementation 'androidx.appcompat:appcompat:1.6.1'
// implementation 'com.google.android.material:material:1.8.0'
// implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
// implementation 'androidx.activity:activity:1.8.0'
//
//
//
implementation project(':videocompressor')
//
@ -134,60 +116,41 @@ dependencies {
//SDK
implementation files('libs/SangforSDK.aar')
implementation 'de.hdodenhof:circleimageview:3.1.0'
implementation libs.circleimageview
//APP
implementation 'com.tencent.bugly:crashreport:3.2.1'
implementation libs.crashreport
//
// PictureSelector basic (Necessary)
implementation 'io.github.lucksiege:pictureselector:v3.10.7'
implementation libs.pictureselector
// image compress library (Not necessary)
implementation 'io.github.lucksiege:compress:v3.10.7'
implementation libs.compress
// uCrop library (Not necessary)
implementation 'io.github.lucksiege:ucrop:v3.10.7'
implementation libs.ucrop
// simple camerax library (Not necessary)
implementation 'io.github.lucksiege:camerax:v3.10.7'
implementation libs.camerax
//
implementation 'com.github.bumptech.glide:glide:4.11.0'
implementation 'androidx.annotation:annotation:1.6.0'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.1'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
implementation libs.glide
implementation libs.annotation
implementation libs.androidx.lifecycle.livedata.ktx
implementation libs.androidx.lifecycle.viewmodel.ktx
annotationProcessor libs.compiler
//
implementation 'cn.hutool:hutool-all:5.8.5'
//implementation 'cn.hutool:hutool-crypto:5.7.16'
implementation 'org.bouncycastle:bcprov-jdk15on:1.65'
implementation libs.cn.hutool.all
implementation libs.bcprov.jdk15on
//mqtt
implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.4'
implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'
implementation 'org.bouncycastle:bcpkix-jdk15on:1.56'
implementation 'commons-codec:commons-codec:1.15'
implementation libs.paho.org.eclipse.paho.client.mqttv3
implementation libs.paho.org.eclipse.paho.android.service
implementation libs.bcpkix.jdk15on
implementation libs.commons.codec.commons.codec4
//广
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
implementation libs.androidx.localbroadcastmanager.localbroadcastmanager
//
implementation 'com.google.mlkit:face-detection:16.1.6'
// CameraX core library using the camera2 implementation
def camerax_version = "1.4.0-alpha04"
// The following line is optional, as the core library is included indirectly by camera-camera2
implementation "androidx.camera:camera-core:${camerax_version}"
implementation "androidx.camera:camera-camera2:${camerax_version}"
// If you want to additionally use the CameraX Lifecycle library
implementation "androidx.camera:camera-lifecycle:${camerax_version}"
// If you want to additionally use the CameraX VideoCapture library
implementation "androidx.camera:camera-video:${camerax_version}"
// If you want to additionally use the CameraX View class
implementation "androidx.camera:camera-view:${camerax_version}"
// If you want to additionally add CameraX ML Kit Vision Integration
implementation "androidx.camera:camera-mlkit-vision:${camerax_version}"
// If you want to additionally use the CameraX Extensions library
implementation "androidx.camera:camera-extensions:${camerax_version}"
implementation libs.com.google.mlkit.face.detection2
//
implementation libs.barcode.scanning
// testImplementation 'junit:junit:4.13.2'
// androidTestImplementation 'androidx.test.ext:junit:1.1.5'
// androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
configurations {
all*.exclude group: 'com.google.code.gson'
}

@ -78,6 +78,7 @@
tools:replace="android:allowBackup"
tools:targetApi="s">
<activity
android:name=".ui.activity.LoginActivity"
android:exported="true"
@ -128,6 +129,10 @@
android:name=".base.MipcaActivityCapture"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.QrCodeActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.SisBaseActivity"
android:exported="false"

@ -0,0 +1,45 @@
package com.rehome.dywoa.Listener
import android.annotation.SuppressLint
import android.util.Log
import androidx.camera.core.ImageAnalysis
import androidx.camera.core.ImageProxy
import com.google.mlkit.vision.barcode.Barcode
import com.google.mlkit.vision.barcode.BarcodeScannerOptions
import com.google.mlkit.vision.barcode.BarcodeScanning
import com.google.mlkit.vision.common.InputImage
class QRCodeAnalyser(private val listener: (List<Barcode>, Int, Int) -> Unit) :
ImageAnalysis.Analyzer {
//配置当前扫码格式
private val options = BarcodeScannerOptions.Builder()
.setBarcodeFormats(
Barcode.FORMAT_QR_CODE,
Barcode.FORMAT_AZTEC
).build()
//获取解析器
private val detector = BarcodeScanning.getClient(options)
@SuppressLint("UnsafeExperimentalUsageError", "UnsafeOptInUsageError")
override fun analyze(imageProxy: ImageProxy) {
val mediaImage = imageProxy.image ?: kotlin.run {
imageProxy.close()
return
}
val image = InputImage.fromMediaImage(mediaImage, imageProxy.imageInfo.rotationDegrees)
detector.process(image)
.addOnSuccessListener { barCodes ->
Log.i("app", "barCodes: ${barCodes.size}")
if (barCodes.size > 0) {
listener.invoke(barCodes, imageProxy.width, imageProxy.height)
//接收到结果后,就关闭解析
detector.close()
}
}
.addOnFailureListener { Log.i("app", "Error: ${it.message}") }
.addOnCompleteListener { imageProxy.close() }
}
}

@ -27,15 +27,9 @@ import java.util.Calendar
class KksSearchActivity : BaseActivityOaToolbarViewBinding<ActivityKksSearchBinding>() {
private val QRCODE_SCAN_CAMERA_REQUEST_CODE = 4 //扫描二維码请求摄像头权限
private var qrCodeStrSearch: String? = null
private val permission = arrayOf(
Manifest.permission.CAMERA,
Manifest.permission.WRITE_EXTERNAL_STORAGE
)
private lateinit var launcherResultQRCode: ActivityResultLauncher<Intent>
override fun getViewBinding() = ActivityKksSearchBinding.inflate(layoutInflater)
@ -79,56 +73,17 @@ class KksSearchActivity : BaseActivityOaToolbarViewBinding<ActivityKksSearchBind
}
}
/**
* 申请权限回调
*
* @param requestCode
* @param permissions
* @param grantResults
*/
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<String?>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
//扫描二维码
if (QRCODE_SCAN_CAMERA_REQUEST_CODE == requestCode) {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
val intent = Intent(this, MipcaActivityCapture::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
launcherResultQRCode.launch(intent)
} else {
//权限拒绝
Toast.makeText(
this,
"权限拒绝,无法打开摄像头,请手动设置开启APP访问摄像头权限",
Toast.LENGTH_SHORT
).show()
}
}
private fun intentTOQRCode() {
val intentMHJ = Intent(this, QrCodeActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
launcherResultQRCode.launch(intentMHJ)
}
/**
* 跳转到扫码界面扫码
*/
private fun goScan() {
//检查是否有相机权限
if (ContextCompat.checkSelfPermission(
this,
Manifest.permission.CAMERA
) == PackageManager.PERMISSION_GRANTED
) {
val intent = Intent(this, MipcaActivityCapture::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
launcherResultQRCode.launch(intent)
} else {
ActivityCompat.requestPermissions(
this,
permission,
QRCODE_SCAN_CAMERA_REQUEST_CODE
)
}
intentTOQRCode();
}
//创建一个ActivityResultLauncher
@ -139,7 +94,7 @@ class KksSearchActivity : BaseActivityOaToolbarViewBinding<ActivityKksSearchBind
val resultCode = it.resultCode
if (resultCode == RESULT_OK) {
if (data != null) {
val qrCodeStr: String = data.getStringExtra("result").toString()
val qrCodeStr = data.getStringExtra("code") ?: ""
showLog(qrCodeStr)
if(!TextUtils.isEmpty(qrCodeStr)){
if(qrCodeStr.startsWith("KK:",false)){

@ -0,0 +1,185 @@
package com.rehome.dywoa.ui.activity
import android.Manifest
import android.annotation.SuppressLint
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Rect
import android.graphics.RectF
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.camera.core.ImageCapture
import androidx.camera.view.LifecycleCameraController
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import com.rehome.dywoa.databinding.ActivityQrCodeBinding
import com.rehome.dywoa.Listener.QRCodeAnalyser
import com.rehome.dywoa.base.BaseActivityOaToolbarViewBinding
import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors
/**
* date:2025/02/13 10:05:28
* author:HuangWenfei
* description:二维码扫描
*/
class QrCodeActivity : BaseActivityOaToolbarViewBinding<ActivityQrCodeBinding>() {
private lateinit var lifecycleCameraController: LifecycleCameraController
private lateinit var cameraExecutor: ExecutorService
private val CAMERA_REQUEST_CAMERA_SCAN: Int = 88 //请求码
// override fun onCreate(savedInstanceState: Bundle?) {
// super.onCreate(savedInstanceState)
// binding = ActivityQrCodeBinding.inflate(layoutInflater)
// setContentView(binding.root)
// initController()
// }
override fun getViewBinding() = ActivityQrCodeBinding.inflate(layoutInflater)
override fun getToolbar()= binding.toolbarView.toolbar
override fun initView() {
initToolbar("二维码/条码扫描")
setLeftOnClickListener { finish() }
checkPermission()
//initController()
}
override fun initData() {
}
private fun checkPermission(){
//检测摄像头权限
if (!context.packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY)) {
binding.frCamera.visibility=View.GONE
Toast.makeText(
context,
"权限拒绝,请手动设置开启APP访问摄像头权限",
Toast.LENGTH_LONG
).show()
return
}
//动态权限申请
if (ContextCompat.checkSelfPermission(
context,
Manifest.permission.CAMERA
) != PackageManager.PERMISSION_GRANTED
) {
binding.frCamera.visibility=View.GONE
//权限请求
ActivityCompat.requestPermissions(
this,
arrayOf<String>(Manifest.permission.CAMERA),
CAMERA_REQUEST_CAMERA_SCAN
)
} else {
//已授权,打开摄像头扫描
initController()
}
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (CAMERA_REQUEST_CAMERA_SCAN == requestCode) {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
binding.frCamera.visibility=View.VISIBLE
//已授权,打开摄像头扫描
initController()
} else {
binding.frCamera.visibility=View.GONE
//权限拒绝
Toast.makeText(
this,
"权限拒绝,请手动设置开启APP访问摄像头权限",
Toast.LENGTH_SHORT
).show()
}
}
}
@SuppressLint("ClickableViewAccessibility", "UnsafeOptInUsageError")
private fun initController() {
cameraExecutor = Executors.newSingleThreadExecutor()
lifecycleCameraController = LifecycleCameraController(this)
lifecycleCameraController.bindToLifecycle(this)
lifecycleCameraController.imageCaptureFlashMode = ImageCapture.FLASH_MODE_AUTO
lifecycleCameraController.setImageAnalysisAnalyzer(
cameraExecutor,
QRCodeAnalyser { barcodes, imageWidth, imageHeight ->
if (barcodes.isEmpty()) {
return@QRCodeAnalyser
}
initScale(imageWidth, imageHeight)
val list = ArrayList<RectF>()
val strList = ArrayList<String>()
barcodes.forEach { barcode ->
barcode.boundingBox?.let { rect ->
val translateRect = translateRect(rect)
list.add(translateRect)
// Log.e(
// "ztzt", "left${translateRect.left} +" +
// " top${translateRect.top} + right${translateRect.right}" +
// " + bottom${translateRect.bottom}"
// )
// Log.e("ztzt", "barcode.rawValue${barcode.rawValue}")
strList.add(barcode.rawValue ?: "No Value")
}
}
judgeIntent(strList)
binding.scanView.setRectList(list)
})
binding.previewView.controller = lifecycleCameraController
}
private fun judgeIntent(list: ArrayList<String>) {
val sb = StringBuilder()
list.forEach {
sb.append(it)
//sb.append("\n")
}
intentToResult(sb.toString())
}
private fun intentToResult(result: String) {
val resultIntent = Intent()
val bundle = Bundle()
bundle.putString("code", result)
resultIntent.putExtras(bundle)
setResult(RESULT_OK, resultIntent)
finish();
}
private var scaleX = 0f
private var scaleY = 0f
private fun translateX(x: Float): Float = x * scaleX
private fun translateY(y: Float): Float = y * scaleY
//将扫描的矩形换算为当前屏幕大小
private fun translateRect(rect: Rect) = RectF(
translateX(rect.left.toFloat()),
translateY(rect.top.toFloat()),
translateX(rect.right.toFloat()),
translateY(rect.bottom.toFloat())
)
//初始化缩放比例
private fun initScale(imageWidth: Int, imageHeight: Int) {
//Log.e("ztzt", "imageWidth${imageWidth} + imageHeight${imageHeight}")
scaleY = binding.scanView.height.toFloat() / imageWidth.toFloat()
scaleX = binding.scanView.width.toFloat() / imageHeight.toFloat()
//Log.e("ztzt", "scaleX${scaleX} + scaleY${scaleY}")
}
}

@ -0,0 +1,89 @@
package com.rehome.dywoa.weiget
import android.animation.ObjectAnimator
import android.content.Context
import android.graphics.*
import android.util.AttributeSet
import android.view.View
import androidx.core.content.ContextCompat
import com.rehome.dywoa.R
/**
* Author:HuangWenfei
* description: 二维码扫描
* date2025/02/13
*/
class ScanView(context: Context, attrs: AttributeSet) : View(context, attrs) {
private val circlePaint = Paint() //二维码圆圈画笔
private var rectList: ArrayList<RectF>? = null //二维码数组
private var scanLine: Bitmap//横线
private var isShowLine = true//是否显示扫描线
private var animator: ObjectAnimator? = null
private var floatYFraction = 0f
set(value) {
field = value
invalidate()
}
init {
circlePaint.apply {
this.style = Paint.Style.FILL
this.color = ContextCompat.getColor(
context, android.R.color.holo_green_dark
)
}
scanLine = BitmapFactory.decodeResource(resources, R.drawable.scan_light)
getAnimator().start()
}
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
parseResult(canvas)
if (isShowLine) {
canvas.drawBitmap(scanLine, (width - scanLine.width) / 2f, height * floatYFraction, circlePaint)
}
}
private fun getAnimator(): ObjectAnimator {
if (animator == null) {
animator = ObjectAnimator.ofFloat(
this,
"floatYFraction",
0f,
1f
)
animator?.duration = 3000
animator?.repeatCount = -1 //-1代表无限循环
}
return animator!!
}
private fun parseResult(canvas: Canvas?) {
rectList?.let { list ->
if (list.isEmpty()) {
return
}
list.forEach {
canvas?.drawCircle(
it.left + (it.right - it.left) / 2f,
it.top + (it.bottom - it.top) / 2f,
50f,
circlePaint
)
}
}
}
fun setRectList(list: ArrayList<RectF>?) {
rectList = list
rectList?.let {
if (it.isNotEmpty()) {
isShowLine = false
getAnimator().cancel()
invalidate()
}
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#00ffffff" />
<stroke
android:width="2dp"
android:color="#FF00FF00" />
<corners
android:bottomLeftRadius="1px"
android:bottomRightRadius="1px"
android:topLeftRadius="1px"
android:topRightRadius="1px" />
</shape>

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ui.activity.QrCodeActivity">
<include
android:id="@+id/toolbarView"
layout="@layout/layout_base" />
<FrameLayout
android:id="@+id/fr_camera"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.camera.view.PreviewView
android:id="@+id/previewView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_gravity="center"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/scan_bg"
android:orientation="vertical">
<com.rehome.dywoa.weiget.ScanView
android:id="@+id/scanView"
android:layout_width="250dp"
android:layout_height="250dp"
android:background="@android:color/transparent" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:textSize="16sp"
android:textColor="#666666"
android:textStyle="bold"
android:text="@string/scan_text"/>
</LinearLayout>
</FrameLayout>
</LinearLayout>

@ -102,4 +102,7 @@
<string name="the_second_step_tip_desc">密码长度不能小于8位且必须为大小写字母、数字和特殊字符组成</string>
<string name="common_code_input_hint">输入验证码(必填)</string>
<string name="common_code_send">发送验证码</string>
<string name="scan_text">将二维码/条码放入框内即可扫描</string>
<string name="shanke_sign">签到</string>
<string name="shan_please_sign">请扫描二维码进行签到</string>
</resources>

@ -11,5 +11,5 @@ android {
}
dependencies {
implementation libs.androidx.appcompat.v170
implementation libs.androidx.appcompat
}

@ -1,36 +1,86 @@
[versions]
agentwebCore = "v5.1.1-androidx"
agp = "8.8.0"
androidxAppcompatVersion = "1.1.0"
annotationVersion = "1.8.2"
appcompatVersion = "1.7.0"
androidxLocalbroadcastmanager = "1.1.0"
annotationVersion = "1.9.1"
appupdate = "4.2.6"
bcpkixJdk15on = "1.67"
circleimageview = "3.1.0"
commonsCodecCommonsCodec2 = "1.15"
crashreport = "4.1.9.3"
eventbus = "3.3.1"
glide = "4.11.0"
hutoolAllVersion = "5.8.5"
kotlin = "1.9.24"
coreKtx = "1.10.1"
coreKtx = "1.15.0"
junit = "4.13.2"
junitVersion = "1.1.5"
espressoCore = "3.5.1"
appcompat = "1.6.1"
material = "1.10.0"
activity = "1.8.0"
constraintlayout = "2.1.4"
recyclerview = "1.3.0"
junitVersion = "1.2.1"
espressoCore = "3.6.1"
appcompat = "1.7.0"
library = "1.0.4"
lifecycleLivedataKtx = "2.6.2"
lifecycleViewmodelKtx = "2.6.2"
loggingInterceptor = "4.9.0"
material = "1.12.0"
activity = "1.10.0"
constraintlayout = "2.2.0"
multidex = "2.0.1"
orgEclipsePahoClientMqttv3Version = "1.2.4"
orgEclipsePahoAndroidServiceVersion = "1.1.1"
photoviewer = "0.50"
pictureselector = "v3.10.7"
recyclerview = "1.4.0"
retrofit = "2.9.0"
smarttable = "2.2.0"
squareupPicasso = "2.5.2"
barcodeScanning = "16.1.1"
supportV4 = "28.0.0"
xui = "1.2.1"
[libraries]
androidx-appcompat-v170 = { module = "androidx.appcompat:appcompat", version.ref = "appcompatVersion" }
agentweb-core = { module = "io.github.justson:agentweb-core", version.ref = "agentwebCore" }
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "lifecycleViewmodelKtx" }
androidx-lifecycle-livedata-ktx = { module = "androidx.lifecycle:lifecycle-livedata-ktx", version.ref = "lifecycleLivedataKtx" }
androidx-localbroadcastmanager-localbroadcastmanager = { module = "androidx.localbroadcastmanager:localbroadcastmanager", version.ref = "androidxLocalbroadcastmanager" }
androidx-multidex = { module = "androidx.multidex:multidex", version.ref = "multidex" }
androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" }
annotation = { module = "androidx.annotation:annotation", version.ref = "annotationVersion" }
appcompat-v110 = { module = "androidx.appcompat:appcompat", version.ref = "androidxAppcompatVersion" }
appupdate = { module = "io.github.azhon:appupdate", version.ref = "appupdate" }
bcpkix-jdk15on = { module = "org.bouncycastle:bcpkix-jdk15on", version.ref = "bcpkixJdk15on" }
bcprov-jdk15on = { module = "org.bouncycastle:bcprov-jdk15on", version.ref = "bcpkixJdk15on" }
camerax = { module = "io.github.lucksiege:camerax", version.ref = "pictureselector" }
circleimageview = { module = "de.hdodenhof:circleimageview", version.ref = "circleimageview" }
cn-hutool-all = { module = "cn.hutool:hutool-all", version.ref = "hutoolAllVersion" }
com-google-mlkit-face-detection2 = { module = "com.google.mlkit:face-detection", version.ref = "barcodeScanning" }
com-squareup-picasso-picasso = { module = "com.squareup.picasso:picasso", version.ref = "squareupPicasso" }
com-squareup-retrofit2-converter-gson5 = { module = "com.squareup.retrofit2:converter-gson", version.ref = "retrofit" }
commons-codec-commons-codec4 = { module = "commons-codec:commons-codec", version.ref = "commonsCodecCommonsCodec2" }
compiler = { module = "com.github.bumptech.glide:compiler", version.ref = "glide" }
compress = { module = "io.github.lucksiege:compress", version.ref = "pictureselector" }
crashreport = { module = "com.tencent.bugly:crashreport", version.ref = "crashreport" }
eventbus = { module = "org.greenrobot:eventbus", version.ref = "eventbus" }
glide = { module = "com.github.bumptech.glide:glide", version.ref = "glide" }
junit = { group = "junit", name = "junit", version.ref = "junit" }
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
library = { module = "it.sephiroth.android.library.imagezoom:library", version.ref = "library" }
logging-interceptor = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "loggingInterceptor" }
material = { group = "com.google.android.material", name = "material", version.ref = "material" }
androidx-activity = { group = "androidx.activity", name = "activity", version.ref = "activity" }
androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" }
barcode-scanning = { module = "com.google.mlkit:barcode-scanning", version.ref = "barcodeScanning" }
paho-org-eclipse-paho-android-service = { module = "org.eclipse.paho:org.eclipse.paho.android.service", version.ref = "orgEclipsePahoAndroidServiceVersion" }
paho-org-eclipse-paho-client-mqttv3 = { module = "org.eclipse.paho:org.eclipse.paho.client.mqttv3", version.ref = "orgEclipsePahoClientMqttv3Version" }
photoviewer = { module = "com.github.wanglu1209:PhotoViewer", version.ref = "photoviewer" }
pictureselector = { module = "io.github.lucksiege:pictureselector", version.ref = "pictureselector" }
recyclerview-v7 = { module = "com.android.support:recyclerview-v7", version.ref = "supportV4" }
smarttable = { module = "com.github.huangyanbin:SmartTable", version.ref = "smarttable" }
retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
support-v4 = { module = "com.android.support:support-v4", version.ref = "supportV4" }
ucrop = { module = "io.github.lucksiege:ucrop", version.ref = "pictureselector" }
xui = { module = "com.github.xuexiangjys:XUI", version.ref = "xui" }
[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }

@ -12,11 +12,10 @@ android {
}
dependencies {
implementation libs.appcompat.v110
implementation libs.androidx.appcompat
implementation libs.annotation
implementation libs.androidx.recyclerview
//noinspection UseTomlInstead
implementation 'it.sephiroth.android.library.imagezoom:library:1.0.4'
implementation libs.library
compileOnly libs.glide
compileOnly libs.com.squareup.picasso.picasso
}

@ -11,6 +11,6 @@ android {
}
dependencies {
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation libs.support.v4
implementation libs.recyclerview.v7
}
Loading…
Cancel
Save