অ্যান্ড্রয়েড এমুলেটর কোথায় এসকিউএল ডাটাবেস সঞ্চয় করে?


108

আমি একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশন নিয়ে কাজ করছি যা এসকিউএল ডাটাবেসে ডেটা সঞ্চয় করে। আমার প্রশ্ন হ'ল, আপনি যখন এমুলেটর ব্যবহার করছেন তখন এই ডাটাবেস ফাইলটি ফাইল সিস্টেমে কোথায় সঞ্চয় হয়?

আমি দেখেছি এটি সঞ্চিত আছে

/data/data/package_name/databases

তবে আমার স্থানীয় মেশিনের হার্ড ড্রাইভটি আসলে কোথায় মানচিত্র করে তা জানতে হবে। ডেটাবেসটি এমুলেটরটির একাধিক রান চালিয়ে যায়, এমনকি মেশিনটি বন্ধ করে দেওয়ার পরেও এটি কেবল র‍্যামে থাকতে পারে না ...

উত্তর:


55

এমুলেটরটির ফাইল সিস্টেম আপনার হার্ড ড্রাইভের ডিরেক্টরিতে মানচিত্র করে না। এমুলেটরটির ডিস্ক চিত্রটি একটি চিত্র ফাইল হিসাবে সংরক্ষণ করা হয়, যা আপনি কোনও এক্লিপসের মাধ্যমে (টুলবারে জি 1-লুকিং আইকনটি সন্ধান করুন), বা এমুলেটর বাইনারি নিজেই (বিকল্পগুলির বর্ণনার জন্য "এমুলেটর -হেল্প" চালান) পরিচালনা করতে পারেন) ।

কমান্ড লাইন থেকে একটি চলমান এমুলেটরে জ্যাক করতে অ্যাডবি ব্যবহার করে আপনি সেরা। আপনি যদি সুনির্দিষ্ট ডিরেক্টরি এবং ফাইলের নাম পেতে পারেন তবে এমুলেটর থেকে আপনার নিয়মিত হার্ড ড্রাইভে ডাটাবেস ফাইলটি পেতে একটি "অ্যাডবি টান" করতে পারেন।

সম্পাদনা করুন : সরানো পরামর্শ যে এটি অরোটেড ডিভাইসগুলির জন্যও কাজ করে - এটি কেবল অনুকরণকারী এবং ডিভাইসগুলির জন্য কাজ করে যেখানে আপনি রুট হিসাবে অ্যাডবি পরিচালনা করছেন।


6
আমি গ্রহন থেকে ডিডিএমের মাধ্যমে ডিবি বন্ধ করে দিয়েছি। আমার পরিবর্তনগুলি করেছেন, তারপরে পিছনে ধাক্কা। কবজির মতো কাজ করেছেন।
I82Much 17

@ I82 অনেকগুলি আমার জন্যও কাজ করেছে, গ্রহস্বের দৃষ্টিভঙ্গিটিকে ddms এ পরিবর্তন করুন এবং তারপরে আপনি সেখানে ডেটা ফাইলটি পেতে পারেন han ধন্যবাদ।
ভ্যানজিলভ

2013 আপডেট: একটি জেলি বিন ডিভাইসে, আপনি যা করতে পারেন না adb pull(এমনকি সঙ্গে সঠিক পথ!), আপনারা না থাকলে রুট
এপি

এটি কোনও আপডেট নয়, প্রাথমিকভাবে অ্যাপ্লিকেশন থেকে সুরক্ষিত ডিভাইসগুলিতে ব্যক্তিগত ফাইলগুলি বেসরকারী ছিল private তবে এই প্রশ্নটি এমুলেটর সম্পর্কে, যেখানে অ্যাডবিটি মূল হিসাবে চালিত হয়।
ক্রিস স্ট্রাটন

6
আপনার স্থানীয় মেশিনে একটি এমুলেটর থেকে ডাটাবেসটি টানানোর উদাহরণadb pull /data/data/com.activeandroid.test/databases/Application.db ~/Development/Application.db
জোশুয়া পিন্টার

123

