258
votes

I have created a DB by realm and I am not able to find the file as my OS (Yosemite) dont have a mobile folder in the /private/var/mobile.

How should I access my realm to run in the browser?

Cross posted from google groups

25
Check this out. This method works for both rooted and unrooted devices.krhitesh

25 Answers

492
votes

Finding a Realm File

For Android

How to view my Realm file in the Realm Browser?

For iOS

If your App is on Device

Make sure that your device is connected and go to the devices window in the Xcode menu Window > Devices (⌘⇧2). There you will be able to choose your device and your app from a list of installed apps with debugging permissions.

After selecting your app, go to the cog in the toolbar at the bottom of the table view and select “Download Container…“. There you will be able to pull the file from the documents location to your Mac. It will be saved as an xcappdata bundle.

When you open the local path in Finder, where you saved it, you can tap into that by selecting “Show Package Contents” in the context menu of the finder, when you select the file. A new finder window will open, where you find your Realm inside in the following path (e.g.): AppData/Documents/default.realm (The directory '/private/var/mobile' is the path, which is used by iOS on the device filesystem.

If your App is on the Simulator

Go to your user’s directory:

/Users/<username>/Library/Developer/CoreSimulator/Devices/<simulator-uuid>/data/Containers/Data/Application/<application-uuid>/Documents/default.realm

Probably the easiest way to get the current path of the default realm is to pause the simulator and enter the following into the LLDB console:

Objective-C:
(lldb) po [RLMRealmConfiguration defaultConfiguration].fileURL

Swift using Realm Objective-C:
(lldb) po RLMRealmConfiguration.defaultConfiguration().fileURL

Swift using Realm Swift:
(lldb) po Realm.Configuration.defaultConfiguration.fileURL

Or if you have an RLMRealm instance at hand, you can use:
(lldb) po myRealm.configuration.fileURL

Then just copy this path, open your terminal, and type open [Pasted path here]

NOTE: Some paths have a space in them so be sure to use "\" before the space to escape it

Helper Tool SimPholders

This is probably the fastest way to find the file of an app in the simulator. Install SimPholders. This will allow you to access your app’s documents directory directly from your menu bar.

Note Some people have mentioned that SimPholders has taken them to the wrong simulator app folder, if that's the case for you, print out your realm path by following the steps above, printing out your realm.path

133
votes

I found most simplest way for iOS/macOS (for swift 3 Xcode 8.3)

override func viewDidLoad() {

   // for swift 2.0 Xcode 7
   print(Realm.Configuration.defaultConfiguration.fileURL!)
}

Then x code will log the correct path, check the screen below.

enter image description here

Now open your Finder and press + + G (command+shift+G) and paste the path that logs on your Xcode

43
votes

One Easy Alternative For Simulator Apps

Create a smart folder/search in Finder. Gives quick and easy clickable access to all your realm files.

  1. Open the folder /Users/$USER/Library/Developer/CoreSimulator/Devices in Finder.

    With terminal open /Users/$USER/Library/Developer/CoreSimulator/Devices

  2. Search for .realm

  3. Change the search to look in the "Devices" folder only.

  1. Save the search to your sidebar (e.g. as Realms)

When sorted by date this will give you a quick and easy clickable list of the latest modified Simulator .realm files.

22
votes

Here is an easy solution.. I messed with this for awhile. I should point out, this is a specific set of instructions using Android Studio and the AVD Emulator.

1) Start the Emulator and run your app.

2) While the app is still running, open the Android Device Monitor. (its in the toolbar next to the AVD and SDK manager icons)

3) Click the File Explorer tab in the Device Monitor. There should be a lot of folders.

4) Navigate the following path: Data > Data > Your Package Name > files > Default.Realm (or whatever you named it)

Ex. If you are using one of the realm example projects, the path would be something like Data>Data>io.realm.examples.realmgridview>files>default.realm

5) Highlight the file, click the Floppy Disk icon in the upper right area "pull a file from the device"

