Skip to content

Commit baaa2a2

Browse files
committed
1.修改ipc-core的Result回调支持泛型嵌套
2.优化回调实例内存占用,客户端一个接口一个方法回调只会有一份实例,可以设置成null进行回收
1 parent 4f71598 commit baaa2a2

File tree

20 files changed

+335
-89
lines changed

20 files changed

+335
-89
lines changed

gradle.properties

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,27 @@ android.useAndroidX=true
1818
# Automatically convert third-party libraries to use AndroidX
1919
android.enableJetifier=true
2020
# Kotlin code style for this project: "official" or "obsolete":
21-
kotlin.code.style=official
21+
kotlin.code.style=official
22+
23+
# MAVEN PUBLISH 参数
24+
# maven publish发布问题
25+
# 问题一
26+
#Cannot upload checksum for snapshot-maven-metadata.xml. Remote lonbon.intercom.framework.repository doesn't support sha-256. Error: Could not PUT 'http://.../x.y.z-SNAPSHOT/maven-metadata.xml.sha256'. Received status code 400 from server: Invalid path for a Maven 2 lonbon.intercom.framework.repository
27+
#Cannot upload checksum for snapshot-maven-metadata.xml. Remote lonbon.intercom.framework.repository doesn't support sha-512. Error: Could not PUT 'http://.../x.y.z-SNAPSHOT/maven-metadata.xml.sha512'. Received status code 400 from server: Invalid path for a Maven 2 lonbon.intercom.framework.repository
28+
#Cannot upload checksum for module-maven-metadata.xml. Remote lonbon.intercom.framework.repository doesn't support sha-256. Error: Could not PUT 'http://.../x.y.z-SNAPSHOT/maven-metadata.xml.sha256'. Received status code 400 from server: Invalid path for a Maven 2 lonbon.intercom.framework.repository
29+
#Cannot upload checksum for module-maven-metadata.xml. Remote lonbon.intercom.framework.repository doesn't support sha-512. Error: Could not PUT 'http://.../x.y.z-SNAPSHOT/maven-metadata.xml.sha512'. Received status code 400 from server: Invalid path for a Maven 2 lonbon.intercom.framework.repository
30+
# https://github.com/gradle/gradle/issues/12355
31+
# Disable maven-metadata.xml SHA256 and SHA512 upload warnings to Nexus #12355
32+
systemProp.org.gradle.internal.publish.checksums.insecure=true
33+
-Dorg.gradle.internal.publish.checksums.insecure=true
34+
# 问题二
35+
# Return code is: 400 , ReasonPhrase:Repository version policy: RELEASE does not allow metadata in pat
36+
# https://blog.csdn.net/qq_22362139/article/details/82289097y
37+
# 1.使用admin账户登录,设置-->reposltorles-->maven-releases(点击)-->deployment pollcy 修改成 allow redeploy
38+
# 2.项目版本中不能含有-SNAPSHOT
39+
#org.gradle.java.home=/home/lb/work/android-studio/jre
40+
41+
#maven
42+
MAVEN_REPO_TYPE=REMOTE
43+
PUBLISH_GROUP=com.github.zhanggaoming
44+
PUBLISH_VERSION=2.8

