11package plugin.utils
22
33import com.android.build.gradle.AppExtension
4+ import com.android.ddmlib.AndroidDebugBridge
45import org.gradle.api.DefaultTask
56import org.gradle.api.Project
67import org.gradle.api.Task
78import org.gradle.api.tasks.TaskAction
89import org.gradle.api.tasks.TaskProvider
910import plugin.RocketXPlugin
10- import plugin.localmaven.AarFlatLocalMaven
11- import java.io.File
1211
1312/* *
1413 * description:
@@ -23,15 +22,14 @@ class InstallApkByAdb(val appProject: Project) {
2322 if (isRunAssembleTask(appProject)) {
2423 val android = appProject.extensions.getByType(AppExtension ::class .java)
2524 val installTask =
26- appProject.tasks.maybeCreate(" rocketxInstallTask" ,
27- InstallApkTask ::class .java)
25+ appProject.tasks.maybeCreate(" rocketxInstallTask" , InstallApkTask ::class .java)
2826 installTask.android = android
2927 android.applicationVariants.forEach {
3028 getAppAssembleTask(RocketXPlugin .ASSEMBLE + it.flavorName.capitalize() + it.buildType.name.capitalize())?.let { taskProvider ->
31- taskProvider.configure{
32- it.finalizedBy(installTask)
33- }
29+ taskProvider.configure {
30+ it.finalizedBy(installTask)
3431 }
32+ }
3533 }
3634 }
3735 }
@@ -47,22 +45,51 @@ class InstallApkByAdb(val appProject: Project) {
4745
4846
4947 open class InstallApkTask : DefaultTask () {
50- lateinit var android: AppExtension
48+ lateinit var android: AppExtension
49+
5150 @TaskAction
5251 fun installApk () {
53- val adb = android.adbExecutable.absolutePath
52+ val adb = android.adbExecutable.absolutePath
5453
5554 try {
56- project.exec {
57- it.commandLine(adb,
58- " install" ," -r" ,FileUtil .getApkLocalPath())
55+
56+ AndroidDebugBridge .initIfNeeded(false )
57+ val bridge = AndroidDebugBridge .createBridge(android.adbExecutable.path, false )
58+ var firstLocalDeviceSerinum = " "
59+ bridge?.devices?.forEach {
60+ if (! it.serialNumber.isNullOrEmpty()) {
61+ firstLocalDeviceSerinum = it.serialNumber
62+ return @forEach
63+ }
5964 }
65+
66+ if (firstLocalDeviceSerinum.isNullOrEmpty()) {
67+ project.exec {
68+ it.commandLine(adb, " install" , " -r" , FileUtil .getApkLocalPath())
69+ }
70+ } else {
71+ project.exec {
72+ it.commandLine(adb,
73+ " -s" ,
74+ firstLocalDeviceSerinum,
75+ " install" ,
76+ " -r" ,
77+ FileUtil .getApkLocalPath())
78+ }
79+ }
80+
6081 project.exec {
61- it.commandLine(adb," shell" ," monkey" ," -p" ,
62- android.defaultConfig.applicationId," -c" ," android.intent.category.LAUNCHER" ," 1" )
82+ it.commandLine(adb,
83+ " shell" ,
84+ " monkey" ,
85+ " -p" ,
86+ android.defaultConfig.applicationId,
87+ " -c" ,
88+ " android.intent.category.LAUNCHER" ,
89+ " 1" )
6390 }
64- }catch (e: Exception ){
65- LogUtil .d(" install fail:" + e.toString())
91+ } catch (e: Exception ) {
92+ LogUtil .d(" install fail:" + e.toString())
6693 }
6794
6895 }
0 commit comments