명령 줄을 통해 실제로 apk를 성공적으로 설치할 수 없습니다.

Nov 18 2020

Pixel 3XL은 adb를 통해 앱을 설치할 수 없지만 AS 실행을 사용하여 앱을 설치할 수 있습니다. 명령 줄을 사용하여 apk를 설치하고 성공적이라고 말했습니다. 하지만 런처에서 아이콘이 보이지 않았습니다. 또한 설치된 APK를 나열하려고 할 때 목록에 없습니다.

WM-C02WM0T3HTD8:~ zgong$ adb shell cmd package list packages | grep `common_string_in_package_name_with_installed_app_package` package:A package:B package:C package:D WM-C02WM0T3HTD8:~ zgong$ adb install XXXX.apk
Performing Streamed Install
Success
WM-C02WM0T3HTD8:~ zgong$ adb shell cmd package list packages | grep `common_string_in_package_name_with_installed_app_package`
package:A
package:B
package:C
package:D

새 패키지가 설치되지 않았습니다.

WM-C02WM0T3HTD8:~ zgong$ adb shell cmd package list packages | grep `unique string_in_package_name`

새 패키지가 설치되지 않았습니다.

이 문제가 발생하는 것이 너무 이상합니다.

adb를 사용하여 다른 Android 기기에 APK를 설치할 수 있습니다. Android 4.0.1을 사용하고 있습니다.

누구든지 그것을 고치는 방법을 알고 있습니까?

업데이트 1 :

commen은 adb install이 adb shell pm install. 나는 adb shell pm옵션 매뉴얼을 얻기 위해 실행한다 . 디버그에 도움이 될 수있는 옵션이없는 것 같습니다.

WM-C02WM0T3HTD8:android_vdca zgong$ adb shell pm
Package manager (package) commands:
  help
    Print this help text.



  install [-rtfdgw] [-i PACKAGE] [--user USER_ID|all|current]
       [-p INHERIT_PACKAGE] [--install-location 0/1/2]
       [--install-reason 0/1/2/3/4] [--originating-uri URI]
       [--referrer URI] [--abi ABI_NAME] [--force-sdk]
       [--preload] [--instant] [--full] [--dont-kill]
       [--enable-rollback]
       [--force-uuid internal|UUID] [--pkg PACKAGE] [-S BYTES]
       [--apex] [--wait TIMEOUT]
       [PATH [SPLIT...]|-]
    Install an application.  Must provide the apk data to install, either as
    file path(s) or '-' to read from stdin.  Options are:
      -R: disallow replacement of existing application
      -t: allow test packages
      -i: specify package name of installer owning the app
      -f: install application on internal flash
      -d: allow version code downgrade (debuggable packages only)
      -p: partial application install (new split on top of existing pkg)
      -g: grant all runtime permissions
      -S: size in bytes of package, required for stdin
      --user: install under the given user.
      --dont-kill: installing a new feature split, don't kill running app
      --restrict-permissions: don't whitelist restricted permissions at install
      --originating-uri: set URI where app was downloaded from
      --referrer: set URI that instigated the install of the app
      --pkg: specify expected package name of app being installed
      --abi: override the default ABI of the platform
      --instant: cause the app to be installed as an ephemeral install app
      --full: cause the app to be installed as a non-ephemeral full app
      --install-location: force the install location:
          0=auto, 1=internal only, 2=prefer external
      --install-reason: indicates why the app is being installed:
          0=unknown, 1=admin policy, 2=device restore,
          3=device setup, 4=user request
      --force-uuid: force install on to disk volume with given UUID
      --apex: install an .apex file, not an .apk
      --wait: when performing staged install, wait TIMEOUT milliseconds
          for pre-reboot verification to complete. If TIMEOUT is not
          specified it will wait for 60000 milliseconds. 

업데이트 2 :

apk를 기기에 복사합니다.

WM-C02WM0T3HTD8:android_vdca zgong$ adb push ~/Downloads/NonSIMCC-151-app-release-signed.apk /storage/emulated/0/Download/
/Users/zgong/Downloads/NonSIMCC-151-app-release-signed.apk: 1 file pushed. 12.7 MB/s (34493209 bytes in 2.597s)

