আমি কীভাবে আমার রিয়েলম ফাইলটি রিয়েলম ব্রাউজারে দেখতে পারি?


127

আমি সবেমাত্র রাজ্যটি আবিষ্কার করেছি এবং এটিকে আরও বিশদে অনুসন্ধান করতে চেয়েছি তাই আমি নমুনা অ্যাপ্লিকেশন তৈরি করার সিদ্ধান্ত নিয়েছি এবং এটির সাথে গোলযোগ সৃষ্টি করব। এ পর্যন্ত সব ঠিকই.

তবে, একটি জিনিস যা আমি এখনও কাজ করতে পারিনি তা হ'ল কীভাবে আমার ডাটাবেসটি রিয়েল ব্রাউজারে দেখতে হবে। কিভাবে এই কাজ করা যেতে পারে?


সহজ উপায় চান? পাথ-লগিং, এডিবি কমান্ড এবং মাথাব্যথা এড়িয়ে যান। @devsmash উত্তর আছে: stackoverflow.com/a/49705298/483520
নোলান এমি

উত্তর:


131

বর্তমানে রিয়েলম ব্রাউজারটি সরাসরি ডিভাইসে ডাটাবেস অ্যাক্সেস করতে সমর্থন করে না, সুতরাং এটি দেখার জন্য আপনাকে এমুলেটর / ফোন থেকে ডাটাবেস অনুলিপি করতে হবে। এটি এডিবি ব্যবহার করে করা যেতে পারে:

adb pull /data/data/<packagename>/files/ .

এই কমান্ডটি ব্যবহার করে তৈরি সমস্ত রিয়েল ফাইলগুলিকে টানবে Realm.getInstance(new RealmConfiguration.Builder().build())। ডিফল্ট ডাটাবেস বলা হয় default.realm

নোট করুন যে এটি কেবল একটি এমুলেটর বা ডিভাইস রুট করা থাকলে কাজ করবে।


25
আপনি আপনার অ্যাপ্লিকেশন থেকে সঠিক পাথটিও এর সাথে লগ করতে পারেন: লগ.ড ("", "পাথ:" + রিয়েলম.জেটপাথ ());
বমুনক

39
সুতরাং ম্যাকের জন্য রিয়েলম ব্রাউজারটি অকেজো। কে এমুলেটর ব্যবহার করেন
জেমশিট ইস্কেন্দ্রভ


3
আপনি যদি ফাইলের মতো ত্রুটি পান তবে রিয়েলম ফাইলটি টানানোর আগে প্রথমে অ্যাডবি রুট কমান্ড কার্যকর করুন।
র্যান্ডি

এটি অ্যাডবি রুট ব্যবহারের পরে কাজ করে তবে আমি যা করি তা নয়, রিয়েলম ফাইলটি বলছে রিয়েল ব্রাউজার ব্যবহার করার সময় এটি এনক্রিপ্ট হয়েছে। হ্যাঁ আমি দুর্নীতি এবং এ জাতীয় সম্পর্কে পড়ি তবে কিছুই করার চেষ্টা করা মোটেও কাজ করে না। রাজ্যে কিছু পরিবর্তন হয়েছে?
মাইক অ্যাক্সেল

104

ফেসবুক দ্বারা বিকাশ করা স্টেথো ব্যবহার করে এখন আপনি ক্রোম ব্রাউজারে রিয়েলম ডিবি দেখতে পারেন । ডিফল্টরূপে, স্টেথো স্ক্লাইট, নেটওয়ার্ক, শেয়ারডপ্রেফারেন্সগুলি কিন্তু অতিরিক্তের সাথে দেখতে দেয় দেখতে দেয় এখানে প্লাগইন দেখতে পারে।

Applicationউপরের লাইব্রেরিগুলি সহ আপনার শ্রেণিটি কনফিগার করার পরে , অ্যাপটি চলমান এবং সংযুক্ত থাকাকালীন Chrome ব্রাউজারটি খুলুন এবং chrome://inspectদেখার জন্য নেভিগেট করুন


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