নীচে মন্তব্যে উল্লিখিত একটি আপডেট:

আপনাকে আর ডিডিএমএসের দৃষ্টিকোণে থাকার দরকার নেই, কেবল এক্সিলিপ উইন্ডো থেকে ফাইল এক্সপ্লোরারটি খুলুন > প্রদর্শন> অন্যান্য দেখান ... অ্যাপ্লিকেশনটি এমনকি চলমান হওয়ার দরকার নেই বলে মনে হয়, আমি বিভিন্ন অ্যাপ্লিকেশন ফাইলে ব্রাউজ করতে পারি বিষয়বস্তু। আমি এডিবি সংস্করণ চালাচ্ছি 1.0.29


বা, আপনি পুরানো পদ্ধতির চেষ্টা করতে পারেন:

আপনার Eclipse IDE এ DDMS দৃষ্টিভঙ্গি খুলুন

( উইন্ডো> দৃষ্টিভঙ্গি খুলুন> অন্যান্য> ডিডিএমএস )

এবং সবচেয়ে গুরুত্বপূর্ণ:

আপনার আবেদনটি চলমান হওয়া উচিত তাই আপনি ফোল্ডার এবং ফাইলগুলির ইতিহাস দেখতে পারেন

তারপরে ফাইল এক্সপ্লোরার ট্যাবে আপনি এই পথটি অনুসরণ করবেন:

ডেটা> ডেটা> আপনার প্যাকেজ-নাম> ডাটাবেস> আপনার ডাটাবেস-ফাইল

তারপর ফাইল নির্বাচন এ ক্লিক করুন disket আইকন পর্দার ডান দিকের কোণায় অবস্থিত ডাউনলোড করতে .db ফাইল। যদি আপনি এমুলেটরটিতে একটি ডাটাবেস ফাইল আপলোড করতে চান তবে আপনি ফোন আইকনে ক্লিক করতে পারেন (ডিস্ক্ট আইকনের পাশে) এবং আপলোড করার জন্য ফাইলটি চয়ন করতে পারেন।

আপনি যদি .db ফাইলের সামগ্রী দেখতে চান তবে আমি আপনাকে এসকিউএল ডাটাবেস ব্রাউজার ব্যবহার করার পরামর্শ দিচ্ছি, যা আপনি এখানে ডাউনলোড করতে পারেন ।

PS: আপনি যদি কোনও বাস্তব ডিভাইস থেকে ডাটাবেস দেখতে চান তবে আপনার ফোনটি অবশ্যই রুট করুন।


5
যদি কেউ ভাবছেন, আপনাকে 'ফাইল এক্সপ্লোরার' ট্যাবে ক্লিক করতে হবে।
এমএসপিড

হাই সাইবারোগ, আমি ডাটাবেস ফাইলটি পেয়েছি কিন্তু আপনি কীভাবে এই ফাইলটি খুলবেন তা আমাকে বলতে পারেন? বা কীভাবে এটি বিষয়বস্তু দেখতে হয়?
নিলেশ নিকুম্ভ

4
@ নীলেশ নিকুম্ভ ফাইলটি নির্বাচন করুন এবং ডিস্ক আইকনে ক্লিক করুন এবং আপনি এটি কোথায় সংরক্ষণ করতে চান তা নির্বাচন করুন select আপনার এসকিউএলাইট ব্রাউজারটি ডাউনলোড করতে হবে। sourceforge.net/projects/sqlitebrowser আপনি এটি ইনস্টল করার পরে, মাত্র .db ফাইল খুলুন, ব্রাউজ ডাটা ট্যাব chooose, এবং কলাম তোমাকে দেখতে চাই।
rogcg

দুর্দান্ত পোস্ট! এমুলেটর ডিভাইস থেকে স্ক্লাইট ফাইলটি নিয়ে আমার সমস্যা হচ্ছে:Failed to pull selection (null)
জান-তেরজে সেরেনসেন

@ ওখামরাজার আপনি যদি কোনও আসল ডিভাইস (এমুলেটর নয়) থেকে ডাটাবেস দেখতে চান তবে অবশ্যই আপনার ফোনটি রুট করুন।
rogcg