pm installadb 쉘을 통해 사용

255|crosshatch:/storage/emulated/0/Download $ pm install NonSIMCC-151-app-release-signed.apk avc: denied { read } for scontext=u:r:system_server:s0 tcontext=u:object_r:fuse:s0 tclass=file permissive=0 System server has no access to read file context u:object_r:fuse:s0 (from path /storage/emulated/0/Download/NonSIMCC-151-app-release-signed.apk, context u:r:system_server:s0) Error: Unable to open file: NonSIMCC-151-app-release-signed.apk Consider using a file under /data/local/tmp/ Error: Can't open file: NonSIMCC-151-app-release-signed.apk Exception occurred while executing 'install': java.lang.IllegalArgumentException: Error: Can't open file: NonSIMCC-151-app-release-signed.apk at com.android.server.pm.PackageManagerShellCommand.setParamsSize(PackageManagerShellCommand.java:519) at com.android.server.pm.PackageManagerShellCommand.doRunInstall(PackageManagerShellCommand.java:1282) at com.android.server.pm.PackageManagerShellCommand.runInstall(PackageManagerShellCommand.java:1248) at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:184) at android.os.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:98) at android.os.ShellCommand.exec(ShellCommand.java:44) at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:21605) at android.os.Binder.shellCommand(Binder.java:929) at android.os.Binder.onTransact(Binder.java:813) at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:4603)
    at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:4306)
    at android.os.Binder.execTransactInternal(Binder.java:1159)
    at android.os.Binder.execTransact(Binder.java:1123)

업데이트 3

crosshatch:/ $ cp /storage/emulated/0/Download/NonSIMCC-151-app-release-signed.apk /data/local/tmp/apk1.apk \crosshatch:/ $ ls -la /data/local/tmp
total 51656
drwxrwx--x 4 shell shell     3488 2020-11-19 10:13 .
drwxr-x--x 4 root  root      3488 2019-11-19 14:53 ..
drwxrwxrwx 4 shell shell     3488 2020-11-10 13:55 .studio
-rw-rw---- 1 shell shell 34493209 2020-11-19 10:13 apk1.apk
-rw-rw-rw- 1 shell shell  4322329 1970-01-01 08:00 apk1592483766800.apk
-rw-rw-rw- 1 shell shell  4808820 1970-01-01 08:00 apk1597806836158.apk
-rw-rw-rw- 1 shell shell  4808820 1970-01-01 08:00 apk1597807282659.apk
-rw-rw-rw- 1 shell shell  4375675 1970-01-01 08:00 apk1599201485983.apk
drwxrwxrwx 5 shell shell     3488 2020-11-02 00:17 perfd
-rw-rw-rw- 1 shell shell        8 1970-01-01 08:00 vysor.pwd
crosshatch:/ $ pm install /data/local/tmp/ap apk1.apk apk1592483766800.apk apk1597806836158.apk apk1597807282659.apk apk1599201485983.apk crosshatch:/ $ pm install /data/local/tmp/apk1.apk
Success
crosshatch:/ $ exit

실제로 설치되었는지 확인하려면

WM-C02WM0T3HTD8:android_vdca zgong$ /Users/zgong/Library/Android/sdk/build-tools/29.0.3/aapt2 dump packagename ~/Downloads/NonSIMCC-151-app-release-signed.apk
com.nonsimcc.vmcp
WM-C02WM0T3HTD8:android_vdca zgong$ adb shell cmd package list packages | grep vmcp

여전히 실제 설치에 실패했습니다.

업데이트 4

Pixel 3XL 기기를 재부팅하려고했습니다. 여전히 불운.

업데이트 5

방금 테스트하고 이상한 결과를 얻었습니다.

Android Studio에서 실행을 클릭하면 앱이 설치되고 실행될 수 있습니다.

WM-C02WM0T3HTD8:mep_login_android zgong$ adb shell cmd package list packages | grep com.visa.mobileEnablement.loginFeatureDemo
package:com.visa.mobileEnablement.loginFeatureDemo

Android Studio의 실행 섹션에서