তারপর Resources->Web Sql->default.realm


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


2
সমাধান করতে ব্যর্থ: com.uphyca: স্টেথো_রেম: 0.8.0 কেউ কি আমাকে এই সাহায্য করতে পারে? আমি দুঃখিত, আমি কোনও ম্যাক ব্যবহারকারী নই, সুতরাং দেখে মনে হচ্ছে কেবলমাত্র আমি আমার ডাটাবেস ফাইলটি ব্রাউজ করতে পারি।
সাবধান 7 ই

4
আপনি https://github.com/uPhyca/stetho-realm/raw/master/maven-repoএখানে url যুক্ত হিসাবে github.com/uPhyca/stetho-realm
জেমশিত ইস্কেন্দ্রভ

2
আমার দোষ, আপনাকে অনেক ধন্যবাদ! আমি এটা মিস করেছি এখন এটি হিসাবে এটি কাজ করে!
সাবধানতা 7 ই

1
আমি অন্য কিছু টেবিল ক্লিক করে টেবিল "এ" এর পরিবর্তনগুলি দেখি, এবং তারপরে আবার "এ" টেবিলটি ক্লিক করে @ অ্যালেক্সকোস্ট
জেমশিট ইস্কেন্দরভ

1
ক্ষেত্রগুলি দেখার ক্ষেত্রে কারও সমস্যা থাকলে এই পোস্টটি দেখুন: github.com/uPhyca/stetho-realm/issues/45 .... আমি আমার ক্ষেত্রগুলি দেখি তবে কোনও ডেটা নেই ....
হুম

56

আপনি ADB শেল এবং রান-অ্যাস কমান্ড ব্যবহার করে যে কোনও নন-রুটড ডিভাইস থেকে আপনার ফাইলটি টানতে পারেন।

আপনি এই কমান্ডগুলি আপনার অ্যাপ্লিকেশনটির ব্যক্তিগত স্টোরেজ থেকে ফাইল_ ফোল্ডারে অবস্থিত আপনার_ড্যাটাস_ফিল_নাম নামের একটি ডাটাবেস থেকে টানতে ব্যবহার করতে পারেন:

adb shell "run-as package.name chmod 666 /data/data/package.name/files/your_database_file_name"

// For devices running an android version lower than Android 5.0 (Lollipop)
adb pull /data/data/package.name/files/your_database_file_name

// For devices running an Android version equal or grater
// than Android 5.0 (Lollipop)
adb exec-out run-as package.name cat files/your_database_file_name > your_database_file_name
adb shell "run-as package.name chmod 600 /data/data/package.name/files/your_database_file_name"

3
একমত। যেহেতু আমরা অ্যাপ্লিকেশনটিকে ডিবাজযোগ্যতে সেট করতে পারি, আমরা রুট ছাড়াই এটি দিয়ে ফাইলটি টানতে পারি।
জোশুয়াট্রি

নন-ডিবাগযোগ্য এপিপি থেকে ডাটাবেস টানতে অন্য কোনও উপায় আছে?
JEGADEESAN এস

যদি এটি সম্ভব হয় তবে পুরো অ্যান্ড্রয়েড ওএস সম্পূর্ণরূপে অনিরাপদ হয়ে যায়, কেবলমাত্র মূলযুক্ত ডিভাইসগুলিতেই এটি সম্ভব হতে পারে এমন একটি সুযোগ রয়েছে, তবে আমি কখনই এটি করি নি
অ্যাপসাইড

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

সুতরাং, আমরা আমাদের সম্পাদিত রাজ্যটিকে এর জায়গায় ফিরে আমদানি করতে এটি ব্যবহার করতে পারি? adb exec-out run-as package.name cat files/your_database_file_name < your_database_file_name
Ender

52

