Como encontrar meu arquivo de território?

239

Criei um banco de dados por região e não consigo encontrar o arquivo, pois meu sistema operacional (Yosemite) não possui uma pasta móvel no / private / var / mobile.

Como devo acessar minha região para executar no navegador?

Publicado cruzadamente em grupos do Google

yoshyosh
fonte
Veja isso . Este método funciona para dispositivos com e sem root.
precisa saber é o seguinte

Respostas:

474

Localizando um arquivo de região

Para Android

Como visualizar meu arquivo de território no navegador de domínios?

Para iOS

Se o seu aplicativo estiver no dispositivo

Verifique se o dispositivo está conectado e vá para a janela de dispositivos no menu Xcode, Janela> Dispositivos (⌘⇧2). Lá, você poderá escolher seu dispositivo e seu aplicativo em uma lista de aplicativos instalados com permissões de depuração.

Depois de selecionar seu aplicativo, vá para a engrenagem na barra de ferramentas na parte inferior da exibição da tabela e selecione “Download Container…” . Lá, você poderá puxar o arquivo da localização dos documentos para o seu Mac. Ele será salvo como um pacote configurável xcappdata.

Quando você abre o caminho local no Finder, onde o salvou, pode tocar nele selecionando “Mostrar Conteúdo do Pacote” no menu de contexto do localizador, quando seleciona o arquivo. Uma nova janela do Finder será aberta, na qual você encontrará seu Domínio no seguinte caminho (por exemplo): AppData / Documents / default.realm (O diretório '/ private / var / mobile' é o caminho usado pelo iOS no sistema de arquivos do dispositivo.

Se seu aplicativo estiver no simulador

Vá para o diretório do usuário:

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

Provavelmente, a maneira mais fácil de obter o caminho atual da região padrão é pausar o simulador e inserir o seguinte no console do LLDB:

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

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

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

Ou, se você tiver uma RLMRealminstância em mãos, poderá usar:
(lldb) po myRealm.configuration.fileURL

Em seguida, basta copiar este caminho, abrir seu terminal e digite open [Caminho colado aqui]

NOTA: Alguns caminhos têm um espaço neles; portanto, use "\" antes do espaço para escapar dele

Ferramenta auxiliar SimPholders

Esta é provavelmente a maneira mais rápida de encontrar o arquivo de um aplicativo no simulador. Instale os SimPholders . Isso permitirá que você acesse o diretório de documentos do seu aplicativo diretamente na barra de menus.

Nota Algumas pessoas mencionaram que os SimPholders os levaram para a pasta do aplicativo do simulador errada, se esse for o seu caso, imprima o caminho da região seguindo as etapas acima, imprimindo a região.path

yoshyosh
fonte
1
após a atualização mais recente, ocorre um erro quando você o faz po RLMRealm.defaultRealmPath(). Ele dizcalled object type 'NSString *' is not a function or function pointer
carbonr
Eu tenho o mesmo problema que @carbonr. Alguém pode ajudar?
Denislexic
2
Versão Objective-C acima 0,97 usopo [[RLMRealm defaultRealm]path]
AlexHsieh
5
Parte desta resposta está desatualizada agora. Aqui é a maneira mais recente para encontrar o seu arquivo de banco de dados de domínio (default.realm) usando RealmSwift:Realm.Configuration.defaultConfiguration.fileURL
nodebase
1
Usando o método RealmSwift, obtenho o seguinte:error: use of undeclared identifier 'Realm'
Simon Bengtsson
122

Encontrei a maneira mais simples para iOS / macOS (para swift 3 Xcode 8.3)

override func viewDidLoad() {

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

Então o código x registrará o caminho correto, verifique a tela abaixo.

insira a descrição da imagem aqui

Agora abra seu Finder e pressione + + G(command + shift + G) e cole o caminho que registra no seu Xcode

Kamaal ABOOTHALIB
fonte
10
caminho está obsoleto. use Realm.Configuration.defaultConfiguration.fileURLvez
hewigovens 28/04
2
Foi alterado para Realm.configuration.fileURL
Reshad
3
swift 3, xcode8.3 também funciona comRealm.Configuration.defaultConfiguration.fileURL!
xmhafiz 5/17
i seguido o mesmo processo, mas eu não posso capaz de encontrar o caminho do arquivo no Finder
RejoylinLokeshwaran
1
Isso é perfeito para o simulador e, depois de encontrar o arquivo, é fácil clicar em "Abrir com" para iniciar o Realm Studio. Isso gera a pergunta ou o pensamento: O Realm Studio precisa de uma opção de menu "abrir recente" Arquivo!
chamou ..
39

Uma alternativa fácil para aplicativos de simulador

Crie uma pasta / pesquisa inteligente no Finder. Oferece acesso fácil e rápido a todos os seus arquivos de território.

  1. Abra a pasta /Users/$USER/Library/Developer/CoreSimulator/Devicesno Finder.

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

  2. Procurar por .realm

  3. Altere a pesquisa para procurar apenas na "Devices"pasta.

  1. Salve a pesquisa na barra lateral (por exemplo, como reinos)

Quando ordenado por data, ele fornece uma lista rápida e fácil de clicar dos .realmarquivos do Simulator modificados mais recentes .

Archdoog
fonte
Graças @Archdoog - não é uma má idéia quando você está passando por lotes de novos projectos com Realm
Allen
4
Salvá-lo como uma pesquisa é genial! Obrigado! :)
karlingen
22

Aqui está uma solução fácil .. Eu brinquei com isso por um tempo. Devo salientar que este é um conjunto específico de instruções usando o Android Studio e o Emulador AVD.

1) Inicie o emulador e execute seu aplicativo.

