Android-SQlite 데이터베이스 Android 장치 가져 오기


101

나는 모든 곳을 보았고 가능하다면 어떻게 할 수 있는지에 대한 정확한 답이나 자습서를 찾을 수 없습니다.

루팅하지 않고도 Android 기기의 데이터베이스를 가져올 수 있습니까? 내 PC에서 데이터를 수집하기 위해 어떤 방식 으로든 해당 데이터를 추출해야하는데 어떻게 수행 할 수 있습니까? 앱을 다시 프로그래밍하거나 여러분이 알고있는 방법을 다시 프로그래밍해야하나요?하지만 기기를 루팅하지 않고 기억하세요. 감사


다음은 실행 가능한 솔루션입니다. stackoverflow.com/a/29257875/291427
kmalmur



답변:


78

원하는 것을 달성하는 일반적인 방법은 ADB pull 명령을 사용하는 것입니다.

대부분의 경우 선호하는 또 다른 방법은 코드로 데이터베이스를 SD 카드에 복사하는 것입니다.

try {
    File sd = Environment.getExternalStorageDirectory();

    if (sd.canWrite()) {
        String currentDBPath = "/data/data/" + getPackageName() + "/databases/yourdatabasename";
        String backupDBPath = "backupname.db";
        File currentDB = new File(currentDBPath);
        File backupDB = new File(sd, backupDBPath);

        if (currentDB.exists()) {
            FileChannel src = new FileInputStream(currentDB).getChannel();
            FileChannel dst = new FileOutputStream(backupDB).getChannel();
            dst.transferFrom(src, 0, src.size());
            src.close();
            dst.close();
        }
    }
} catch (Exception e) {

}

아래와 같이 매니페스트의 SD에 쓰기 권한을 설정하는 것을 잊지 마십시오.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

1
SD 카드가없는 삼성 갤럭시 탭에서 이걸 사용하려고하는데 어떻게해야하나요?
DeX03 2012

그리고 더블 //?
DeX03 2014

예, 이것은 /가 특수 문자열 문자이기 때문입니다. // "//"에서 /가됩니다.
KarlKarlsom

4
데이터베이스 경로를 구축하는 대신 SQLiteDatabase에는 getPath메서드가 있습니다.

훌륭한 대답입니다. 매우 똑똑하고 유용하며 간단합니다.
Gundu Bandgar

179

기기가 Android v4 이상을 실행중인 경우 명령 을 사용하여 루트 없이 데이터베이스를 포함한 앱 데이터를 adb backup가져온 다음 백업 파일을 추출하고 sqlite 데이터베이스에 액세스 할 수 있습니다.

다음 명령을 사용하여 USB 케이블을 통해 PC에 앱 데이터를 먼저 백업 app.package.name하고, 애플리케이션의 실제 패키지 이름으로 바꿉니다.

adb backup -f ~/data.ab -noapk app.package.name

그러면 "장치 잠금을 해제하고 백업 작업을 확인하십시오"라는 메시지가 표시됩니다. 나중에 추출 할 수 있도록 백업 암호화를위한 비밀번호를 제공하지 마십시오 . 장치에서 "내 데이터 백업"버튼을 클릭합니다. 화면에 백업중인 패키지의 이름이 표시되고 성공적으로 완료되면 자동으로 닫힙니다.

data.ab홈 폴더 의 결과 파일에는 Android 백업 형식의 애플리케이션 데이터가 포함됩니다. 추출하려면 다음 명령을 사용하십시오.

dd if=data.ab bs=1 skip=24 | openssl zlib -d | tar -xvf -

위의 내용이 openssl:Error: 'zlib' is an invalid command.오류로 종료 되면 아래를 시도하십시오.

dd if=data.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -

결과는 apps/app.package.name/sqlite 데이터베이스를 포함하여 애플리케이션 데이터가 포함 된 폴더입니다.

자세한 내용은 원본 블로그 게시물을 확인하십시오 .


9
zlib없이 zlib를 컴파일하지 않은 경우 blog.shvetsov.com/2013/02/… 에서 답변을 확인 하여 파이썬으로 데이터를 추출하십시오.
ingh.am 2013