আপনি যদি প্রতিবার অ্যাডবি দিয়ে রিয়েলম ডাটাবেস ফাইলটি পেতে অলস হন তবে আপনি আপনার অ্যান্ড্রয়েড কোডে একটি রফতানি ফাংশন যুক্ত করতে পারেন যা আপনাকে সংযুক্তি হিসাবে রিয়েলম ডাটাবেস ফাইল সহ একটি ইমেল প্রেরণ করে।

এখানে একটি উদাহরণ:

public void exportDatabase() {

    // init realm
    Realm realm = Realm.getInstance(getActivity());

    File exportRealmFile = null;
    try {
        // get or create an "export.realm" file
        exportRealmFile = new File(getActivity().getExternalCacheDir(), "export.realm");

        // if "export.realm" already exists, delete
        exportRealmFile.delete();

        // copy current realm to "export.realm"
        realm.writeCopyTo(exportRealmFile);

    } catch (IOException e) {
        e.printStackTrace();
    }
    realm.close();

    // init email intent and add export.realm as attachment
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("plain/text");
    intent.putExtra(Intent.EXTRA_EMAIL, "YOUR MAIL");
    intent.putExtra(Intent.EXTRA_SUBJECT, "YOUR SUBJECT");
    intent.putExtra(Intent.EXTRA_TEXT, "YOUR TEXT");
    Uri u = Uri.fromFile(exportRealmFile);
    intent.putExtra(Intent.EXTRA_STREAM, u);

    // start email intent
    startActivity(Intent.createChooser(intent, "YOUR CHOOSER TITLE"));
}

আপনার অ্যান্ড্রয়েড ম্যানিফেস্ট ফাইলটিতে এই ব্যবহারকারীর অনুমতি যুক্ত করতে ভুলবেন না:

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

3
আপনি পুশবলেট ব্যবহার করলে এটি বিশেষত ভাল । তারপরে আপনি আপনার ক্রোম ব্রাউজারে কোনও বার্তা চাপতে পারেন এবং এটি ফাইলটি ডাউনলোড করবে। এরপরে ফাইলটি রিয়েল ব্রাউজারে খোলা যাবে
ymerdrengene

1
অ্যান্ড্রয়েড 8.0
EGHDK

42

অ্যান্ড্রয়েডের জন্য (আপনার ডিভাইসটি রুট করার দরকার নেই)

আপনার ডিভাইসে যেকোন রিয়েলম ডাটাবেসের অনুলিপি পেতে অ্যান্ড্রয়েড স্টুডিওতে ডিভাইস ফাইল এক্সপ্লোরার এ যান ।

নেভিগেট করুন /data/data/your.package.name/files/

সেখানে আপনি আপনার * .রেম ফাইলগুলি পেয়ে যাবেন। ডান ক্লিক করুন, তারপরে সংরক্ষণ করুন । এগুলি সংরক্ষণের আগে সিঙ্ক্রোনাইজ করার বিষয়টি নিশ্চিত করুন।

ব্যবহারের অধিরাজ্য ব্রাউজার বা কোনো এই * .realm ফাইল দেখতে:

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


2
এত সহজ সমাধান, এটি এখন উত্তর হওয়া উচিত
স্টিভেন এলিয়ট

একেবারে। এটাই উপাই. 🙏
নোলান অ্যামি

ডেটা দেখার জন্য আপনার অ্যাপটি ডিবাগযোগ্য মিথ্যাতে সেট করা আছে তা নিশ্চিত করুন।
আমান ভার্মা

@ আমানওয়ারমা এটি বিকাশকারী বিকল্পগুলিতে ইউএসবি ডিবাগ করছে। ডিভাইস ফাইল এক্সপ্লোরার ব্যবহারের জন্য ইউএসবি ডিবাগিং সক্ষম করতে হবে
ক্রিতেশ

লিনাক্স ব্যবহারকারীরা রিয়েলম.আইও / প্রোডাক্ট / রিলাম- স্টুডিও ব্যবহার করে রিয়েল স্টুডিও ডাউনলোড করতে এবং সেখান থেকে রিয়েল ফাইলটি খুলতে পারে
বিश्रুতি