gradle/publish_aar.gradle

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
apply plugin: 'maven-publish'
2+
3+
Properties localProperties = new Properties()
4+
localProperties.load(new FileInputStream(rootProject.getRootDir().getAbsolutePath() + "/local.properties"))
5+
6+
/**
7+
* 本地仓库url
8+
*/
9+
def MAVEN_LOCAL_PATH = properties.getOrDefault("MAVEN_LOCAL_PATH", "repo")
10+
def mavenRepoLocalUrl = MAVEN_LOCAL_PATH.startsWith("/") ? MAVEN_LOCAL_PATH : "$rootDir/$MAVEN_LOCAL_PATH"
11+
12+
def MAVEN_REPO_TYPE = properties.getOrDefault("MAVEN_REPO_TYPE", "LOCAL")
13+
def MAVEN_REMOTE_URL_RELEASE = properties.getOrDefault("MAVEN_REMOTE_URL_RELEASE", "http://192.168.4.205:8081/repository/maven-releases/")
14+
def MAVEN_REMOTE_URL_SNAPSHOT = properties.getOrDefault("MAVEN_REMOTE_URL_SNAPSHOT", "http://192.168.4.205:8081/repository/maven-snapshots/")
15+
def MAVEN_REMOTE_NAME = localProperties.getOrDefault("MAVEN_REMOTE_NAME", "admin")
16+
def MAVEN_REMOTE_PASSWORD = localProperties.getOrDefault("MAVEN_REMOTE_PASSWORD", "admin123")
17+
18+
println "version->${project.version}"
19+
20+
/**
21+
* 远程仓库url
22+
*/
23+
def mavenRepoRemoteUrl = project.version.contains("SNAPSHOT") ? MAVEN_REMOTE_URL_SNAPSHOT : MAVEN_REMOTE_URL_RELEASE
24+
25+
task androidJavadocs(type: Javadoc) {
26+
source = android.sourceSets.main.java.sourceFiles
27+
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
28+
android.libraryVariants.all { variant ->
29+
if (variant.name == 'release') {
30+
owner.classpath += variant.javaCompileProvider.get().classpath
31+
}
32+
}
33+
exclude '**/R.html', '**/R.*.html', '**/index.html'
34+
}
35+
36+
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
37+
archiveClassifier.set('javadoc')
38+
from androidJavadocs.destinationDir
39+
}
40+
41+
42+
task androidSourcesJar(type: Jar) {
43+
archiveClassifier.set('sources')
44+
if (project.hasProperty("kotlin")) {
45+
from android.sourceSets.main.java.getSrcDirs()
46+
} else if (project.hasProperty("android")) {
47+
from android.sourceSets.main.java.sourceFiles
48+
} else {
49+
from sourceSets.main.allSource
50+
}
51+
}
52+
53+
group = properties.getOrDefault("PUBLISH_GROUP", "com.lonbon")
54+
version = properties.getOrDefault("PUBLISH_VERSION", "1.0.0")
55+
56+
afterEvaluate {
57+
publishing {
58+
repositories {
59+
maven {
60+
setUrl(MAVEN_REPO_TYPE == "REMOTE" ? mavenRepoRemoteUrl : mavenRepoLocalUrl)
61+
if (MAVEN_REPO_TYPE == "REMOTE") {
62+
credentials {
63+
username = MAVEN_REMOTE_NAME
64+
password = MAVEN_REMOTE_PASSWORD
65+
}
66+
}
67+
}
68+
}
69+
70+
publications {
71+
release(MavenPublication) {
72+
from components.release
73+
artifactId = rootProject.name
74+
// artifact androidJavadocsJar
75+
artifact androidSourcesJar
76+
77+
}
78+
79+
}
80+
}
81+
}

gradle/publish_jar.gradle

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
apply plugin: 'java-library'
2+
apply plugin: 'maven-publish'
3+
apply plugin: 'signing'
4+
5+
java {
6+
// withJavadocJar()
7+
withSourcesJar()
8+
}
9+
10+
Properties localProperties = new Properties()
11+
localProperties.load(new FileInputStream(rootProject.getRootDir().getAbsolutePath() + "/local.properties"))
12+
13+
group = properties.getOrDefault("PUBLISH_GROUP", "com.lonbon")
14+
version = properties.getOrDefault("PUBLISH_VERSION", "1.0.0")
15+
16+
/*
17+
* Copyright (C),2007-2020, LonBon Technologies Co. Ltd. All Rights Reserved.
18+
*/
19+
20+
/**
21+
* 本地仓库url
22+
*/
23+
def MAVEN_LOCAL_PATH = properties.getOrDefault("MAVEN_LOCAL_PATH", "repo")
24+
def mavenRepoLocalUrl = MAVEN_LOCAL_PATH.startsWith("/") ? MAVEN_LOCAL_PATH : "$rootDir/$MAVEN_LOCAL_PATH"
25+
26+
def MAVEN_REPO_TYPE = properties.getOrDefault("MAVEN_REPO_TYPE", "LOCAL")
27+
def MAVEN_REMOTE_URL_RELEASE = properties.getOrDefault("MAVEN_REMOTE_URL_RELEASE", "http://192.168.4.205:8081/repository/maven-releases/")
28+
def MAVEN_REMOTE_URL_SNAPSHOT = properties.getOrDefault("MAVEN_REMOTE_URL_SNAPSHOT", "http://192.168.4.205:8081/repository/maven-snapshots/")
29+
def MAVEN_REMOTE_NAME = localProperties.getOrDefault("MAVEN_REMOTE_NAME", "admin")
30+
def MAVEN_REMOTE_PASSWORD = localProperties.getOrDefault("MAVEN_REMOTE_PASSWORD", "admin123")
31+
32+
/**
33+
* 远程仓库url
34+
*/
35+
def mavenRepoRemoteUrl = project.version.contains("SNAPSHOT") ? MAVEN_REMOTE_URL_SNAPSHOT : MAVEN_REMOTE_URL_RELEASE
36+
37+
publishing {
38+
repositories {
39+
maven {
40+
if (MAVEN_REPO_TYPE == "REMOTE") {
41+
url = uri(mavenRepoRemoteUrl)
42+
credentials {
43+
username = MAVEN_REMOTE_NAME
44+
password = MAVEN_REMOTE_PASSWORD
45+
}
46+
} else {
47+
setUrl(mavenRepoLocalUrl)
48+
}
49+
}
50+
}
51+
52+
publications {
53+
release(MavenPublication) {
54+
from components.java
55+
artifactId project.name
56+
// artifact project.kotlinSourcesJar {
57+
// classifier "sources"
58+
// }
59+
}
60+
}
61+
}
62+
63+
64+
65+
66+