2) Enquanto o aplicativo ainda está sendo executado, abra o Android Device Monitor. (está na barra de ferramentas ao lado dos ícones de gerenciador do AVD e SDK)

3) Clique na guia File Explorer no Device Monitor. Deve haver muitas pastas.

4) Navegue pelo seguinte caminho: Dados> Dados> Nome do seu pacote > arquivos> Default.Realm (ou o que você nomeou)

Ex. Se você estiver usando um dos projetos de exemplo de região, o caminho seria algo como Dados> Dados> io.realm.examples.realmgridview> arquivos> default.realm

5) Destaque o arquivo, clique no ícone de disquete na área superior direita "puxe um arquivo do dispositivo"

6) Salve-o onde quiser e pronto.

Michael Elkins
fonte
18

O que eu fiz foi usar

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

e, em seguida, ele é criado em exibição completa na minha área de trabalho e posso clicar duas vezes para iniciar o Realm Browser nele. Posteriormente, posso remover o parâmetro e deixá-lo usar o local padrão quando estiver certo de que tudo está funcionando conforme o esperado.

Stephen Watson
fonte
1
Eu recebo um erro dizendo "Os rótulos de argumento '(caminho :)' não correspondem a nenhuma sobrecarga disponível". Alguma idéia do porquê?
Marcelo Gracietti
Isso é incrível haha!
WilomGfx 09/03
Ótimo para testar no simulador, mas provavelmente não funcionará corretamente em um dispositivo real.
Mau funcionamento
deixe reino = tente! Região (fileURL: URL (string: "/Users/[meunette/Desktop/TestRealm.realm")!)
Harris
11

Objetivo-C - [RLMRealmConfiguration defaultConfiguration].fileURL

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

Por exemplo ,- / Usuários / "Seu nome de usuário" / Biblioteca / Desenvolvedor / CoreSimulator / Devices / E58645FF-90DE-434D-B2EB-FA145EB6F2EA / data / Containers / Data / Application / E427BD21-2CB1-4F64-9ADF-8742FF731209 / Documents /

Este é o comando mais simples que você pode executar para obter o caminho para o arquivo .realm. Você verá o arquivo .realm após a conclusão de todas as operações de leitura e gravação.

Ou

Você pode abrir o openSim de código-fonte , alternativa aos simpholders para acessar o diretório de documentos do seu aplicativo diretamente na barra de menus

Priyansh
fonte
11

As respostas acima mostram uma maneira de encontrar o arquivo de região na plataforma Android e, acredite em mim, economizará muito tempo que geralmente perdemos em outras abordagens para obter o arquivo de região. Então vamos começar...

Primeiro abra o "Device File Explorer" no android studio (Exibir -> Ferramentas Windows -> Device File Explorer.

Isso abrirá o explorador de dispositivos.

insira a descrição da imagem aqui

agora abra dados -> dados -> (your_app_package_name) -> arquivos -> default.realm

default.realm é o arquivo para o qual estamos aqui. Agora salve_com esse arquivo no seu local e acesse o arquivo no realm_browser e você obterá seu banco de dados.

NOTA: A abordagem mencionada é testada em um telefone sem raiz (um + 3).

anoopbryan2
fonte
10

Se você estiver usando o Realm DB padrão no simulador:

po Realm().configuration.fileURL
superarts.org
fonte
Você pode adicionar alguns detalhes?
zeeshan
@zeeshan, pause seu simulador enquanto estiver executando, digite o comando e pressione enter.
superarts.org 16/03/19
9

Resposta atualizada para o reino mais recente:

Para Android:

checkout stetho e https://github.com/uPhyca/stetho-realm Tutorial em vídeo aqui: https://www.youtube.com/watch?v=9pFJz5VexRw

Para IOS (Swift)

Ou:

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

ou

Etapa 1: tenha uma constante chamada dev em algum lugar. Digamos arquivo constante

public class Constants {

    public static var dev: Bool = true

}

Etapa 2: Crie outra classe chamada 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()
    }
}