19

একটি workaround আছে। আপনি ডিভাইস মনিটর থেকে সরাসরি ফাইল অ্যাক্সেস করতে পারেন। আপনি যখন কোনও এমুলেটর বা রুটযুক্ত ডিভাইস ব্যবহার করছেন কেবল তখনই আপনি এই ডিরেক্টরিটি অ্যাক্সেস করতে পারবেন।

অ্যান্ড্রয়েড স্টুডিওতে:

নির্বাচন করা

মেনু সরঞ্জামগুলিঅ্যান্ড্রয়েডঅ্যান্ড্রয়েড ডিভাইস মনিটরফাইল এক্সপ্লোরারডেটাডেটা → (আপনার প্যাকেজের নাম) → ফাইলগুলি → * db.realm

ডিভাইস থেকে এই ফাইলটি টানুন:

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

অ্যান্ড্রয়েড স্টুডিও 3 ক্যানারি 1 থেকে, ডিভাইস ফাইল এক্সপ্লোরার চালু করা হয়েছে। আপনাকে এখানে রিয়েল ফাইলটি দেখতে হবে। তারপরে, (আপনার প্যাকেজটি নির্বাচন করুন) the রিয়েল ফাইলটি নির্বাচন করুন → রাইট ক্লিক করুন এবং সংরক্ষণ করুন।

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

এবং ফাইলটি রিয়েল ব্রাউজারে খুলুন। আপনি এখন আপনার তথ্য দেখতে পারেন।


ধন্যবাদ। তবে এটি বাস্তব ডিভাইসের সাথে কাজ করে না t এটি কেবল এমুলেটরটির সাথেই কাজ করে
প্রথম কেসকর

1
@ প্রথমমেকড়সর, এজন্যই আমি এমুলেটর বা মূলযুক্ত ডিভাইস লিখেছি কারণ আপনি কোনও সাধারণ ডিভাইসে এই ফোল্ডারগুলিতে অ্যাক্সেস পেতে পারেন না।
আবেদেক

14

আপনি সরাসরি রিয়েল ফাইলটি অ্যাক্সেস করতে পারেন। এখানে আমি ব্যবহার করেছি যে সমাধান।

প্রথমে আপনি '/ ডেটা / ডেটা / প্যাকেজনেম / ফাইলগুলিতে অবস্থিত এমন রিয়েল ফাইলটি পরিবেশের কাছে অনুলিপি করতে পারেন get

public class FileUtil {
    public static void copy(File src, File dst) throws IOException {
        InputStream in = new FileInputStream(src);
        OutputStream out = new FileOutputStream(dst);

        // Transfer bytes from in to out
        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
        }
        in.close();
        out.close();
    }
}