2
unpack 명령을 사용할 수없는 Windows 사용자의 경우 "Android Backup Extractor"Java 애플리케이션 ( sourceforge.net/projects/adbextractor )을 사용할 수 있습니다 . .ab 파일의 압축을 푸는 명령 은 forum.xda-developers.com/showthread.php?t=2011811 을 참조하십시오 .
lalitm 2014

7
MacBook Pro 에서 폴더에 아무 작업도 수행되지 않았 음을 보여준 후 HOWEVER로 openssl:Error: 'zlib' is an invalid command.응답 한 메시지 가 표시됩니다. 17 바이트에 불과하기 때문에 명령도 실패했다고 가정합니다. 디버그 앱에서 데이터베이스를 얻을 수 없다는 것이 나쁘다고 생각합니다 !! dd if=data.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -17+0 records in17+0 records out17 bytes transferred in 0.000064 secsadb pull
누군가 어딘가에

12
프로 팁 : 앱의 매니페스트가 표시되면이 백업 항목이 작동하지 않습니다android:allowBackup="false"
Someone Somewhere

9
opensslMac OS X의 My도 zlib명령을 지원하지 않았 으므로 brew :를 사용하여 명령을 다시 설치했습니다 brew reinstall openssl. 이것은 시스템 openssl을 대체하지 않습니다. 따라서 현재 세션에 대해서만 PATH 명령을 수정했습니다. 그 후이 export PATH=/usr/local/opt/openssl/bin:$PATH답변의 명령을 성공적으로 수행 할 수 있습니다.
Aleks N.

69

들어 디버깅 애플리케이션 1비 뿌리 장치 , 당신은 다음 명령을 사용할 수 있습니다 :

adb shell run-as package.name chmod 666 /data/data/package.name/databases/file
adb pull /data/data/package.name/databases/file

예:

adb shell run-as com.app chmod 666 /data/data/com.app/databases/data.db
adb pull /data/data/com.app/databases/data.db

환경 변수에 대한 PATH adb를 설정하거나 cd 명령을 사용하여 android sdk 폴더 platform-tools.

예:

cd /folder/android-sdk/platform-tools/

그런 다음 위의 명령을 사용하십시오.


1 Play 스토어에있는 대부분의 앱 은 매니페스트에서 디버깅 가능 플래그 를 설정해야하므로 디버깅 할 수 없습니다 .


8
package.name앱 패키지로 교체 한 후 오류가 반환됩니다.run-as: Package 'com.my.app' is unknown
Someone Somewhere

3
모든 전화기에서 작동하지 않는 것 같습니다. 예를 들어 Nexus 4에서 작동하지만 SGS4에서는 작동하지 않습니다.
Roman Minenok

2
db 파일은 어디에 저장됩니까?
Vojtěch Pešek 2014

3
이것은 나를 위해 작동했지만 Android 5로 업데이트 된 Nexus 7에서 작동하지 않는 것 같습니다. 누구든지 Android 5에서 작동하는지 확인할 수 있습니까?
treesAreEverywhere

15
다음은 Android 5 (Lollipop) adb shell "run-as [package_name] chmod -R 777 / data / data / [package_name] / databases"adb shell "mkdir -p / sdcard / tempDB"adb shell "cp -r / data / data / [패키지 _ 이름] / databases / / sdcard / tempDB /. " adb pull sdcard / tempDB /. ADB 쉘 "RM -r / SDCARD / 임시 데이터베이스 / *"
루빈 유

55

여기에있는 대부분의 답변은 필요한 것보다 훨씬 더 복잡합니다. 휴대 전화에서 컴퓨터로 앱 데이터베이스를 복사하려면 다음 명령이 필요합니다.

adb -d shell "run-as your.package.name cat databases/database.name" > target.sqlite

위의 명령에 입력해야하는 것은 앱의 패키지 이름, 데이터베이스 이름, 선택적으로 데이터베이스를 복사 할 대상 / 위치입니다.

이 특정 명령은 컴퓨터에 장치가 하나만 연결되어있는 경우에만 작동합니다. 이 -d매개 변수는 연결된 유일한 장치가 대상이됨을 의미합니다. 그러나 대신 사용할 수있는 다른 매개 변수가 있습니다.

  • -e 실행중인 유일한 에뮬레이터를 대상으로합니다.
  • -s <serialnumber> 특정 일련 번호가있는 기기를 타겟팅합니다.