11/19 11:51:07: Launching 'demoApp' on Google Pixel 3 XL.
Install successfully finished in 1 s 290 ms.
$ adb shell am start -n "com.visa.mobileEnablement.loginFeatureDemo/com.visa.mobileEnablement.loginFeatureDemo.DemoActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Connected to process 27798 on device 'google-pixel_3_xl-8BBY0WYAG'.
Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.

Run에서 빌드 한 동일한 apk를 사용하고 adb install

WM-C02WM0T3HTD8:mep_login_android zgong$ adb install -t demoApp/build/outputs/apk/classic/debug/demoApp-classic-debug.apk
Performing Streamed Install
Success
WM-C02WM0T3HTD8:mep_login_android zgong$ adb shell cmd package list packages | grep com.visa.mobileEnablement.loginFeatureDemo

adb install와 Android Studio 설치 프로세스 의 차이점은 무엇입니까 ?

업데이트 6 :

이미 USB 디버깅 인증을 취소하려고 시도했습니다. 여전히 불운입니다.

WM-C02WM0T3HTD8:mep_login_android zgong$ adb install -t demoApp/build/outputs/apk/classic/debug/demoApp-classic-debug.apkPerforming Streamed Install
Success
WM-C02WM0T3HTD8:mep_login_android zgong$ adb shell cmd package list packages | grep com.visa.mobileEnablement.loginFeatureDemo

또한 개발자 옵션을 닫고 다시 열었습니다. USB 기본 설정-USB 사용, PTP 또는 데이터 전송 없음을 선택합니다. 여전히 불운

WM-C02WM0T3HTD8:mep_login_android zgong$ adb install -t demoApp/build/outputs/apk/classic/debug/demoApp-classic-debug.apkPerforming Streamed Install
Success
WM-C02WM0T3HTD8:mep_login_android zgong$ adb shell cmd package list packages | grep com.visa.mobileEnablement.loginFeatureDemo

업데이트 7 :

제가해야 할 OS 업데이트가 있다는 것을 알게되었습니다.

업데이트 7

일치하지 않는 abi로 인해 에뮬레이터에 설치할 때 "adb install"이 작동하지 않습니다.

AVD를 만듭니다.

Name: Pixel_3_XL_API_Q

CPU/ABI: Google APIs Intel Atom (x86)

Path: /Users/zgong/.android/avd/Pixel_3_XL_API_Q.avd

Target: google_apis [Google APIs] (API level Q)

Skin: pixel_3_xl

fastboot.chosenSnapshotFile: 

runtime.network.speed: full

hw.accelerometer: yes

hw.device.name: pixel_3_xl

hw.lcd.width: 1440

image.androidVersion.codename: Q

hw.initialOrientation: Portrait

image.androidVersion.api: 28

tag.id: google_apis

hw.mainKeys: no

hw.camera.front: emulated

avd.ini.displayname: Pixel 3 XL API Q

hw.gpu.mode: auto

hw.ramSize: 8192

PlayStore.enabled: false

fastboot.forceColdBoot: no

hw.cpu.ncore: 4

hw.keyboard: yes

hw.sensors.proximity: yes

hw.dPad: no

hw.lcd.height: 2960

vm.heapSize: 4096

skin.dynamic: yes

hw.device.manufacturer: Google

hw.gps: yes

hw.audioInput: yes

image.sysdir.1: system-images/android-Q/google_apis/x86/

showDeviceFrame: yes

hw.camera.back: virtualscene

AvdId: Pixel_3_XL_API_Q

hw.lcd.density: 560

hw.arc: false

hw.device.hash2: MD5:9bbaa408d4a8691920c4057ef7844f35

fastboot.forceChosenSnapshotBoot: no

fastboot.forceFastBoot: yes

hw.trackBall: no

hw.battery: yes

hw.sdCard: no

tag.display: Google APIs

runtime.network.latency: none

disk.dataPartition.size: 40G

hw.sensors.orientation: yes

avd.ini.encoding: UTF-8

hw.gpu.enabled: yes

Android Studio에서 빌드 한 것과 동일한 apk를 설치하려고했습니다.