ipc-annotation/build.gradle

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ plugins {
44
id 'maven'
55
}
66

7+
apply from:'../gradle/publish_jar.gradle'
8+
79
group 'com.github.zhanggaoming'
810

911

@@ -21,20 +23,20 @@ dependencies {
2123
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
2224
}
2325

24-
task sourcesJar(type: Jar, dependsOn: classes) {
25-
classifier = 'sources'
26-
from sourceSets.main.allSource
27-
}
28-
29-
task javadocJar(type: Jar, dependsOn: javadoc) {
30-
classifier = 'javadoc'
31-
from javadoc.destinationDir
32-
}
33-
34-
artifacts {
35-
archives sourcesJar
36-
archives javadocJar
37-
}
26+
//task sourcesJar(type: Jar, dependsOn: classes) {
27+
// classifier = 'sources'
28+
// from sourceSets.main.allSource
29+
//}
30+
//
31+
//task javadocJar(type: Jar, dependsOn: javadoc) {
32+
// classifier = 'javadoc'
33+
// from javadoc.destinationDir
34+
//}
35+
36+
//artifacts {
37+
// archives sourcesJar
38+
// archives javadocJar
39+
//}
3840

3941
// To specify a license in the pom:
4042
install {

ipc-app-test/src/main/java/com/demo/ipc/CommonActivity.kt

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,7 @@ import android.util.Log
55
import android.view.View
66
import android.widget.Toast
77
import androidx.appcompat.app.AppCompatActivity
8-
import com.ipc.extend.test.Code
9-
import com.ipc.extend.test.Event
10-
import com.ipc.extend.test.InfoService
11-
import com.ipc.extend.test.UserInfo
8+
import com.ipc.extend.test.*
129
import com.zclever.ipc.core.Config
1310
import com.zclever.ipc.core.IpcManager
1411
import com.zclever.ipc.core.Result
@@ -29,15 +26,17 @@ class CommonActivity : AppCompatActivity() {
2926
setContentView(R.layout.activity_common)
3027
IpcManager.config(Config.builder().configDebug(true).build())
3128
IpcManager.init(this)
32-
IpcManager.open("com.demo.ipcdemo")
29+
IpcManager.open("com.demo.ipcdemo"){
30+
runOnUiThread {
31+
Toast.makeText(this,"连接服务端成功,可以开始调用相关接口了", Toast.LENGTH_LONG).show()
32+
}
33+
}
3334
}
3435

3536
fun syncGetUserInfo(view: View) {
3637

3738
Toast.makeText(this, instance.syncGetUserInfo().toString(), Toast.LENGTH_LONG).show()
3839

39-
Log.i(TAG, "syncGetUserInfo: ->${instance.getEnum(Code.FAILURE)}")
40-
4140
}
4241

4342

@@ -75,15 +74,22 @@ class CommonActivity : AppCompatActivity() {
7574
}
7675

7776

78-
7977
fun setEventCallBack(view: View) {
8078

8179
instance.setEventCallBack(object : Result<Event>() {
8280
override fun onData(data: Event) {
8381
Log.i(TAG, "onData: ${data.id}")
8482
}
8583
})
84+
}
8685

86+
fun setResponeCallBack(view: View) {
87+
88+
instance.setResponeCallBack(object : Result<BaseRespone<Event>>() {
89+
override fun onData(data: BaseRespone<Event>) {
90+
Log.i(TAG, "onData,BaseRespone:${data.data.id}")
91+
}
92+
})
8793
}
8894

8995

ipc-app-test/src/main/java/com/demo/ipc/InfoServiceManager.kt

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package com.demo.ipc
22

33
import android.util.Log
4-
import com.ipc.extend.test.Code
5-
import com.ipc.extend.test.Event
6-
import com.ipc.extend.test.InfoService
7-
import com.ipc.extend.test.UserInfo
4+
import com.ipc.extend.test.*
5+
import com.zclever.ipc.core.Response
86
import com.zclever.ipc.core.Result
97
import com.zclever.ipc.core.TAG
108
import kotlin.concurrent.thread
@@ -47,7 +45,7 @@ object InfoServiceManager : InfoService {
4745
thread {
4846
while (true) {
4947
mCallBack?.onData(Event(count++))
50-
48+
responeCallBack?.onData(BaseRespone(Event(id = count)))
5149
Thread.sleep(2000)
5250
}
5351
}
@@ -56,4 +54,10 @@ object InfoServiceManager : InfoService {
5654
override fun setEventCallBack(callBack: Result<Event>) {
5755
mCallBack = callBack
5856
}
57+
58+
private var responeCallBack:Result<BaseRespone<Event>>?=null
59+
60+
override fun setResponeCallBack(callBack: Result<BaseRespone<Event>>) {
61+
responeCallBack=callBack
62+
}
5963
}

ipc-app-test/src/main/java/com/demo/ipc/InfoServiceManagerJava.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import android.util.Log;
44

5+
import androidx.annotation.NonNull;
6+
7+
import com.ipc.extend.test.BaseRespone;
58
import com.ipc.extend.test.Code;
69
import com.ipc.extend.test.Event;
710
import com.ipc.extend.test.InfoService;
@@ -37,6 +40,11 @@ public void setEventCallBack(@NotNull Result<Event> callBack) {
3740

3841
}
3942

43+
@Override
44+
public void setResponeCallBack(@NonNull Result<BaseRespone<Event>> callBack) {
45+
46+
}
47+
4048
private static final class Holder {
4149
private static final InfoServiceManagerJava instance = new InfoServiceManagerJava();
4250
}

ipc-app-test/src/main/java/com/demo/ipc/VideoActivity.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import android.util.Log
99
import android.view.View
1010
import android.view.inputmethod.InputMethodSession
1111
import android.widget.ImageView
12+
import android.widget.Toast
1213
import androidx.appcompat.app.AppCompatActivity
1314
import com.ipc.extend.test.Event
1415
import com.ipc.extend.test.InfoService
@@ -35,7 +36,11 @@ class VideoActivity : AppCompatActivity(){
3536
//配置开启媒体服务
3637
IpcManager.config(Config.builder().configDebug(true).configOpenMedia(true).build())
3738
IpcManager.init(this)
38-
IpcManager.open("com.demo.ipcdemo")
39+
IpcManager.open("com.demo.ipcdemo"){
40+
runOnUiThread {
41+
Toast.makeText(this,"连接服务端成功,可以开始调用相关接口了", Toast.LENGTH_LONG).show()
42+
}
43+
}
3944

4045
showImageView=findViewById(R.id.img_show)
4146

ipc-app-test/src/main/res/layout/activity_common.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,18 @@
6464
app:layout_constraintTop_toBottomOf="@id/sendBigData"
6565
tools:ignore="OnClick" />
6666

67+
<Button
68+
android:layout_marginTop="5dp"
69+
android:id="@+id/setResponeCallBack"
70+
android:layout_width="wrap_content"
71+
android:layout_height="wrap_content"
72+
android:onClick="setResponeCallBack"
73+
android:text="setResponeCallBack"
74+
app:layout_constraintLeft_toLeftOf="parent"
75+
app:layout_constraintRight_toRightOf="parent"
76+
app:layout_constraintTop_toBottomOf="@id/setEventCallBack"
77+
tools:ignore="OnClick" />
78+
6779

6880

6981
</androidx.constraintlayout.widget.ConstraintLayout>

0 commit comments

Comments
 (0)