From 0ec9693c39a910233fc186a8cefab9f61030df78 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期五, 07 三月 2025 18:09:32 +0800
Subject: [PATCH] refactor(generallibrary):重构网络请求模块

---
 generallibrary/src/main/java/com/dayu/general/net/NetConstans.kt                |    1 
 generallibrary/src/main/java/com/dayu/general/bean/net/SearchUserBeanRequest.kt |   70 +++++
 qiheonlinelibrary/build.gradle                                                  |    4 
 qihealonelibrary/build.gradle                                                   |    4 
 pickerviewlibrary/build.gradle                                                  |    4 
 generallibrary/src/main/java/com/dayu/general/bean/net/SearchUserResult.kt      |   28 ++
 easysocket/src/main/AndroidManifest.xml                                         |    2 
 baselibrary/build.gradle                                                        |   10 
 gradlew.bat                                                                     |    1 
 generallibrary/src/main/java/com/dayu/general/net/ApiService.kt                 |   10 
 build.gradle                                                                    |    7 
 generallibrary/src/main/AndroidManifest.xml                                     |    3 
 generallibrary/src/main/java/com/dayu/general/net/MyJsonParser.kt               |  259 ++++++++++++++++++
 henanlibrary/build.gradle                                                       |    4 
 generallibrary/src/main/java/com/dayu/general/net/BaseResponse.kt               |    2 
 generallibrary/src/main/java/com/dayu/general/bean/net/BaseResult.kt            |    9 
 gradlew                                                                         |   35 +
 henanlibrary/src/main/AndroidManifest.xml                                       |    3 
 app/src/main/AndroidManifest.xml                                                |    2 
 generallibrary/src/main/java/com/dayu/general/net/RetrofitClient.kt             |   21 
 generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt    |   86 ++++-
 easysocket/build.gradle                                                         |    6 
 generallibrary/src/main/java/com/dayu/general/net/MyIntercepterApplication.kt   |    8 
 baselibrary/src/main/AndroidManifest.xml                                        |    6 
 generallibrary/src/main/java/com/dayu/general/net/ApiManager.kt                 |  247 +++++++++--------
 ocridcardlibrary/build.gradle                                                   |    3 
 baselibrary/src/main/java/com/dayu/baselibrary/tools/print/ShangMiAidlUtil.java |    2 
 27 files changed, 642 insertions(+), 195 deletions(-)

diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 451c135..880e013 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.dayu.henanlibrary">
+  >
 
     <uses-permission android:name="android.permission.NFC" />
     <!--鐢ㄤ簬璁块棶缃戠粶锛岀綉缁滃畾浣嶉渶瑕佷笂缃�-->