WM-C02WM0T3HTD8:mep_login_android zgong$ adb -e install -t -r demoApp/build/outputs/apk/classic/debug/demoApp-classic-debug.apk
Performing Streamed Install
adb: failed to install demoApp/build/outputs/apk/classic/debug/demoApp-classic-debug.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]

업데이트 8 : 다른 장치에 설치할 때 "adb install"작동

따라서 동일한 빌드를 사용하여 다른 Pixel 3 기기에 설치합니다. 올바르게 설치할 수 있습니다.

WM-C02WM0T3HTD8:mep_login_android zgong$ adb -d install -t demoApp/build/outputs/apk/classic/debug/demoApp-classic-debug.apk
Performing Streamed Install
Success

이런 식으로 빌드의 용의자를 제외합니다.

업데이트 9 :

이전에 작동하지 않았던 Pixel 3XL의 경우 :

WM-C02WM0T3HTD8:mep_login_android zgong$ /Users/zgong/Library/Android/sdk/build-tools/29.0.3/aapt2 dump packagename demoApp/build/outputs/apk/classic/debug/demoApp-classic-debug.apk
com.visa.mobileEnablement.loginFeatureDemo


WM-C02WM0T3HTD8:mep_login_android zgong$ adb -d uninstall com.visa.mobileEnablement.loginFeatureDemo Success WM-C02WM0T3HTD8:mep_login_android zgong$ adb install demoApp/build/outputs/apk/classic/debug/demoApp-classic-debug.apk
error: more than one device/emulator
Performing Push Install
adb: error: failed to get feature set: more than one device/emulator
WM-C02WM0T3HTD8:mep_login_android zgong$ adb -d install demoApp/build/outputs/apk/classic/debug/demoApp-classic-debug.apk Performing Streamed Install adb: failed to install demoApp/build/outputs/apk/classic/debug/demoApp-classic-debug.apk: Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI] WM-C02WM0T3HTD8:mep_login_android zgong$ adb -d install -t demoApp/build/outputs/apk/classic/debug/demoApp-classic-debug.apk
Performing Streamed Install
Success
WM-C02WM0T3HTD8:mep_login_android zgong$ adb shell cmd package list packages | grep visaerror: more than one device/emulator WM-C02WM0T3HTD8:mep_login_android zgong$ adb -d shell cmd package list packages | grep com.visa.mobileEnablement.loginFeatureDemo
package:com.visa.mobileEnablement.loginFeatureDemo

이제 Launcher에서 아이콘을 볼 수 있고 앱을 실행할 수 있습니다. 정말 놀랍습니다.

답변

1 FrancisBacon Nov 20 2020 at 08:28

apk ( adb uninstall)를 제거한 후 adb install다시 실행하면 수정 됩니다.

WM-C02WM0T3HTD8:Downloads zgong$ adb -d install ~/Downloads/NonSIMCC-151-app-release-signed.apk Performing Streamed Install Success WM-C02WM0T3HTD8:Downloads zgong$ /Users/zgong/Library/Android/sdk/build-tools/29.0.3/aapt2 dump packagename ~/Downloads/NonSIMCC-151-app-release-signed.apk
com.nonsimcc.vmcp
WM-C02WM0T3HTD8:Downloads zgong$ adb -d shell cmd package list packages | grep com.nonsimcc.vmcp WM-C02WM0T3HTD8:Downloads zgong$ adb uninstall com.nonsimcc.vmcp
error: more than one device/emulator
- waiting for device -
error: more than one device/emulator
WM-C02WM0T3HTD8:Downloads zgong$ adb -d uninstall com.nonsimcc.vmcp Success WM-C02WM0T3HTD8:Downloads zgong$ adb -d shell cmd package list packages | grep com.nonsimcc.vmcp
WM-C02WM0T3HTD8:Downloads zgong$ adb -d install ~/Downloads/NonSIMCC-151-app-release-signed.apk Performing Streamed Install Success WM-C02WM0T3HTD8:Downloads zgong$ adb -d shell cmd package list packages | grep com.nonsimcc.vmcp
package:com.nonsimcc.vmcp
SyedIrfanHussaini Nov 18 2020 at 12:15

빌드로 이동 한 다음 번들 / APK를 빌드 한 다음 APK를 빌드합니다.