Realm realm = null;
try {
    realm = Realm.getInstance(this);
        File f = new File(realm.getPath());
        if (f.exists()) {
            try {
                FileUtil.copy(f, new File(Environment.getExternalStorageDirectory()+"/default.realm"));
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        }
}
finally {
    if (realm != null)
        realm.close();
}

দ্বিতীয়ত, ফাইলটি টানতে ADB সরঞ্জামটি ব্যবহার করুন:

$ অ্যাডবি টান / এসডিকার্ড / ডিফল্ট.রেলাম।

এখন আপনি রিয়েলম ব্রাউজারে ফাইলটি খুলতে পারেন।


6

এখানে এমন একটি সমাধান রয়েছে যা আপনার ফোনের শিকলের run-asঅভ্যন্তরে উপস্থিত কমান্ডটি ব্যবহার করে রুট হওয়ার প্রয়োজন হয় না adb। কেবলমাত্র পূর্ব শর্ত হ'ল লক্ষ্য ফোনে আপনার অ্যাপ্লিকেশনটির একটি ডিবাগ বিল্ড ইনস্টল করা আবশ্যক।

$ adb shell
$ run-as com.yourcompany.yourapp # pwd will return /data/data/com.yourcompany.yourapp
$ cp files/default.realm /sdcard
$ exit
$ exit
$ adb pull /sdcard/default.realm ~/Desktop # or wherever you want to put it

আপনার স্থানীয় ডিরেক্টরিতে থাকা কোনও ফোন থেকে আপনার কাছে ডিবি'র একটি অনুলিপি থাকবে যা আপনি তখন রিয়েল ব্রাউজারে লোড করতে পারবেন।


1
ম্যাক অ্যাডিবি ডিফল্ট পাথ ... / লাইব্রেরী / অ্যান্ড্রয়েড / এসডিকে / প্ল্যাটফর্ম-সরঞ্জামগুলি
ফ্রান্সিসকো কাস্ত্রো

3

আপনি যদি কোনও এমুলেটর ব্যবহার করছেন তবে এখন আপনি সরাসরি এটি অ্যাক্সেস করতে পারবেন।

এমুনুলেটে ফাইলটি যেখানে রয়েছে সেখানে প্রথমে যে পথে লগ করুন @ বমুনক বলেছেন:

Log.d(TAG, "path: " + realm.getPath());

দ্বিতীয় এটি সন্ধান করুন এবং ফাইলটিতে ডান ক্লিক করুন এবং ডায়ালগটিতে "সংরক্ষণ করুন" চয়ন করুন, ডায়ালগটিতে সেই রুটটি উপস্থিত হবে যেখানে ফাইলটি আপনার সিস্টেমে প্রকৃতপক্ষে রয়েছে।

এখানে চিত্র বর্ণনা লিখুন আপনি সংরক্ষণ করুন ডায়ালগ থেকে রুটটি অনুলিপি করতে পারেন

এবং তারপরে, রিয়েলম স্টুডিওর "ওপেন লোকাল ফাইল" কথোপকথনে রুটটি কেবল পেস্ট করুন।

(আমি এটি কেবল উইন্ডোজে পরীক্ষা করেছি)


1
এটি সবচেয়ে দরকারী উত্তর, আপনাকে ধন্যবাদ! ম্যাকোসের জন্য পথ দেখায় না তবে ফাইলটি সনাক্ত করা এখনও সহজ।
মারিয়া

1

এখানে আমার ব্যবহারের জন্য প্রস্তুত শেল স্ক্রিপ্ট। কেবল প্যাকেজের নাম এবং আপনার অ্যাডবি পাথগুলি পরিবর্তন করুন তবে স্ক্রিপ্টটি প্রয়োজনীয় করবে।

#!/bin/sh
ADB_PATH="/Users/medyo/Library/Android/sdk/platform-tools"
PACKAGE_NAME="com.mobiacube.elbotola.debug"
DB_NAME="default.realm"
DESTINATION_PATH="/Users/Medyo/Desktop/"
NOT_PRESENT="List of devices attached"
ADB_FOUND=`${ADB_PATH}/adb devices | tail -2 | head -1 | cut -f 1 | sed 's/ *$//g'`
if [[ ${ADB_FOUND} == ${NOT_PRESENT} ]]; then
    echo "Make sure a device is connected"
else
    ${ADB_PATH}/adb shell "
        run-as ${PACKAGE_NAME} cp /data/data/${PACKAGE_NAME}/files/${DB_NAME} /sdcard/
        exit
    "
    ${ADB_PATH}/adb pull "/sdcard/${DB_NAME}" "${DESTINATION_PATH}"
    echo "Database exported to ${DESTINATION_PATH}${DB_NAME}"
fi

এই ব্লগ পোস্টে আরো বিস্তারিত: http://medyo.github.io/2016/browse-populate-and-export-realm-database-on-android/


1

এটি সহজ রাখা:

/Users/inti/Library/Android/sdk/platform-tools/adb exec-out run-as com.mydomain.myapp cat files/default.realm > ~/Downloads/default.realm

ব্যাখ্যা:

  1. আপনার adbইনস্টল করার পথটি সন্ধান করুন । আপনি যদি অ্যান্ড্রয়েড স্টুডিও ব্যবহার করছেন তবে ফাইল> প্রকল্পের কাঠামো> এসডিকে অবস্থান> অ্যান্ড্রয়েড এসডিকে অবস্থান দেখুন এবং platform-toolsসেই পথে যুক্ত করুন।
  2. জন্য আপনার অ্যাপ্লিকেশনের সম্পূর্ণরূপে যোগ্যতাসম্পন্ন নাম ব্যবহার করুন run-asযুক্তি
  3. আপনি কোথায় রিয়েলমে ফাইলটি অনুলিপি করতে চান তা স্থির করুন

এনবি: ফাইলটিকে ডিফল্ট বলা হয় alm রেলম কারণ এটির কনফিগার করার সময় আমি এর নামটি পরিবর্তন করি নি - আপনার ভিন্ন হতে পারে।


1

আপনার অ্যান্ড্রয়েড রিয়েল ফাইলগুলি দেখার কয়েকটি বিকল্প রয়েছে:

  1. @ ক্রিশ্চিয়ান মেলচিওরের মতো বলেছে যে আপনি ডিভাইস থেকে আপনার রিয়েলএম ডাটাবেসটি টানতে পারেন এবং এটি আপনার ম্যাকের উপর ওএসএক্স রিয়েলম ব্রাউজার ব্যবহার করে খুলতে পারেন

  2. সামান্য কিছুটা সহজ করে অ্যান্ড্রয়েড বিকাশ করতে আপনি তৈরি তৃতীয় পক্ষের অ্যান্ড্রয়েড রিয়েলম ব্রাউজারটি ব্যবহার করতে পারেন । অ্যাপ্লিকেশন আপনাকে আপনার ডিভাইসে সমস্ত রিয়েল ফাইলগুলি প্রদর্শন করবে এবং আপনার অ্যাপ্লিকেশনটি পরীক্ষা করার সময় আপনি আপনার সমস্ত রিয়েল ফাইলগুলি রিয়েল টাইম দেখতে পারবেন।

  3. আপনি কীম ব্রাউজার স্টেথো ব্যবহার করতে পারেন সেথো কীভাবে ব্যবহার করবেন সে সম্পর্কে জেমসিত ইস্কেন্ডোর উত্তর সরবরাহ করেছেন।


0

আমার মতো অলস মানুষের জন্য এখানে একটি খোল :)