diff --git a/baselibrary/build.gradle b/baselibrary/build.gradle
index a2a0dfa..cbf5578 100644
--- a/baselibrary/build.gradle
+++ b/baselibrary/build.gradle
@@ -1,7 +1,8 @@
 apply plugin: 'com.android.library'
 
 android {
-    compileSdk 33
+    namespace 'com.dayu.baselibrary'
+    compileSdk 34
     defaultConfig {
         minSdk 23
         targetSdk 26
@@ -26,12 +27,17 @@
     viewBinding {
         enabled = true;
     }
+    sourceSets {
+        main {
+            aidl.srcDirs = ['src/main/aidl']
+        }
+    }
 }
 
 dependencies {
 
 
-    compileOnly fileTree(include: ['*.jar'], dir: 'exlibs')
+    implementation fileTree(include: ['*.jar'], dir: 'exlibs')
 
     implementation 'com.android.support:appcompat-v7:28.0.0'
     implementation 'com.android.support.constraint:constraint-layout:1.1.3'
diff --git a/baselibrary/src/main/AndroidManifest.xml b/baselibrary/src/main/AndroidManifest.xml
index 894f91e..3179967 100644
--- a/baselibrary/src/main/AndroidManifest.xml
+++ b/baselibrary/src/main/AndroidManifest.xml
@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.dayu.baselibrary">
-
+   >
+    <queries>
+        <package android:name="woyou.aidlservice.jiuiv5" />
+    </queries>
     <application
         android:allowBackup="true"
         android:supportsRtl="true"
diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/tools/print/ShangMiAidlUtil.java b/baselibrary/src/main/java/com/dayu/baselibrary/tools/print/ShangMiAidlUtil.java
index 4ff30e0..c643e29 100644
--- a/baselibrary/src/main/java/com/dayu/baselibrary/tools/print/ShangMiAidlUtil.java
+++ b/baselibrary/src/main/java/com/dayu/baselibrary/tools/print/ShangMiAidlUtil.java
@@ -25,6 +25,8 @@
 import woyou.aidlservice.jiuiv5.ICallback;
 import woyou.aidlservice.jiuiv5.IWoyouService;
 
+
+
 /**
  * 鍟嗙背鎵撳嵃妯″潡鐩稿叧浠g爜
  */
diff --git a/build.gradle b/build.gradle
index 10e4aeb..b590da7 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,4 +1,9 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
+buildscript {
+    ext {
+        agp_version = '8.2.0'
+        agp_version1 = '7.2.2'
+    }
+}// Top-level build file where you can add configuration options common to all sub-projects/modules.
 plugins {
     id 'com.android.application' version '7.2.2' apply false
     id 'com.android.library' version '7.2.2' apply false
diff --git a/easysocket/build.gradle b/easysocket/build.gradle
index bd5fdf8..54e0968 100644
--- a/easysocket/build.gradle
+++ b/easysocket/build.gradle
@@ -1,6 +1,7 @@
 apply plugin: 'com.android.library'
 android {
-    compileSdkVersion 27
+    namespace 'com.easysocket'
+    compileSdk 34
     //buildToolsVersion rootProject.ext.android.buildToolsVersion
 
     defaultConfig {
@@ -26,5 +27,4 @@
     compileOnly 'com.tencent.bugly:crashreport:4.1.9.3'
 }
 
-sourceCompatibility = "7"
-targetCompatibility = "7"
+
diff --git a/easysocket/src/main/AndroidManifest.xml b/easysocket/src/main/AndroidManifest.xml
index e18d960..07f0047 100644
--- a/easysocket/src/main/AndroidManifest.xml
+++ b/easysocket/src/main/AndroidManifest.xml
@@ -1,4 +1,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.socket" >
+    >
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 </manifest>
diff --git a/generallibrary/src/main/AndroidManifest.xml b/generallibrary/src/main/AndroidManifest.xml
index 593d0cb..5f247eb 100644
--- a/generallibrary/src/main/AndroidManifest.xml
+++ b/generallibrary/src/main/AndroidManifest.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.dayu.henanlibrary">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
 
     <uses-permission android:name="android.permission.NFC" />
     <!--鐢ㄤ簬璁块棶缃戠粶锛岀綉缁滃畾浣嶉渶瑕佷笂缃�-->
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt
index c0fb6d5..1a655b0 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt
@@ -1,11 +1,15 @@
 package com.dayu.general.activity
 
 import android.os.Bundle
-import android.widget.Toast
+import com.dayu.baselibrary.net.subscribers.SubscriberListener
+import com.dayu.baselibrary.utils.ToastUtil
 import com.dayu.baselibrary.view.TitleBar.ClickType_LEFT_IMAGE
 import com.dayu.baselibrary.view.TitleBar.ClickType_RIGHT_IMAGE
+import com.dayu.general.bean.net.SearchUserResult
 import com.dayu.general.databinding.ActivitySearchUserGeBinding
 import com.dayu.general.dialog.SearchDialog
+import com.dayu.general.net.BaseResponse
+import com.dayu.qiheonlinelibrary.net.ApiManager
 
 /**
  * @author: zuo
@@ -44,31 +48,69 @@
             searchDialog.show()
         }
     }
+
     /**
      * 鎵ц鎼滅储閫昏緫
      * 杩欓噷鍙槸涓�涓ず渚嬫柟娉曪紝瀹為檯搴旂敤涓渶瑕佹牴鎹叿浣撻渶姹傚疄鐜�
      */
     private fun performSearch(farmerId: String, farmerName: String, cardNumber: String) {
-        // 杩欓噷鍙互瀹炵幇瀹為檯鐨勬悳绱㈤�昏緫
-        // 渚嬪锛氳皟鐢ˋPI銆佹煡璇㈡暟鎹簱绛�
-
-        // 绀轰緥锛氭瀯寤烘悳绱㈡潯浠�
-        val searchConditions = mutableMapOf<String, String>()
-
-        if (farmerId.isNotEmpty()) {
-            searchConditions["farmerId"] = farmerId
-        }
-
-        if (farmerName.isNotEmpty()) {
-            searchConditions["farmerName"] = farmerName
-        }
-
-        if (cardNumber.isNotEmpty()) {
-            searchConditions["cardNumber"] = cardNumber
-        }
-
-        // 鏍规嵁鎼滅储鏉′欢鎵ц鎼滅储
-        // 瀹為檯搴旂敤涓紝杩欓噷鍙兘鏄綉缁滆姹傛垨鏁版嵁搴撴煡璇�
-        // searchRepository.search(searchConditions)
+        // 璋冪敤瀹為檯鐨勬悳绱PI
+        searchUser(farmerId, farmerName, cardNumber)
     }
+
+    private fun searchUser(farmerId: String, farmerName: String, cardNumber: String) {
+        val map = mutableMapOf<String, String>()
+        
+        if (farmerId.isNotEmpty()) {
+            map["farmerId"] = farmerId
+        }
+        
+        if (farmerName.isNotEmpty()) {
+            map["farmerName"] = farmerName
+        }
+        
+        if (cardNumber.isNotEmpty()) {
+            map["cardNumber"] = cardNumber
+        }
+
+        // 浣跨敤姝g‘鐨勭被鍨嬪弬鏁�
+        ApiManager.getInstance().requestGetLoading(
+            this,
+            "searchUser",
+            SearchUserResult::class.java,
+            map,
+            object : SubscriberListener<BaseResponse<SearchUserResult>>() {
+                override fun onNext(t: BaseResponse<SearchUserResult>) {
+                    if (t.success) {
+                        // 澶勭悊鎼滅储鎴愬姛鐨勬儏鍐�
+                        val result = t.content
+                        if (result != null) {
+                            // 澶勭悊鎼滅储缁撴灉
+                            handleSearchResult(result)
+                        } else {
+                            ToastUtil.show("鏈壘鍒板尮閰嶇殑鐢ㄦ埛")
+                        }
+                    } else {
+                        // 澶勭悊鎼滅储澶辫触鐨勬儏鍐�
+                        ToastUtil.show(t.msg)
+                    }
+                }
+                
+                override fun onError(e: Throwable?) {
+                    super.onError(e)
+                    ToastUtil.show("鎼滅储澶辫触: ${e?.message ?: "鏈煡閿欒"}")
+                }
+            }
+        )
+    }
+    
+    /**
+     * 澶勭悊鎼滅储缁撴灉
+     */
+    private fun handleSearchResult(result: SearchUserResult) {
+        // 鍦ㄨ繖閲屽疄鐜版悳绱㈢粨鏋滅殑澶勭悊閫昏緫
+        // 渚嬪锛氭洿鏂癠I鏄剧ず鎼滅储缁撴灉鍒楄〃
+        // 鎴栬�呰烦杞埌缁撴灉璇︽儏椤甸潰
+    }
+
 }
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/bean/net/BaseResult.kt b/generallibrary/src/main/java/com/dayu/general/bean/net/BaseResult.kt
new file mode 100644
index 0000000..2ab6b24
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/bean/net/BaseResult.kt
@@ -0,0 +1,9 @@
+package com.dayu.general.bean.net
+
+/**
+ * Description:
+ * Author: zuo
+ * Date: 2025/3/7
+ */
+class BaseResult<T> {
+}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/bean/net/SearchUserBeanRequest.kt b/generallibrary/src/main/java/com/dayu/general/bean/net/SearchUserBeanRequest.kt
new file mode 100644
index 0000000..1950d26
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/bean/net/SearchUserBeanRequest.kt
@@ -0,0 +1,70 @@
+package com.dayu.general.bean.net
+
+/**
+ * Description:鎼滅储
+ * Author: zuo
+ * Date: 2025/3/7
+ */
+class SearchUserBeanRequest {
+
+
+    /**
+     * 鍐滄埛濮撳悕锛屾敮鎸佹ā绯婃煡璇�
+     * 绀轰緥鍊�: 鐮旂┒闄�
+     */
+    var name: String? = null
+
+    /**
+     * 鍐滄埛缂栧彿锛屾敮鎸佹ā绯婃煡璇�
+     * 绀轰緥鍊�: 281012090001
+     */
+    var clientNum: String? = null
+
+    /**
+     * 鎵嬫満鍙凤紝鏀寔妯$硦鏌ヨ
+     * 绀轰緥鍊�: 18633333333
+     */
+    var phone: String? = null
+
+    /**
+     * 璇︾粏鍦板潃锛屾敮鎸佹ā绯婃煡璇�
+     * 绀轰緥鍊�: 铚�
+     */
+    var address: String? = null
+
+    /**
+     * 鎵�鍦ㄦ潙
+     * 绀轰緥鍊�: 2024062709530800002
+     */
+    var villageId: String? = null
+
+    /**
+     * 鎵�鍦ㄧ墖鍖�
+     */
+    var blockId: String? = null
+
+    /**
+     * 鎵�鍦ㄥ垎姘存埧
+     */
+    var divideId: String? = null
+
+    /**
+     * 姘村崱缂栧彿锛屾敮鎸佹ā绯婃煡璇�
+     * 绀轰緥鍊�: 53232810100600001
+     */
+    var cardNum: String? = null
+
+    /**
+     * 褰撳墠椤电爜锛屽繀闇�
+     * 绀轰緥鍊�: 1
+     */
+    var pageCurr: Int = 1
+
+    /**
+     * 姣忛〉璁板綍鏁帮紝蹇呴渶
+     * 绀轰緥鍊�: 10
+     */
+    var pageSize: Int = 10
+
+
+}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/bean/net/SearchUserResult.kt b/generallibrary/src/main/java/com/dayu/general/bean/net/SearchUserResult.kt
new file mode 100644
index 0000000..9a70342
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/bean/net/SearchUserResult.kt
@@ -0,0 +1,28 @@
+package com.dayu.general.bean.net
+
+/**
+ * Description: 鎼滅储鐢ㄦ埛缁撴灉Bean
+ * Author: zuo
+ * Date: 2025/3/7
+ */
+data class SearchUserResult(
+    val itemTotal: Int,                // 鎬绘潯鐩暟
+    val obj: List<UserInfo>,           // 鐢ㄦ埛淇℃伅鍒楄〃
+    val pageCurr: Int,                 // 褰撳墠椤电爜
+    val pageSize: Int,                 // 姣忛〉澶у皬
+    val pageTotal: Int                 // 鎬婚〉鏁�
+) {
+    /**
+     * 鐢ㄦ埛淇℃伅
+     */
+    data class UserInfo(
+        val address: String? = null,   // 鍦板潃
+        val cardCount: Int? = null,    // 鍗℃暟閲�
+        val clientNum: String? = null, // 瀹㈡埛缂栧彿
+        val id: Int? = null,           // ID
+        val idCard: String? = null,    // 韬唤璇�
+        val name: String? = null,      // 濮撳悕
+        val operateDt: String? = null, // 鎿嶄綔鏃ユ湡
+        val phone: String? = null      // 鐢佃瘽
+    )
+}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/net/ApiManager.kt b/generallibrary/src/main/java/com/dayu/general/net/ApiManager.kt
index 6dab3dc..8837b74 100644
--- a/generallibrary/src/main/java/com/dayu/general/net/ApiManager.kt
+++ b/generallibrary/src/main/java/com/dayu/general/net/ApiManager.kt
@@ -1,66 +1,96 @@
-package com.dayu.general.net
+package com.dayu.qiheonlinelibrary.net
 
 import android.content.Context
-import android.text.TextUtils
-import com.dayu.baselibrary.business.BusinessProvider
-import com.dayu.baselibrary.net.subscribers.BaseProgressSubscriber
+import android.util.Log
+import com.dayu.baselibrary.net.subscribers.ProgressSubscriber
 import com.dayu.baselibrary.net.subscribers.SubscriberListener
+import com.dayu.general.net.ApiService
+import com.dayu.general.net.BaseResponse
+import com.dayu.general.net.MyJsonParser
+import com.dayu.general.net.NetConstans
+import com.dayu.general.net.RetrofitClient
 import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
-import io.reactivex.rxjava3.core.Observable
 import io.reactivex.rxjava3.functions.Function
 import io.reactivex.rxjava3.schedulers.Schedulers
 
 /**
+ * Copyright (C), 2023,
+ * Author: zuot
+ * Date: 2023-04-12 9:11
  * Description:
- * Author: zuo
- * Date: 2025-03-06
  */
-class ApiManager {
+class ApiManager private constructor() {
 
-    var apiService: ApiService? = null
+    companion object {
+        private const val TAG = "ApiManager"
 
-    fun init() {
-        if (apiManager == null) {
-            apiManager =
-                com.dayu.qiheonlinelibrary.net.ApiManager()
+        @Volatile
+        private var apiManager: ApiManager? = null
+
+        fun init() {
+            if (apiManager == null) {
+                synchronized(ApiManager::class) {
+                    if (apiManager == null) {
+                        apiManager = ApiManager()
+                    }
+                }
+            }
+        }
+
+        fun getInstance(): ApiManager {
+            return apiManager ?: throw IllegalStateException("ApiManager not initialized")
         }
     }
 
-    fun ApiManager() {
-        apiService = RetrofitClient.getInstance().getApiService()
+    private val apiService: ApiService = RetrofitClient.getInstance().getApiService()
+
+    fun <T> requestGetLoading(
+        context: Context,
+        path: String,
+        tClass: Class<T>,
+        params: Map<String, Any>?,
+        listener: SubscriberListener<BaseResponse<T>>
+    ) {
+        request(context, false, path, true, tClass, params, listener)
     }
 
-    fun getInstance(): com.dayu.qiheonlinelibrary.net.ApiManager {
-        return apiManager
+    fun <T> requestGetHideLoading(
+        context: Context,
+        path: String,
+        tClass: Class<T>,
+        params: Map<String, Any>?,
+        listener: SubscriberListener<BaseResponse<T>>
+    ) {
+        request(context, true, path, true, tClass, params, listener)
     }
 
 
     fun <T> requestPostLoading(
-        context: Context?,
-        path: String?,
-        tClass: Class<T>?,
-        params: Map<String?, Any?>?,
-        listener: SubscriberListener<*>?
+        context: Context,
+        path: String,
+        tClass: Class<T>,
+        params: Map<String, Any>?,
+        listener: SubscriberListener<BaseResponse<T>>
     ) {
         request(context, false, path, false, tClass, params, listener)
     }
 
     fun <T> requestPostHideLoading(
-        context: Context?,
-        path: String?,
-        tClass: Class<T>?,
-        params: Map<String?, Any?>?,
-        listener: SubscriberListener<*>?
+        context: Context,
+        path: String,
+        tClass: Class<T>,
+        params: Map<String, Any>?,
+        listener: SubscriberListener<BaseResponse<T>>
     ) {
         request(context, true, path, false, tClass, params, listener)
     }
 
     fun <T> requestPost(
-        context: Context?,
-        path: String?,
-        tClass: Class<T>?,
-        params: Map<String?, Any?>?,
-        listener: SubscriberListener<*>?
+        context: Context,
+        path: String,
+        tClass: Class<T>,
+        params: Map<String, Any>?,
+        listener: SubscriberListener<BaseResponse<T>>
     ) {
         request(context, false, path, false, tClass, params, listener)
     }
@@ -76,22 +106,20 @@
      * @param params      Post璇锋眰鏃讹紝瀵瑰簲鐨勫弬鏁�
      * @param listener    鍥炶皟璇锋眰
      * @param <T>
-    </T> */
+     */
     fun <T> request(
-        context: Context?,
+        context: Context,
         hideLoading: Boolean,
-        path: String?,
+        path: String,
         isGet: Boolean,
-        tClass: Class<T>?,
-        params: Map<String?, Any?>?,
-        listener: SubscriberListener<*>?
+        tClass: Class<T>,
+        params: Map<String, Any>?,
+        listener: SubscriberListener<BaseResponse<T>>
     ) {
-        val observable: Observable<*>=if (isGet) {
-            if (params == null) {
-                apiService.requestGet(path)
-            } else {
-                apiService.requestGet(path, params)
-            }
+
+        val observable = if (isGet) {
+            if (params == null) apiService.requestGet(path)
+            else apiService.requestGet(path, params)
         } else {
             if (params != null) {
                 apiService.requestPost(path, params)
@@ -100,77 +128,68 @@
             }
         }
 
-        val mySubscriber: BaseProgressSubscriber<*>=ProgressSubscriber<Any?>(context, hideLoading, listener)
-        observable.subscribeOn(Schedulers.io()).map
-        object : Function<Any?, com.dayu.qiheonlinelibrary.net.BaseResponse<T>?> {
-            override fun apply(o: Any): com.dayu.qiheonlinelibrary.net.BaseResponse<T> {
-                if (o is com.dayu.qiheonlinelibrary.net.BaseResponse) {
-                    val tem: com.dayu.qiheonlinelibrary.net.BaseResponse =
-                        o as com.dayu.qiheonlinelibrary.net.BaseResponse
-                    val response: com.dayu.qiheonlinelibrary.net.BaseResponse<T> =
-                        com.dayu.qiheonlinelibrary.net.BaseResponse<T>()
-                    //鏈櫥褰曟垨鐧诲綍瓒呮椂锛岃閲嶆柊鐧诲綍
-                    if (tem.getCode() == 100401) {
-                        if (BusinessProvider.getBusinessProvider() != null) {
-                            BusinessProvider.getBusinessProvider().startLoginNavigotor.navigateToLogin(
-                                context
-                            )
-                        }
-                    }
-                    response.setCode(tem.getCode())
-                    response.setMsg(tem.getMsg())
-                    if (tClass != null) {
-                        if (TextUtils.isEmpty(
-                                tem.getData().toString()
-                            ) && BaseResult::class.java.isAssignableFrom(tClass)
-                        ) {
-                            response.setData(null)
-                            return response
-                        }
-                        if (tem.getData() is Map<*, *>) {
-                            try {
-//                                    response.setData(MyJsonParser.getBeanFromMap((Map<String, Object>) tem.getData(), tClass));
-                                val jsonData: String =
-                                    MyJsonParser.getJsontoMap(tem.getData() as Map<*, *>)
-                                response.setData(MyJsonParser.getBeanFromJson<T>(jsonData, tClass))
-                            } catch (e: Exception) {
-                                e.printStackTrace()
-                            }
-                        } else if (tem.getData() is List<*>) {
-                            try {
-                                response.setData(
-                                    MyJsonParser.getListByJson<T>(
-                                        MyJsonParser.getJsonbyList<Any>(
-                                            tem.getData() as List<*>
-                                        ), tClass
-                                    ) as T
-                                )
-                            } catch (e: Exception) {
-                                e.printStackTrace()
-                            }
-                        } else if (tem.getData() is Int) {
-                            response.setData(tem.getData() as T)
-                        } else if (tem.getData() is Boolean) {
-                            response.setData(tem.getData() as T)
-                        }
-                        if (tClass.name is String && tem.getData() is String) {
-                            try {
-                                response.setData(tem.getData() as T)
-                            } catch (e: Exception) {
-                                e.printStackTrace()
-                            }
-                        }
-                        return response
-                    }
-                }
+        // 浣跨敤BaseResponse<T>浣滀负ProgressSubscriber鐨勬硾鍨嬬被鍨�
+        val mySubscriber = ProgressSubscriber<BaseResponse<T>>(context, hideLoading, listener);
 
-                return null
+        observable
+            ?.subscribeOn(Schedulers.io())
+            ?.map(mapResponse(tClass))
+            ?.unsubscribeOn(Schedulers.newThread())
+            ?.observeOn(AndroidSchedulers.mainThread())
+            ?.subscribe(mySubscriber)
+    }
+
+    private fun <T> mapResponse(tClass: Class<T>): Function<Any, BaseResponse<T>> {
+        return Function { rawResponse ->
+            when (rawResponse) {
+                is BaseResponse<*> -> {
+                    val temp = rawResponse
+
+                    // 鍒涘缓鏂扮殑鍝嶅簲瀵硅薄骞惰缃熀鏈睘鎬�
+                    val response = BaseResponse<T>().apply {
+                        code = temp.code
+                        msg = temp.msg ?: ""
+                    }
+
+                    // 澶勭悊token澶辨晥鐨勬儏鍐�
+                    if (temp.code == NetConstans.TOKEN_INVALID) {
+                        // 鍙互鍦ㄨ繖閲屾坊鍔犻噸瀹氬悜鍒扮櫥褰曢〉闈㈢殑閫昏緫
+                        // redirectToLogin()
+                        return@Function response
+                    }
+
+                    // 鏍规嵁鍐呭绫诲瀷杩涜澶勭悊
+                    when (val content = temp.content) {
+                        is Map<*, *> -> {
+                            try {
+                                val jsonData = MyJsonParser.getJsontoMap(content as Map<String, Any>)
+                                response.content = MyJsonParser.getBeanFromJson(jsonData, tClass)
+                            } catch (e: Exception) {
+                                Log.e(TAG, "Error parsing map content", e)
+                            }
+                        }
+                        is List<*> -> {
+                            try {
+                                @Suppress("UNCHECKED_CAST")
+                                response.content = MyJsonParser.getListByJson(
+                                    MyJsonParser.getJsonbyList(content),
+                                    tClass
+                                ) as T
+                            } catch (e: Exception) {
+                                Log.e(TAG, "Error parsing list content", e)
+                            }
+                        }
+                        is Int, is String, is Boolean -> {
+                            @Suppress("UNCHECKED_CAST")
+                            response.content = content as T
+                        }
+                    }
+
+                    response
+                }
+                else -> throw IllegalArgumentException("Unexpected response type")
             }
         }
-            .unsubscribeOn(Schedulers.newThread())
-            .observeOn(AndroidSchedulers.mainThread())
-            .subscribe(mySubscriber)
     }
-    
-    
-}
\ No newline at end of file
+
+}
diff --git a/generallibrary/src/main/java/com/dayu/general/net/ApiService.kt b/generallibrary/src/main/java/com/dayu/general/net/ApiService.kt
index 3992cc1..7aac48b 100644
--- a/generallibrary/src/main/java/com/dayu/general/net/ApiService.kt
+++ b/generallibrary/src/main/java/com/dayu/general/net/ApiService.kt
@@ -13,8 +13,8 @@
 
     @POST
     fun requestPost(
-        @Url url: String?,
-        @Body params: Map<String?, Any?>?
+        @Url url: String,
+        @Body params: Map<String, Any?>?
     ): Observable<BaseResponse<Any?>>?
 
     @POST
@@ -22,11 +22,11 @@
 
     @GET("{url}")
     fun requestGet(
-        @Path("url") url: String?,
-        @QueryMap params: Map<String?, Any?>?
+        @Path("url") url: String,
+        @QueryMap params: Map<String, Any?>?
     ): Observable<BaseResponse<Any?>>?
 
     @GET("{url}")
-    fun requestGet(@Path("url") url: String?): Observable<BaseResponse<Any?>>?
+    fun requestGet(@Path("url") url: String): Observable<BaseResponse<Any?>>?
 
 }
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/net/BaseResponse.kt b/generallibrary/src/main/java/com/dayu/general/net/BaseResponse.kt
index 3097c10..d6aae48 100644
--- a/generallibrary/src/main/java/com/dayu/general/net/BaseResponse.kt
+++ b/generallibrary/src/main/java/com/dayu/general/net/BaseResponse.kt
@@ -6,7 +6,7 @@
  * Date: 2025-03-06
  */
 class BaseResponse<T> {
-    var code: Int = 0
+    var code: String = ""
     var msg: String? = null
     var content: T? = null
     var success:Boolean = false
diff --git a/generallibrary/src/main/java/com/dayu/general/net/MyInercepterApplication.kt b/generallibrary/src/main/java/com/dayu/general/net/MyIntercepterApplication.kt
similarity index 86%
rename from generallibrary/src/main/java/com/dayu/general/net/MyInercepterApplication.kt
rename to generallibrary/src/main/java/com/dayu/general/net/MyIntercepterApplication.kt
index 95beb88..6a3d2dd 100644
--- a/generallibrary/src/main/java/com/dayu/general/net/MyInercepterApplication.kt
+++ b/generallibrary/src/main/java/com/dayu/general/net/MyIntercepterApplication.kt
@@ -1,7 +1,5 @@
 package com.dayu.general.net
 
-import android.text.TextUtils
-import com.dayu.qiheonlinelibrary.QHOnLineApplication
 import com.tencent.bugly.crashreport.CrashReport
 import okhttp3.Interceptor
 import okhttp3.Protocol
@@ -16,7 +14,7 @@
  * Author: zuo
  * Date: 2025-03-06
  */
-class MyInercepterApplication :Interceptor{
+class MyIntercepterApplication :Interceptor{
 
     @Throws(IOException::class)
     override fun intercept(chain: Interceptor.Chain): Response {
@@ -47,9 +45,7 @@
             if (request.method == "GET") {
                 builder.url(request.url.toString())
             } else {
-                if (!TextUtils.isEmpty(QHOnLineApplication.getInstance().tokenStr)) {
-                    builder.addHeader("Token-Cloud", QHOnLineApplication.getInstance().tokenStr)
-                }
+
             }
             return builder.build()
         } catch (e: Exception) {
diff --git a/generallibrary/src/main/java/com/dayu/general/net/MyJsonParser.kt b/generallibrary/src/main/java/com/dayu/general/net/MyJsonParser.kt
new file mode 100644
index 0000000..8073839
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/net/MyJsonParser.kt
@@ -0,0 +1,259 @@
+package com.dayu.general.net
+
+import android.text.TextUtils
+import com.google.gson.Gson
+import com.google.gson.GsonBuilder
+import com.google.gson.JsonParser
+import com.google.gson.LongSerializationPolicy
+import org.json.JSONArray
+import org.json.JSONException
+import org.json.JSONObject
+import java.lang.reflect.ParameterizedType
+import java.lang.reflect.Type
+import java.util.*
+
+/**
+ * Description: JSON瑙f瀽宸ュ叿绫�
+ * Author: zuo
+ * Date: 2025/3/7
+ */
+class MyJsonParser {
+
+    companion object {
+        /**
+         * 鑾峰彇Json瀛楃涓蹭腑鐨勫睘鎬у��
+         */
+        @JvmStatic
+        @Throws(JSONException::class)
+        fun getPropertyFromJson(json: String, attrName: String): Any? {
+            return try {
+                val jsonObject = JSONObject(json)
+                jsonObject.get(attrName)
+            } catch (e: JSONException) {
+                null
+            }
+        }
+
+        /**
+         * 灏嗗璞¤浆鎹㈡垚Json瀛楃涓�
+         */
+        @JvmStatic
+        fun <T> bean2Json(t: T?): String {
+            return try {
+                if (t == null || TextUtils.isEmpty(t.toString())) return ""
+                Gson().toJson(t)
+            } catch (e: Exception) {
+                e.printStackTrace()
+                ""
+            }
+        }
+
+        /**
+         * 杞崲涓篢绫诲瀷
+         */
+        @JvmStatic
+        fun <T> json2Bean(json: String, tClass: Class<T>): T? {
+            return try {
+                if (!TextUtils.isEmpty(json)) {
+                    Gson().fromJson(json, tClass)
+                } else null
+            } catch (e: Exception) {
+                e.printStackTrace()
+                null
+            }
+        }
+
+        /**
+         * 灏咼son鐩存帴搴忓垪鍖栦负List
+         */
+        @JvmStatic
+        fun <T> json2List(json: String, type: Type): List<T>? {
+            return try {
+                if (!TextUtils.isEmpty(json)) {
+                    Gson().fromJson(json, type)
+                } else null
+            } catch (e: Exception) {
+                e.printStackTrace()
+                null
+            }
+        }
+
+        private fun buildGson() = GsonBuilder().create()
+
+        @JvmStatic
+        fun <T> getBeanFromJson(json: String, cl: Class<T>): T? {
+            return try {
+                buildGson().fromJson(json, cl)
+            } catch (e: Exception) {
+                e.printStackTrace()
+                null
+            }
+        }
+
+        @JvmStatic
+        fun <T> getBeanFromJson(json: String, cl: Type): T? {
+            return try {
+                buildGson().fromJson(json, cl)
+            } catch (e: Exception) {
+                e.printStackTrace()
+                null
+            }
+        }
+
+        @JvmStatic
+        fun <T> getBeanFromMap(map: Map<String, Any>, cl: Class<T>): T? {
+            return getBeanFromJson(getJsonFromMap(map), cl)
+        }
+
+        @JvmStatic
+        fun getJsonFromMap(params: Map<String, Any>?): String {
+            if (params.isNullOrEmpty()) return ""
+            return getJSONObjectFromMap(params).toString()
+        }
+
+        @JvmStatic
+        fun getJsontoMap(params: Map<*, *>): String {
+            return GsonBuilder()
+                .setLongSerializationPolicy(LongSerializationPolicy.STRING)
+                .serializeSpecialFloatingPointValues()
+                .create()
+                .toJson(params)
+        }
+
+        @JvmStatic
+        fun <T> getJsonbyList(params: List<T>): String {
+            return Gson().toJson(params)
+        }
+
+        @Suppress("UNCHECKED_CAST")
+        private fun getJSONObjectFromMap(params: Map<String, Any>): JSONObject {
+            val jsonObject = JSONObject()
+            for ((key, value) in params) {
+                try {
+                    when (value) {
+                        is List<*> -> {
+                            if (value.isNotEmpty()) {
+                                val array = JSONArray()
+                                for (o in value) {
+                                    when (o) {
+                                        is Map<*, *> -> array.put(getJSONObjectFromMap(o as Map<String, Any>))
+                                        is List<*> -> {
+                                            val array1 = JSONArray()
+                                            array1.put(getListFromJson(o.toString()))
+                                            array.put(array1)
+                                        }
+                                        else -> array.put(o)
+                                    }
+                                }
+                                jsonObject.put(key, array)
+                            }
+                        }
+                        is Map<*, *> -> jsonObject.put(key, getJSONObjectFromMap(value as Map<String, Any>))
+                        else -> jsonObject.put(key, value)
+                    }
+                } catch (e: JSONException) {
+                    e.printStackTrace()
+                }
+            }
+            return jsonObject
+        }
+
+        @JvmStatic
+        fun getMapFromJson(jsonStr: String?): HashMap<String, Any> {
+            val valueMap = LinkedHashMap<String, Any>()
+            if (jsonStr.isNullOrEmpty()) return valueMap
+
+            try {
+                val jsonObject = JSONObject(jsonStr)
+                return getMapFromJsonObject(jsonObject)
+            } catch (e: Exception) {
+                e.printStackTrace()
+            }
+            return valueMap
+        }
+
+        @JvmStatic
+        fun getListFromJsonArray(jsonArray: JSONArray): List<Any> {
+            val list = ArrayList<Any>()
+            try {
+                for (i in 0 until jsonArray.length()) {
+                    when (val obj = jsonArray.get(i)) {
+                        is JSONObject -> list.add(getMapFromJsonObject(obj))
+                        is JSONArray -> list.add(getListFromJsonArray(jsonArray))
+                        else -> {
+                            if (obj != null && !TextUtils.isEmpty(obj.toString()) && obj.toString() != "null") {
+                                list.add(obj)
+                            }
+                        }
+                    }
+                }
+            } catch (e: JSONException) {
+                e.printStackTrace()
+            }
+            return list
+        }
+
+        @JvmStatic
+        fun getMapFromJsonObject(jsonObj: JSONObject): HashMap<String, Any> {
+            val map = LinkedHashMap<String, Any>()
+            val keys = jsonObj.keys()
+            try {
+                while (keys.hasNext()) {
+                    val key = keys.next()
+                    when (val obj = jsonObj.get(key)) {
+                        is JSONArray -> map[key] = getListFromJsonArray(obj)
+                        is JSONObject -> map[key] = getMapFromJsonObject(obj)
+                        is Number -> map[key] = obj.toString()
+                        else -> {
+                            if (obj != null && !TextUtils.isEmpty(obj.toString()) && obj.toString() != "null") {
+                                map[key] = obj
+                            }
+                        }
+                    }
+                }
+            } catch (e: JSONException) {
+                e.printStackTrace()
+            }
+            return map
+        }
+
+        @JvmStatic
+        fun <T> getListFromJson(str: String, clazz: Class<T>): List<T>? {
+            return try {
+                val type = ParameterizedTypeImpl(clazz)
+                Gson().fromJson<List<T>>(str, type)
+            } catch (e: Exception) {
+                e.printStackTrace()
+                null
+            }
+        }
+
+        @JvmStatic
+        fun <T> getListByJson(json: String, cls: Class<T>): List<T> {
+            val gson = Gson()
+            val list = ArrayList<T>()
+            val array = JsonParser().parse(json).asJsonArray
+            array.forEach { elem ->
+                list.add(gson.fromJson(elem, cls))
+            }
+            return list
+        }
+
+        @JvmStatic
+        fun getListFromJson(str: String): List<Any>? {
+            try {
+                val jsonArray = JSONArray(str)
+                return getListFromJsonArray(jsonArray)
+            } catch (e: Exception) {
+                e.printStackTrace()
+            }
+            return null
+        }
+
+        private class ParameterizedTypeImpl(private val clazz: Class<*>) : ParameterizedType {
+            override fun getActualTypeArguments(): Array<Type> = arrayOf(clazz)
+            override fun getRawType(): Type = List::class.java
+            override fun getOwnerType(): Type? = null
+        }
+    }
+}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/net/NetConstans.kt b/generallibrary/src/main/java/com/dayu/general/net/NetConstans.kt
index 0c0e7f2..a6f1a41 100644
--- a/generallibrary/src/main/java/com/dayu/general/net/NetConstans.kt
+++ b/generallibrary/src/main/java/com/dayu/general/net/NetConstans.kt
@@ -9,6 +9,7 @@
     companion object {
         const val BASE_URL: String = "http://120.46.45.35:20081/api/sjgg/"
 
+        const val TOKEN_INVALID: String = "0000"
     }
 
 }
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/net/RetrofitClient.kt b/generallibrary/src/main/java/com/dayu/general/net/RetrofitClient.kt
index 97bdbeb..aadfdd5 100644
--- a/generallibrary/src/main/java/com/dayu/general/net/RetrofitClient.kt
+++ b/generallibrary/src/main/java/com/dayu/general/net/RetrofitClient.kt
@@ -1,7 +1,6 @@
 package com.dayu.general.net
 
 import com.dayu.baselibrary.BuildConfig
-import com.dayu.qiheonlinelibrary.net.MyIntercepterApplication
 import okhttp3.OkHttpClient
 import okhttp3.logging.HttpLoggingInterceptor
 import retrofit2.Retrofit
@@ -14,7 +13,13 @@
  * Author: zuo
  * Date: 2025-03-06
  */
-class RetrofitClient {
+class RetrofitClient// 鍖呭惈header銆乥ody鏁版嵁
+//        loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS);
+//璁剧疆杩炴帴鍜岃鍙栨椂闂�
+//娣诲姞缁熶竴鐨刪eader
+//娣诲姞鏃ュ織鎷︽埅鍣�
+//娣诲姞鏁版嵁璇锋眰缁熶竴澶勭悊鎷︽埅鍣�
+    () {
 
 
 
@@ -22,26 +27,19 @@
     val READ_TIME_OUT: Int = 10
     val CONNECT_TIME_OUT: Int = 10
 
-    private fun RetrofitClient() {
+
+    init {
         val loggingInterceptor = HttpLoggingInterceptor()
-        // 鍖呭惈header銆乥ody鏁版嵁
         loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY)
-        //        loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS);
         val builder:  OkHttpClient.Builder = OkHttpClient().newBuilder()
-        //璁剧疆杩炴帴鍜岃鍙栨椂闂�
         builder.readTimeout(READ_TIME_OUT.toLong(), TimeUnit.SECONDS)
         builder.connectTimeout(CONNECT_TIME_OUT.toLong(), TimeUnit.SECONDS)
         builder.writeTimeout(CONNECT_TIME_OUT.toLong(), TimeUnit.SECONDS)
-        //娣诲姞缁熶竴鐨刪eader
         builder.addInterceptor(MyIntercepterApplication())
-        //娣诲姞鏃ュ織鎷︽埅鍣�
-        //娣诲姞鏁版嵁璇锋眰缁熶竴澶勭悊鎷︽埅鍣�
         if (BuildConfig.DEBUG) {
             builder.addInterceptor(loggingInterceptor)
         }
-
         val client: OkHttpClient = builder.build()
-
         retrofit = Retrofit.Builder()
             .baseUrl(NetConstans.BASE_URL)
             .addConverterFactory(GsonConverterFactory.create())
@@ -49,6 +47,7 @@
             .client(client).build()
     }
 
+
     @Synchronized
 
 
diff --git a/gradlew b/gradlew
index a69d9cb..1aa94a4 100644
--- a/gradlew
+++ b/gradlew
@@ -55,7 +55,7 @@
 #       Darwin, MinGW, and NonStop.
 #
 #   (3) This script is generated from the Groovy template
-#       https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+#       https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
 #       within the Gradle project.
 #
 #       You can find Gradle at https://github.com/gradle/gradle/.
@@ -80,13 +80,11 @@
     esac
 done
 
-APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
-
-APP_NAME="Gradle"
+# This is normally unused
+# shellcheck disable=SC2034
 APP_BASE_NAME=${0##*/}
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
+APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
 
 # Use the maximum available, or set MAX_FD != -1 to use that value.
 MAX_FD=maximum
@@ -133,22 +131,29 @@
     fi
 else
     JAVACMD=java
-    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+    if ! command -v java >/dev/null 2>&1
+    then
+        die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
 
 Please set the JAVA_HOME variable in your environment to match the
 location of your Java installation."
+    fi
 fi
 
 # Increase the maximum file descriptors if we can.
 if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
     case $MAX_FD in #(
       max*)
+        # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+        # shellcheck disable=SC2039,SC3045
         MAX_FD=$( ulimit -H -n ) ||
             warn "Could not query maximum file descriptor limit"
     esac
     case $MAX_FD in  #(
       '' | soft) :;; #(
       *)
+        # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+        # shellcheck disable=SC2039,SC3045
         ulimit -n "$MAX_FD" ||
             warn "Could not set maximum file descriptor limit to $MAX_FD"
     esac
@@ -193,11 +198,15 @@
     done
 fi
 
-# Collect all arguments for the java command;
-#   * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
-#     shell script including quotes and variable substitutions, so put them in
-#     double quotes to make sure that they get re-expanded; and
-#   * put everything else in single quotes, so that it's not re-expanded.
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Collect all arguments for the java command:
+#   * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
+#     and any embedded shellness will be escaped.
+#   * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
+#     treated as '${Hostname}' itself on the command line.
 
 set -- \
         "-Dorg.gradle.appname=$APP_BASE_NAME" \
diff --git a/gradlew.bat b/gradlew.bat
index f127cfd..93e3f59 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -26,6 +26,7 @@
 
 set DIRNAME=%~dp0
 if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
 set APP_BASE_NAME=%~n0
 set APP_HOME=%DIRNAME%
 
diff --git a/henanlibrary/build.gradle b/henanlibrary/build.gradle
index 4c26141..08882f7 100644
--- a/henanlibrary/build.gradle
+++ b/henanlibrary/build.gradle
@@ -1,8 +1,8 @@
 apply plugin: 'com.android.library'
 android {
     namespace 'com.dayu.henanlibrary'
-    compileSdk 33
-    ndkPath 'D:\\android\\sdk\\ndk\\android-ndk-r21'
+    compileSdk 34
+    ndkVersion '21.0.6113669'
     defaultConfig {
         minSdk 23
         targetSdk 26
diff --git a/henanlibrary/src/main/AndroidManifest.xml b/henanlibrary/src/main/AndroidManifest.xml
index 2dd3772..75dc0af 100644
--- a/henanlibrary/src/main/AndroidManifest.xml
+++ b/henanlibrary/src/main/AndroidManifest.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.dayu.henanlibrary">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
 
     <uses-permission android:name="android.permission.NFC" />
     <!--鐢ㄤ簬璁块棶缃戠粶锛岀綉缁滃畾浣嶉渶瑕佷笂缃�-->
diff --git a/ocridcardlibrary/build.gradle b/ocridcardlibrary/build.gradle
index ba76866..5ac1762 100644
--- a/ocridcardlibrary/build.gradle
+++ b/ocridcardlibrary/build.gradle
@@ -1,7 +1,8 @@
 apply plugin: 'com.android.library'
 
 android {
-    compileSdkVersion 29
+    namespace 'com.kernal.passportreader.sdk'
+    compileSdk 34
     defaultConfig {
         minSdkVersion 14
         targetSdkVersion 29
diff --git a/pickerviewlibrary/build.gradle b/pickerviewlibrary/build.gradle
index 65d44a7..42cbf69 100644
--- a/pickerviewlibrary/build.gradle
+++ b/pickerviewlibrary/build.gradle
@@ -2,8 +2,8 @@
 
 
 android {
-    compileSdkVersion 28
-
+    compileSdk 34
+    namespace 'com.example.pickerviewlibrary'
     defaultConfig {
         minSdkVersion 22
         targetSdkVersion 28
diff --git a/qihealonelibrary/build.gradle b/qihealonelibrary/build.gradle
index b1799a8..dc956ba 100644
--- a/qihealonelibrary/build.gradle
+++ b/qihealonelibrary/build.gradle
@@ -1,8 +1,8 @@
 apply plugin: 'com.android.library'
 android {
     namespace 'com.dayu.qihealonelibrary'
-    compileSdk 33
-    ndkPath 'D:\\android\\sdk\\ndk\\android-ndk-r21'
+    compileSdk 34
+    ndkVersion '21.0.6113669'
     defaultConfig {
         minSdk 23
         targetSdk 33
diff --git a/qiheonlinelibrary/build.gradle b/qiheonlinelibrary/build.gradle
index 75092a7..5356499 100644
--- a/qiheonlinelibrary/build.gradle
+++ b/qiheonlinelibrary/build.gradle
@@ -1,8 +1,8 @@
 apply plugin: 'com.android.library'
 android {
     namespace 'com.dayu.qiheonlinelibrary'
-    compileSdk 33
-    ndkPath 'D:\\android\\sdk\\ndk\\android-ndk-r21'
+    compileSdk 34
+    ndkVersion '21.0.6113669'
     defaultConfig {
         minSdk 23
         targetSdk 33

--
Gitblit v1.8.0