6) Save it off to whereever you want and done.

19
votes

What I did was to use

let realm = Realm(path: "/Users/me/Desktop/TestRealm.realm")

and then it gets created in full view on my desktop and I can double-click to launch the Realm Browser on it. Later, I can remove the parameter and let it use the default location when I'm satisfied that all is working as expected.

12
votes

The above answers missing a way to find the realm file in Android platform and believe me this way will save your lot's of time which we generally waste in other approaches to get the realm file. So let's start...

First open "Device File Explorer" in android studio(View -> Tools Windows -> Device File Explorer.

This will open your device explorer.

enter image description here

now open data -> data -> (your_app_package_name) -> files -> default.realm

default.realm is the file for which we are here. Now Save_as this file at your location and access the file from the realm_browser and you will get your database.

NOTE: Mentioned approach is tested on non-rooted phone(one+3).

11
votes

Objective-C - [RLMRealmConfiguration defaultConfiguration].fileURL

NSLog(@"%@",[RLMRealmConfiguration defaultConfiguration].fileURL);

Eg-/Users/"Your-user-name"/Library/Developer/CoreSimulator/Devices/E58645FF-90DE-434D-B2EB-FA145EB6F2EA/data/Containers/Data/Application/E427BD21-2CB1-4F64-9ADF-8742FF731209/Documents/

This is the simplest command you can run to get your path to .realm file. You will see the .realm file after all your read and write operations are completed.

Or

You can you open source openSim, alternative of simpholders to access your app’s documents directory directly from your menu bar

10
votes

If you are using the default Realm DB in simulator:

po Realm().configuration.fileURL
9
votes

Updated answer to the newest Realm:

For Android:

checkout stetho and https://github.com/uPhyca/stetho-realm Video tutorial here: https://www.youtube.com/watch?v=9pFJz5VexRw

For IOS (Swift)

Either:

debugPrint("Path to realm file: " + realm.configuration.fileURL!.absoluteString)

or

Step 1: Have a constant called dev somewhere. Let's say Constant file

public class Constants {

    public static var dev: Bool = true

}

Step 2: Create another class called RealmFunctions.swift

import RealmSwift


func realmAndPath() -> Realm {
    if Constants.dev {
        // location of my desktop
        let testRealmURL = NSURL(fileURLWithPath: "/Users/#####/Desktop/TestRealm.realm")
        return try! Realm(fileURL: testRealmURL)
    } else {
        return try! Realm()
    }
}

Step 3: finally in your view controller:

let realm = realmAndPath()

thanks to Stewart Lynch for the original answer

5
votes

If you are getting 'Enter Encryption Key' dialog box error:

I am using Swift 2.1 with Realm 0.96.2 and was getting this error when trying to open the database file:

'default' could not be opened. It may be encrypted, or it isn't in a compatible file format. If you know the file is encrypted, you can manually enter its encryption key to open it.

Found that using the pre-release version of the Realm Browser 0.96 fixed the issue:

https://github.com/realm/realm-browser-osx/releases/tag/0.96-prerelease

3
votes

First, I acknowledge that this is an Android thread but it is the first search result for this issue in general.

To open the most recently created Xcode Simulator Realm db in Realm Browser you can use this script in Automator or type it all in at the terminal. By using Automator, I have one-click access to my current realm.

    cd ~/Library/Developer/CoreSimulator/Devices/
    cd `ls -t | head -n 1`/data/Containers/Data/Application
    cd `ls -t | head -n 1`/Documents    
    open -a 'Realm Browser' ./default.realm

Install Realm Browser. In Automator, click New, select Run Shell Script, paste in code, change Realm Db name, Click Run to test, save file somewhere convenient for quick click access.

I don't know where I found this tip the first time but this thread reminded me how I was accessing my live data in the past.

3
votes

Just for your App is on the iOS Simulator

Enter

console.log (Realm.defaultPath)

in the code eg: App.js

3
votes

2020: Realm file on iOS Real device (Not simulator)

Starts from the menu bar at the top then follow the sequence below: -

  1. Window

  2. Devices and Simulators

  3. Select Device

  4. At the bottom find the title (INSTALLED APPS)

    Note: Scroll down or enlarge the Devices and simulators pop up window to see the list of installed apps.

  5. Select Your app.

  6. Tap the gear button (It's located at the bottom of the apps list)

  7. Download Container

  8. Choose location to save it.

  9. Right click on the downloaded file

  10. Show Package contents

  11. AppData

That's it from there you can access Your Realm files depending on your configuration. For example if you saved in Documents or Library folders simply open it to see your realms.

2
votes

I have taken this one step further. I have created a swift file called RealmFunctions and in it, I have created this function

    import RealmSwift
    func realmAndPath() -> Realm {
        if dev {
            // location of my desktop
            return try! Realm(path: "/Users/slynch/Desktop/TestRealm.realm")
        } else {
            return try! Realm()
        }
    }

Now in my main view controller, I have a global boolean variable called dev

var dev: Bool = true // when in development mode
var dev: Bool = false // when I want to run on my device or upload to app stor.

Now, all I have to do in my code is

let realm = realmAndPath()

So when in development mode, I can find my realm database on my desktop and can open in Realm Browser.

2
votes

I found my realm file by issuing this command in Terminal: sudo find / -name "*.realm".

Hope this helps!

2
votes

For those using React Native and using the default realm:

Realm.defaultPath

2
votes

In Swift

func getFilePath() -> URL? {
    let realm = try! Realm()
    return realm.configuration.fileURL
}
2
votes

As previously was mentioned you can use next approaches to find file location

//code
Realm.Configuration.defaultConfiguration.fileURL 

//lldb
(lldb) po Realm.Configuration.defaultConfiguration.fileURL

or you can manually find it:

//Simulator
/Users/<username>/Library/Developer/CoreSimulator/Devices/<simulator-uuid>/data/Containers/Data/Application/<application-uuid>/Documents/

//for example
/Users/alex/Library/Developer/CoreSimulator/Devices/E1D084B0-CD97-41B4-871F-E131CA33F635/data/Containers/Data/Application/373721C7-2381-4E3D-9ABC-2147F748322F/Documents/

//iPhone (download a copy)
Xcode -> Window -> Devices and Simulators -> Devices -> <select device and app> -> App container actions -> Download Container... -> <selectfolder and navigate to it (.xcappdata)> -> Right Click -> Show Package Consents -> AppData -> Documents

*Please note that if you set file name for realm and it has some other extension than .realm RealmStudio does not open it by default

1
votes

To get the DB path for iOS, the simplest way is to:

  1. Launch your app in a simulator
  2. Pause it at any time in the debugger
  3. Go to the console (where you have (lldb)) and type: po RLMRealm.defaultRealmPath

Tada...you have the path to your realm database

1
votes

The correct (lldb) command is: Realm.Configuration.defaultConfiguration.path.

0
votes

Under Tools -> Android Device Monitor

And under File Explorer. Search for the apps. And the file is under data/data.

0
votes

The correct lldb command for Xcode 7, Swift 2.2+ is po Realm.Configuration.defaultConfiguration.path!

0
votes

Swift 2.3 solution

Easier solution that won't break with Realm updates

    let dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
    print("App Path: \(dirPaths)")

The .realm file should be inside "Documents"

0
votes

If you are trying to find your realm file from real iOS device

Worked for me in Xcode 12

Steps -

  1. In Xcode, go to Window -> Devices and Simulators
  2. Select your device from the left side list
  3. Select your app name under the Installed apps section
  4. Now, highlight your app name and click on the gear icon below it
  5. from the dropdown select the Download Container option
  6. Select the location where you want to save the file
  7. Right-click on the file which you just saved and select Show Package Contents
  8. Inside the App Data folder navigate to the folder where you saved your file.