18

অন্য উত্তরগুলি মারাত্মকভাবে পুরানো। সঙ্গে অ্যান্ড্রয়েড স্টুডিও , এই ভাবে এটা করতে হয়:

  1. সরঞ্জামগুলি> অ্যান্ড্রয়েড> অ্যান্ড্রয়েড ডিভাইস মনিটরে ক্লিক করুন

এখানে চিত্র বর্ণনা লিখুন

  1. ফাইল এক্সপ্লোরারে ক্লিক করুন

এখানে চিত্র বর্ণনা লিখুন

  1. আপনার ডিবি ফাইলে নেভিগেট করুন এবং সেভ বোতামে ক্লিক করুন ।

এখানে চিত্র বর্ণনা লিখুন


1
"অ্যান্ড্রয়েড ডিভাইস মনিটরের অ্যান্ড্রয়েড স্টুডিও ৩.১ এ অবচয় করা হয়েছিল এবং অ্যান্ড্রয়েড স্টুডিও ৩.২ থেকে অপসারণ করা হয়েছিল। অ্যান্ড্রয়েড ডিভাইস মনিটরের মাধ্যমে আপনি যে বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন সেগুলি নতুন বৈশিষ্ট্য দ্বারা প্রতিস্থাপন করা হয়েছে ..." বিকাশকারী.অ্যান্ড্রয়েড
পিট অ্যালভিন

8

অ্যান্ড্রয়েড স্টুডিও ৩.৪.১ এ, আপনি "ডিভাইস ফাইল এক্সপ্লোরার" সন্ধানের জন্য অ্যান্ড্রয়েড স্টুডিওর অনুসন্ধান বৈশিষ্ট্যটি ব্যবহার করতে পারেন এবং তারপরে আপনার এমুলেটরটির / ডেটা / ডেটা / প্যাকেজ_নাম / ডাটাবেস ডিরেক্টরিতে যেতে পারেন।


6

আমি একটি সরল বাশ স্ক্রিপ্ট লিখেছি, যা অ্যান্ড্রয়েড ডিভাইস থেকে আপনার কম্পিউটারে ডাটাবেস টানছে (লিনাক্স, ম্যাক ব্যবহারকারী)

ফাইলের নাম: android_db_move.sh ব্যবহার: android_db_move.sh com.example.app db_name.db

#!/bin/bash

REQUIRED_ARGS=2
ADB_PATH=/Users/Tadas/Library/sdk/platform-tools/adb
PULL_DIR="~/"