이 파일을 어떻게 열 수 있습니까?
뽑아 낸

@Jehad : 저도 같은 문제가있었습니다. 나는이 방법을 찾았고 그것은 나를 위해 작동합니다. 전화기에 SSHDroid를 설치하십시오. FileZilla를 adb -d shell "run-as your.package.name cat databases/database_name.db > /mnt/sdcard/database_name.db"시작하고 SSHDroidSFTP 프로토콜을 통해 전화기에 연결하십시오. / mnt / sdcard를 기본 원격 디렉토리로 설정합니다.
Zoltán Süle

자신의 앱 데이터베이스를 얻고 싶을 때 가장 쉬운 대답입니다. 두 가지 추가 사항 : 1) 데이터베이스 이름이 확실하지 않은 경우 ls 명령을 사용하여 데이터베이스 폴더 ( adb -d shell "run-as your.package.name ls databases") 의 파일을 나열 할 수 있습니다. 2) 데이터베이스와 함께 다른 관련 파일을 가져올 수 있습니다. -smh 및 -wal 파일을 추출하는 제 경우 는 SQLite 용 DB 브라우저 에서 데이터베이스를 열 수있는 유일한 방법이었습니다
Ronan

36

Android Studio 3.0 이상 버전을 사용하면 애플리케이션이 루팅되지 않은 기기에서 디버그 모드로 실행되는 경우 데이터베이스 (공유 환경 설정, 캐시 디렉토리 등)를 가져올 수 있습니다.

android studio를 사용하여 데이터베이스를 가져 오려면 다음 단계를 따르십시오.

  1. 클릭 보기 > 도구 윈도우 > 장치 파일 탐색기를 .
  2. 확장 / 데이터 / 데이터 / [패키지 이름] 노드를.

Android Studio 3.0에서 따라야 할 단계


감사. 에뮬레이터에서 파일을 다운로드했지만 루팅되지 않은 Galaxy S4에서는 가져올 수 없습니다.
CoolMind

모든 앱에서 데이터베이스를 가져올 수 있습니까? 아니면 자신의 앱에서만 가져올 수 있습니까?
live-love

전제 조건이 앱을 제외한 모든 앱은 디버그 가능해야합니다.
Shahidul

6
 adb shell "run-as [package.name] chmod -R 777 /data/data/[package.name]/databases" 
 adb shell "mkdir -p /sdcard/tempDB" 
 adb shell "cp -r /data/data/[package.name]/databases/ /sdcard/tempDB/." 
 adb pull sdcard/tempDB/ . 
 adb shell "rm -r /sdcard/tempDB/*"

5

Ubuntu의 경우 (뿐만 아니라?) :

Sergeis Answer를 참조 하지만 openssl 대신 zlib- flate를 사용하십시오.

고양이 appbackup.ab | (dd bs = 24 count = 0 skip = 1; cat) | zlib-flate -uncompress> appbackup.tar

그렇지 않으면 openssl이 던질 것입니다.

openssl : 오류 : 'zlib'는 잘못된 명령입니다.

openssl은 Ubuntu에서 zlib 지원으로 컴파일되지 않기 때문에


1

나에게 정말 효과가있는 것은 아무것도 없기 때문이다. 나는 함께 결합 된 다른 답변을 기반으로 작은 Windows BATCH 스크립트를 만듭니다. 누군가를 돕기를 바랍니다. 간단히 사용 : backupDatabase <PackageName> <ApplicationName> [TargetDirectory]. Sergei의 백업 방법과 Android Backup Extractor를 사용 합니다.

@echo off

if [%1]==[] goto usage
if [%2]==[] goto usage
if NOT [%4]==[] goto usage

@echo Processing: preparations
set PACKAGE=%1
set APPLICATION_NAME=%2
set TARGET_DIR=%cd%
IF NOT "%~3"=="" set TARGET_DIR=%3

set PATH_ADB="c:\Program Files (x86)\Android\android-studio\sdk\platform-tools"
set PATH_ABE="c:\Programs\android-backup-extractor-20140630-bin"
set PATH_7Z="c:\Program Files\7-Zip"

