명령 줄에서 Gradle을 통해 장치에 배포 할 수 있습니까?
질문이 실제로 말하는 것-명령 줄을 통해 직접 gradlew 명령을 실행하여 장치를 빌드, 패키징 및 배포 할 수 있습니까?
$ gradle installDebug
그러면 디버그 빌드 APK가 기기에 푸시되지만 애플리케이션을 수동으로 시작해야합니다.
Gradle을 사용하고 있으므로 build.gradle에 간단하게 작업을 추가 할 수 있습니다.
task appStart(type: Exec, dependsOn: 'installDebug') {
// linux
commandLine 'adb', 'shell', 'am', 'start', '-n', 'com.example/.MyActivity'
// windows
// commandLine 'cmd', '/c', 'adb', 'shell', 'am', 'start', '-n', 'com.example/.MyActivity'
}
그런 다음 프로젝트 루트에서 호출하십시오.
$ gradle appStart
최신 정보:
을 사용 하는 경우 appId에만applicationIdSuffix ".debug" 추가 하고 활동은 그대로 둡니다..debug
'com.example.debug/com.example.MyActivity'
1. 프로젝트 빌드, 생성 된 APK를 기기에 설치
# at the root dir of project
$ gradle installDebug
2. 기기에서 앱 열기
$ adb shell am start -n yourpackagename/.activityname
한 줄 문장 :
프로젝트 빌드 및 생성 된 APK 설치 및 기기에 앱 열기
$ ./gradlew installDebug && adb shell am start -n com.example/.activities.MainActivity
이를 수행하는 세 가지 명령이 있습니다.
./gradlew assembleDebug #To build the projectadb install -r ./app/build/outputs/apk/app-debug.apk #To install it to the deviceadb shell am start -n $PACKAGE/$PACKAGE.$ACTIVITY #To launch the application in the device, 여기서 $ PACKAGE는 개발 패키지이고 $ ACTIVITY는 시작할 활동 (실행기 활동)입니다.
다른 몇 가지 기능을 사용 하여이를 수행하기 위해 bash 스크립트를 작성했습니다 .
보다 유연한 방법은 monkey를 사용하는 것입니다.
task runDebug (type: Exec, dependsOn: 'installDebug') {
commandLine android.getAdbExe().toString(), "shell",
"monkey",
"-p", "your.package.name.debugsuffix",
"-c", "android.intent.category.LAUNCHER", "1"
}
이 방법의 장점 :
getAdbExeadb가 경로에 있어야 할 필요가 없으며 .NET에서 가리키는 sdk의 adb 버전을 사용합니다local.properties.- 이
monkey도구를 사용하면 런처 인 텐트를 보낼 수 있으므로 활동 이름을 알 필요가 없습니다.
task appStart(type: Exec, dependsOn: 'installDebug') {
commandLine android.adbExe, 'shell', 'am', 'start', '-n', 'com.example/.MyActivity'
}
이 작업을 작성하여 장치에 응용 프로그램을 설치하고 열 수도 있습니다. 나는 여러 가지고 있기 때문에 buildTypes및 flavors다른 응용 프로그램의 ID로를, 그것은 하드 코드 패키지 이름에 가능하지 않았다. 그래서 대신 이렇게 썼습니다.
android.applicationVariants.all { variant ->
task "open${variant.name.capitalize()}" {
dependsOn "install${variant.name.capitalize()}"
doLast {
exec {
commandLine "adb shell monkey -p ${variant.applicationId} -c android.intent.category.LAUNCHER 1".split(" ")
}
}
}
}
This would give you open{variant} for every install{variant} task you already have.
Build -> uninstall old verion -> install new version -> run application.
echo "Build application" && ./gradlew clean build &&
echo "Uninstall application" && adb uninstall [application package] &&
echo "Install application" && adb -d install app/build/outputs/apk/<build type>/[apk name].apk echo "Run application" &&
adb shell am start -n [application package]/.[application name]
Or if you want install and run application in debug type.
./gradlew installDebug && adb shell am start -n [application package]/.[application name]
'Programing' 카테고리의 다른 글
| 파일 이름과 함께 파일 크기를 인쇄하는 find 명령을 어떻게 얻습니까? (0) | 2020.09.11 |
|---|---|
| 비밀번호가 현재 정책 요구 사항을 충족하지 않습니다. (0) | 2020.09.11 |
| C # 구문-문자열을 쉼표로 배열로 분할, 일반 목록으로 변환 및 역순 (0) | 2020.09.11 |
| JSON ValueError : 예상 속성 이름 : 줄 1 열 2 (문자 1) (0) | 2020.09.11 |
| 문자열을 반환하는 값에 자바 스크립트 (jquery)로 정수 값을 추가하려면 어떻게해야합니까? (0) | 2020.09.11 |