回答編集履歴
1
誤字、改行修正
    
        answer	
    CHANGED
    
    | @@ -1,15 +1,15 @@ | |
| 1 | 
            -
            /sdcard/ 下はプログラムでもAndroidManifest.xmlでパーミッションを設定しなければ書き込みできない場所なので、 run-as com.packagename.app で動作するユーザー権限ではcpコマンドは失敗してもおかしくないです。 | 
| 1 | 
            +
            /sdcard/ 下はプログラムでもAndroidManifest.xmlでパーミッションを設定しなければ書き込みできない場所なので、 run-as com.packagename.app で動作するユーザー権限ではcpコマンドは失敗してもおかしくないです。
         | 
| 2 | 
            +
            (今回の例:"Permission denied")
         | 
| 2 3 |  | 
| 3 4 | 
             
            Android6,7でOKだった理由は分かりませんが、実機でしょうか。それともエミュレーターでしょうか。
         | 
| 4 5 |  | 
| 5 | 
            -
            /sdcard/ ディレクトリ下ではなく、別の書き込み可能なディレクトリを指定す | 
| 6 | 
            +
            /sdcard/ ディレクトリ下ではなく、別の書き込み可能なディレクトリを指定すれば成功するかもしれません。
         | 
| 6 7 | 
             
            (Android 8でアクセス可能なディレクトリがあるのかは分からないのですが)
         | 
| 7 8 |  | 
| 8 9 |  | 
| 9 10 | 
             
            ```
         | 
| 10 11 | 
             
            $ adb shell run-as com.packagename.app cp databases/database.db <書き込み可能なディレクトリ>/database.db
         | 
| 11 12 | 
             
            ```
         | 
| 12 | 
            -
            (Android 8でアクセス可能なディレクトリがあるのかは分からないのですが)
         | 
| 13 13 |  | 
| 14 14 | 
             
            あるいは、database.dbが手に入れば良いのであれば、
         | 
| 15 15 | 
             
            adb pullでローカルPCにファイルを持ってくるのもひとつの手です。
         | 