@echo Processing: backup
%PATH_ADB%\adb.exe backup -f %TARGET_DIR%\%APPLICATION_NAME%\%APPLICATION_NAME%.ab -noapk %PACKAGE%

@echo Processing: unpack
java -jar %PATH_ABE%\abe.jar unpack %TARGET_DIR%\%APPLICATION_NAME%\%APPLICATION_NAME%.ab %TARGET_DIR%\%APPLICATION_NAME%\%APPLICATION_NAME%.ab.tar

@echo Processing: extract
cd %TARGET_DIR%\%APPLICATION_NAME%
%PATH_7Z%\7z.exe e %APPLICATION_NAME%.ab.tar "apps\%PACKAGE%\db\%APPLICATION_NAME%"

@echo Processing: cleaning
del %APPLICATION_NAME%.ab
del %APPLICATION_NAME%.ab.tar
goto :eof

:usage
@echo.Pull out SQLite database file from your android device.
@echo.Needs: - connected device
@echo.       - device enable backup.
@echo.       - application enable backup
@echo.       - application in debug mode
@echo.       - installed Android Backup Extractor 
@echo.       - installed command line TAR extractor (7z, ...)
@echo.Does NOT need: root device
@echo.
@echo.Uses: - ADB backup (set PATH_ADB)
@echo.      - Android Backup Extractor (http://sourceforge.net/projects/adbextractor/) (set PATH_ABE)
@echo.      - Extract TAR container, uses 7z (set PATH_7Z)
@echo.
@echo.Usage: backupDatabase ^<PackageName^> ^<ApplicationName^> [TargetDirectory]
@echo.Example: backupDatabase com.foo.example ExampleApp 
@echo Example: backupDatabase com.foo.example ExampleApp workspace\AndroidProjects\Example
exit /B 1

1

장치에서 sqlite 파일을 쉽게 추출 할 수 있습니다 (루트 필요 없음).

  1. SDK 폴더로 이동
  2. cd 플랫폼 도구
  3. adb 시작

    cd / sdk / platform-tools ./adb shell

    그런 다음 터미널에 다음 명령을 입력하십시오

    ./adb -d shell "run-as com.your_packagename cat /data/data/com.your_packagename/databases/jokhanaNepal> /sdcard/jokhana.sqlite"

    예를 들어

    ./adb -d shell "run-as com.yuvii.app cat /data/data/com.yuvii.app/databases/jokhanaNepal> /sdcard/jokhana.sqlite"


1

Android 6에서 수행하려는 경우 권한을 요청 하고이 질문에 대한 답변 코드를 사용하십시오.

if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { 
    ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, STORAGE_PERMISSION_RC); 
    return; 
} 

일단 부여되면

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == STORAGE_PERMISSION_RC) {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            //permission granted  start reading or writing database
        } else { 
            Toast.makeText(this, "No permission to read external storage.", Toast.LENGTH_SHORT).show();
        } 
    } 
} 

1

또는 내 라이브러리 Ultra Debugger를 사용할 수 있습니다 . 데이터베이스를 파일로 다운로드하거나 브라우저에서 직접 값을 편집 할 수 있습니다. 루트가 필요하지 않으며 사용하기 매우 쉽습니다.


1

Mac (루트 필요 없음)

1. Go to platform-tools folder.
2) Run following command in terminal.

./adb -d shell "run-as your.package.name cat databases/database.sqlite" > database.sqlite

platform-tools 폴더의 sqlite 파일을 복사합니다.


이것은 앱이 디버깅을 위해 컴파일 된 경우에만 작동하는 것 같습니다.
David Berry

@DavidBerry 예, 디버깅을 위해 컴파일 된 경우 db를 가져옵니다. 그렇지 않으면 앱의 db를 가져올 수 있습니다. 그리고 앱의 심각한 보안 문제가 될 것입니다. :)
Yogesh Suthar

0
 > is it possible to pull in any way a database of an Android device without having to root it? 

예, Android 앱이 모든 사람이 액세스 할 수있는 데이터베이스의 파일 복사본을 만드는 경우입니다.

Android는 앱의 개인 데이터를 보호하므로 다른 앱에서 보거나 액세스 할 수 없습니다. 데이터베이스는 개인 데이터입니다. 물론 앱은 데이터베이스 파일을 읽을 수 있으므로 공개 된 일부 파일에 대한 파일 복사를 수행 할 수 있습니다.