if [ $# -ne $REQUIRED_ARGS ]
    then
        echo ""
        echo "Usage:"
        echo "android_db_move.sh [package_name] [db_name]"
        echo "eg. android_db_move.sh lt.appcamp.impuls impuls.db"
        echo ""
    exit 1
fi;


echo""

cmd1="$ADB_PATH -d shell 'run-as $1 cat /data/data/$1/databases/$2 > /sdcard/$2' "
cmd2="$ADB_PATH pull /sdcard/$2 $PULL_DIR"

echo $cmd1
eval $cmd1
if [ $? -eq 0 ]
    then
    echo ".........OK"
fi;

echo $cmd2
eval $cmd2

if [ $? -eq 0 ]
    then
    echo ".........OK"
fi;

exit 0

6

যেহেতু প্রশ্নটি অ্যান্ড্রয়েড স্টুডিওতে সীমাবদ্ধ নয়, তাই আমি ভিজ্যুয়াল স্টুডিও 2015 (জ্যামারিনের জন্য কাজ করেছি) এর পথ দিচ্ছি।

সরঞ্জাম-অ্যান্ড্রয়েড-অ্যান্ড্রয়েড ডিভাইস মনিটর

এখানে চিত্র বর্ণনা লিখুন

  • উপরের ছবিতে উল্লিখিত ডাটাবেস ফাইলটি সন্ধান করুন এবং চিত্র 2 তে প্রদর্শিত হিসাবে পুল বোতামে ক্লিক করুন।
  • আপনার পছন্দসই জায়গায় ফাইলটি সংরক্ষণ করুন।
  • আপনি এসকিউএলাইটের জন্য এসকিউএলাইট স্টুডিও বা ডিবি ব্রাউজার ব্যবহার করে সেই ফাইলটি খুলতে পারেন।

এই প্রশ্নের অন্যান্য উত্তরদাতাদের বিশেষ ধন্যবাদ।


4

ডাটাবেসগুলি এসকিউএলাইট ফাইল হিসাবে / ডেটা / ডেটা / প্যাকেজ / ডাটাবেস / ডাটাবেসফাইলে সংরক্ষণ করা হয় যেখানে:

  • প্যাকেজ প্যাকেজ Andro আইডি (ট্যাগ "স্পষ্ট", অ্যাট্রিবিউট "প্যাকেজ") ঘোষণা করা হয়
  • DATABASEFILE নাম গৃহীত এখানে ব্যাখ্যা যখন আপনি SQLiteOpenHelper কন্সট্রাকটর কল: http://developer.android.com/guide/topics/data/data-storage.html#db

ফাইল এক্সপ্লোরার ট্যাবে ডিডিএমএস দৃষ্টিভঙ্গি নির্বাচন করে এমুলেটরটিতে ডাটাবেস ফাইলটি (ফাইল সিস্টেম থেকে / অনুলিপি করা) আপনি দেখতে পাবেন ।


3

সাধারণ সমাধান - এমুলেটর এবং সংযুক্ত ডিভাইস উভয়ের জন্যই কাজ করে

1 বর্তমানে উপলব্ধ ডিভাইস / ইমুলেটরগুলির তালিকা দেখুন।

$ adb devices

ডিভাইস এর তালিকা সংযুক্ত

G7NZCJ015313309 ডিভাইস এমুলেটর -5154 ডিভাইস

9885b6454e46383744 ডিভাইস

2 আপনার ডিভাইস / এমুলেটরটিতে ব্যাকআপ চালান

$ adb -s emulator-5554 backup -f ~/Desktop/data.ab -noapk com.your_app_package.app;

3 ডাটা.অ্যাব্যাক্ট করুন

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

আপনি /dbফোল্ডারে ডাটাবেস পাবেন


আপনি যদি ওএস এক্স এ থাকেন তবে আপনি সম্ভবত ওপেনসেলের জ্লিব অংশটি মিস করবেন। আপনি এই কাজের চারপাশে ব্যবহার করতে পারেন: $ dd if=data.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -
ল্যাসে ম্যাগনুসসেন

আমার জন্য কাজ করে না। আমি পাচ্ছিbash: adb: command not found
ম্যাথিয়াস

0

অ্যান্ড্রয়েড ডক্স অনুসারে , মনিটরের অ্যান্ড্রয়েড স্টুডিও ৩.১ এ অবহেলা করা হয়েছিল এবং অ্যান্ড্রয়েড স্টুডিও ৩.২ থেকে সরানো হয়েছিল। ফাইল অ্যাক্সেস করতে, অ্যান্ড্রয়েড স্টুডিওতে একটি ডিভাইস রয়েছে যা "ডিভাইস ফাইল এক্সপ্লোরার" বিকাশের উইন্ডোর নীচে ডানদিকে রয়েছে যা আপনি আপনার এমুলেটর ফাইল সিস্টেম অ্যাক্সেস করতে পারবেন। শুধু অনুসরণ

/ ডাটা / ডেটা / PACKAGE_NAME / ডাটাবেস

শুভকামনা

অ্যান্ড্রয়েড ডিভাইস ফাইল এক্সপ্লোরার


0

অ্যান্ড্রয়েড স্টুডিও ৩.৫-এর জন্য, এখানে নির্দেশাবলী ব্যবহার করে এটিকে জাল করুন: https://developer.android.com/studio/debug/device-file-explorer (দেখুন -> সরঞ্জাম উইন্ডোজ -> ডিভাইস ফাইল এক্সপ্লোরার -> -> ডাটাবেসগুলি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.