Etapa 3: finalmente no seu controlador de exibição:

let realm = realmAndPath()

graças a Stewart Lynch pela resposta original

OWADVL
fonte
para swift 3 eu precisava mudar realm.pathpara #realm.configuration.fileURL!.absoluteString
Andy
5

Se você estiver recebendo o erro da caixa de diálogo 'Inserir chave de criptografia':

Estou usando o Swift 2.1 com o Realm 0.96.2 e estava recebendo esse erro ao tentar abrir o arquivo de banco de dados:

'padrão' não pôde ser aberto. Pode estar criptografado ou não está em um formato de arquivo compatível. Se você souber que o arquivo está criptografado, poderá inserir manualmente sua chave de criptografia para abri-lo.

Verificou que o uso da versão de pré-lançamento do Realm Browser 0.96 corrigiu o problema:

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

mesmo
fonte
3

Primeiro, reconheço que esse é um tópico do Android, mas é o primeiro resultado de pesquisa para esse problema em geral.

Para abrir o db do Realm do Xcode Simulator criado mais recentemente no Realm Browser, você pode usar esse script no Automator ou digitar tudo no terminal. Ao usar o Automator, tenho acesso com um clique à minha região atual.

    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

Instale o Realm Browser. No Automator, clique em Novo, selecione Executar Script do Shell, cole o código, altere o nome do Domínio Db, clique em Executar para testar, salve o arquivo em algum lugar conveniente para acesso rápido ao clique.

Não sei onde encontrei essa dica pela primeira vez, mas esse tópico me lembrou como eu estava acessando meus dados ao vivo no passado.

J. Roth
fonte
3

Apenas para o seu aplicativo está no iOS Simulator

Entrar

console.log (Realm.defaultPath)

no código, por exemplo: App.js

leyliu.com
fonte
2

Eu dei um passo adiante. Eu criei um arquivo rápido chamado RealmFunctions e nele criei esta função

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

Agora, no meu controlador de exibição principal, eu tenho uma variável booleana global chamada 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.

Agora, tudo o que tenho que fazer no meu código é

let realm = realmAndPath()

Portanto, quando estiver no modo de desenvolvimento, posso encontrar meu banco de dados de região na área de trabalho e abrir no Navegador de Região.

Stewart Lynch
fonte
1
Erro: os rótulos de argumento (13, 21) '(caminho :)' não correspondem a nenhuma sobrecarga disponível, parece que ele foi alterado nas versões mais recentes
OWADVL
2

Eu encontrei meu arquivo reino emitindo este comando no Terminal: sudo find / -name "*.realm".

Espero que isto ajude!

teechap
fonte
2

Na Swift

func getFilePath() -> URL? {
    let realm = try! Realm()
    return realm.configuration.fileURL
}
Mahmud Ahsan
fonte
1

Para obter o caminho do banco de dados para iOS, a maneira mais simples é:

  1. Inicie seu aplicativo em um simulador
  2. Pausar a qualquer momento no depurador
  3. Vá para o console (onde você tem (lldb)) e digite:po RLMRealm.defaultRealmPath

Tada ... você tem o caminho para o banco de dados do reino

denislexic
fonte
1

O comando correto (LLDB) é: Realm.Configuration.defaultConfiguration.path.

Kokotoni Wilf
fonte
1

Para aqueles que usam o React Native e o domínio padrão:

Realm.defaultPath

Natividad Lara Diaz
fonte
Não consigo encontrar isso!
Ali Hesari
@ Natividade onde colocar esse código? alguma sugestão sobre como obter o arquivo de domínio?
Bikram Thapa
@AliHesari você encontrou sth?
Bikram Thapa
componentDidMount() { console.log(Realm.defaultPath) }no meu componente usando Realm funcionou para mim. Verifique o console do xcode para encontrar o caminho posteriormente.
Paul Schorey 02/02
0

Em Ferramentas -> Monitor de dispositivo Android

E no Gerenciador de Arquivos. Pesquise os aplicativos. E o arquivo está em data / data.

Spidey
fonte
0

O comando lldb correto para o Xcode 7, Swift 2.2+ é po Realm.Configuration.defaultConfiguration.path!

Marquis103
fonte
1
o membro não é chamado, pathmas fileURL: Realm.Configuration.defaultConfiguration.fileURL!
nburk
1
você está correto ... isso mudou no domínio1.0 ... eu estava usando a versão 0.98 quando respondi ... a resposta correta é po Realm.Configuration.defaultConfiguration.fileURL?.path
Marquis103
0

Solução Swift 2.3

Solução mais fácil que não quebra com as atualizações do reino

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

O arquivo .realm deve estar dentro de "Documentos"

apinho
fonte