.realmফাইল ভিতরে সংরক্ষণ করা হবে tmpRealm/ফোল্ডারের পাশে .shফাইল।

#!/bin/sh
adb shell 'su -c "
cd /data/data/<packagename>/files
ls
rm -rf /data/local/tmp/tmpRealm/
mkdir /data/local/tmp/tmpRealm/
cp /data/data/com.arefly.sleep/files/* /data/local/tmp/tmpRealm
chown shell.shell /data/local/tmp/tmpRealm/*
"'
rm -rf ./tmpRealm/
adb pull /data/local/tmp/tmpRealm ./

বা আপনি যদি tmpRealm/এসডি কার্ডে থাকতে চান তবে :

#!/bin/sh
adb shell 'su -c "
cd /data/data/com.arefly.sleep/files
ls
mount -o rw,remount $EXTERNAL_STORAGE/
rm -rf $EXTERNAL_STORAGE/tmpRealm
mkdir $EXTERNAL_STORAGE/tmpRealm
cp /data/data/com.arefly.sleep/files/* $EXTERNAL_STORAGE/tmpRealm
"'
rm -rf ./tmpRealm/
# http://unix.stackexchange.com/a/225750/176808
adb pull "$(adb shell 'echo "$EXTERNAL_STORAGE"' | tr -d '\r')/tmpRealm" ./

রেফারেন্স:

  1. https://stackoverflow.com/a/28486297/2603230
  2. https://android.stackexchange.com/a/129665/179720
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.