0

루팅 된 기기에서 다음을 수행 할 수 있습니다.

// check that db is there
>adb shell
# ls /data/data/app.package.name/databases
db_name.sqlite // a custom named db
# exit
// pull it
>adb pull /data/app.package.name/databases/db_name.sqlite

나는 100 % 확신하지만 난 생각 풀 필요 전에> SU 및 사용 권한 부여
pavol.franek

0

Lam Vinh가 제공 한 답변에 따라 1 세대 Nexus 7에서 저에게 적합한 간단한 배치 파일이 있습니다. 패키지 이름과 데이터베이스 이름 (.sqlite 확장자 제외)을 입력하라는 메시지가 표시되고 c : \ temp에서. 여기에서는 환경 변수에 Android sdk가 설정되어 있다고 가정합니다.

@echo off
cd c:\temp\

set /p UserInputPackage= Enter the package name: 
set /p UserInputDB= Enter the database name: 

@echo on
adb shell "run-as %UserInputPackage% chmod 666 /data/data/%UserInputPackage%/databases/%UserInputDB%.sqlite"
adb pull /data/data/%UserInputPackage%/databases/%UserInputDB%.sqlite
@echo off
pause

0

Android 4.0 이상이고 Mac 을 사용하는 경우 앱 콘텐츠를 데스크톱에 저장하는 루비 스크립트가 있습니다. 테스트하지는 않았지만 우분투에서도 작동 할 것이라고 생각합니다.

puts "enter your package name"
package_name = gets.chomp
puts "press the 'Back up my data' button on your device"
`adb backup -f ~/Desktop/data.ab -noapk #{package_name}`
puts "press enter once once the 'Backup finished' toast has appeared"
gets.chomp
puts "extracting..."
`dd if=data.ab bs=1 skip=24 | openssl zlib -d | tar -xvf -`

실행하려면 -> ruby ​​your_ruby_file_name.rb

이 스크립트는 "행복한 경로"전용이므로 기기가 연결되어 있고 adb가 프로필에 추가되었는지 확인하세요.


0

나는 내부 저장소 (adb가있는 PC가 아닌)에서 앱 데이터베이스를 "저장"하고 "복원"하는 완전한 솔루션을 제공합니다.

두 가지 방법으로 하나는 저장하고 다른 하나는 데이터베이스를 복원합니다. MainActivity의 onCreate () 끝에 이러한 메서드를 사용합니다 (데이터베이스를 저장하거나 복원하려는 경우 둘 중 하나).

내부 저장소에 데이터베이스 저장 :

void copyDatabase (){
        try {
            final String inFileName = "/data/data/<pakage.name>/databases/database.db";
            final String outFileName = Environment.getExternalStorageDirectory() + "database_backup.db";
            File dbFile = new File(inFileName);
            FileInputStream fis = new FileInputStream(dbFile);


            Log.d(TAG, "copyDatabase: outFile = " + outFileName);

            // Open the empty db as the output stream
            OutputStream output = new FileOutputStream(outFileName);

            // Transfer bytes from the inputfile to the outputfile
            byte[] buffer = new byte[1024];
            int length;
            while ((length = fis.read(buffer)) > 0) {
                output.write(buffer, 0, length);
            }

            // Close the streams
            output.flush();
            output.close();
            fis.close();
        }catch (Exception e){
            Log.d(TAG, "copyDatabase: backup error");
        }
    }

내부 저장소에서 데이터베이스 복원 :

void restoreDatabase (){
        try {
            final String inFileName = Environment.getExternalStorageDirectory() + "database_backup.db";
            final String outFileName = "/data/data/<package.name>/databases/database.db";
            File dbFile = new File(inFileName);
            FileInputStream fis = new FileInputStream(dbFile);

            Log.d(TAG, "copyDatabase: outFile = " + outFileName);

            // Open the empty db as the output stream
            OutputStream output = new FileOutputStream(outFileName);

            // Transfer bytes from the inputfile to the outputfile
            byte[] buffer = new byte[1024];
            int length;
            while ((length = fis.read(buffer)) > 0) {
                output.write(buffer, 0, length);
            }

            // Close the streams
            output.flush();
            output.close();
            fis.close();
        }catch (Exception e){
            Log.d(TAG, "copyDatabase: backup error");
        }
    }

0

일이 자동화되면 항상 더 좋습니다. 그래서 ADB를 사용하여 장치에서 db 파일을 복사하는 간단한 파이썬 스크립트작성 했습니다. 자주 사용하면 개발 시간을 많이 절약 할 수 있습니다.

기기가 루팅되지 않은 경우 디버깅 가능한 앱 에서만 작동합니다 .

여기에 요점에 대한 링크가 있습니다.

다음과 같이 실행하십시오. python copyandroiddbfile.py

import sys
import subprocess
import re

#/
# Created by @nieldeokar on 25/05/2018.
#/

# 1. Python script which will copy database file of debuggable apps from the android device to your computer using ADB.
# 2. This script ask for PackageName and DatabaseName at runtime.
# 3. You can make it static by passing -d at as command line argument while running script and setting defaults in following way.
# 4. Edit script and change the values of varialbe packageName and dbName to debuggable app package name and database name then
# run script as : python Copydbfileandroid.py -d 

useDefaults = False


def checkIfPackageInstalled(strSelectedDevice) :

    packageName = 'com.nileshdeokar.healthapp.debug'
    dbName = 'healthapp.db'


    if not useDefaults : 
        print('Please enter package name : ')
        packageName = raw_input()

    packageString = 'package:'+packageName

    try:
        adbCheckIfPackageInstalledOutput = subprocess.check_output('adb -s ' + strSelectedDevice + ' shell pm list packages | grep -x '+ packageString, shell=True)
    except subprocess.CalledProcessError as e:
                print "Package not found"
                return


    if packageString.strip() == adbCheckIfPackageInstalledOutput.strip() : 
        if not useDefaults : 
            print('Please enter db name : ')
            dbName = raw_input()

        adbCopyDbString = 'adb -s '+strSelectedDevice + ' -d shell \"run-as '+packageName+' cat /data/data/'+packageName+'/databases/'+ dbName +'\" > '+dbName

        try:
            copyDbOp = subprocess.check_output(adbCopyDbString,shell=True)
        except subprocess.CalledProcessError as e:
                return

        if "is not debuggable" in copyDbOp :
            print packageString + 'is nto debuggable'

        if copyDbOp.strip() == "":
            print 'Successfully copied '+dbName + ' in current directory'

    else :
        print 'Package is not installed on the device'



defaultString = "-d"
if len(sys.argv[1:]) > 0 and sys.argv[1] == defaultString :
        useDefaults = True

listDevicesOutput = subprocess.check_output("adb devices", shell=True)
listDevicesOutput = listDevicesOutput.replace("List of devices attached"," ").replace("\n","").replace("\t","").replace("\n\n","")

numberofDevices = len(re.findall(r'device+', listDevicesOutput))

connectedDevicesArray = listDevicesOutput.split("device")   
del connectedDevicesArray[-1] 


strSelectedDevice = ''
if(numberofDevices > 1) :
    print('Please select the device : \n'),

    for idx, device in enumerate(connectedDevicesArray):
        print idx+1,device

    selectedDevice = raw_input()

    if selectedDevice.isdigit() :
        intSelected = int(selectedDevice)
        if 1 <= intSelected <= len(connectedDevicesArray) :
            print 'Selected device is : ',connectedDevicesArray[intSelected-1]
            checkIfPackageInstalled(connectedDevicesArray[intSelected-1])
        else :
            print 'Please select in range'
    else : 
        print 'Not valid input'

elif numberofDevices == 1 :
    checkIfPackageInstalled(connectedDevicesArray[0])
elif numberofDevices == 0 :
    print("No device is attached")

-1

데이터베이스 파일을 원하는 경우

DDMS> 파일 탐색보기

패키지 이름에서 db 파일 찾기

그런 다음 장치에서 파일 가져 오기를 클릭합니다 (루팅 된 장치 만 해당).


3
이것은 할 수 있지만 루팅 된 장치에서 내 질문의 요점입니다. 루팅되지 않은 장치에서 수행하는 방법
DeX03

1
루팅되지 않은 기기에서는 작동하지 않습니다. 귀하의 답변은이를 명시해야합니다.
tony9099 2013-08-30
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.