Bisakah saya membuat APK dari aplikasi yang terinstal dan datanya?

8

Saya ingin mengambil aplikasi yang diinstal, termasuk datanya, dari perangkat Android yang di-rooting dan menghasilkan APK yang cocok untuk dipasang pada perangkat Android yang tidak di-root.

Apakah ini mungkin?

Sunting: Jawaban / komentar yang ada tampaknya memperkuat gagasan bahwa aplikasi yang ada tidak mendukung penyematan data aplikasi dalam APK. Mungkin pertanyaan yang lebih mendasar adalah, dapatkah file yang disematkan APK diperuntukkan /data/data/[appname], atau mereka dibatasi untuk mandiri saat diinstal?

Catatan:

  • Saya berasumsi bahwa, jika memungkinkan, fungsi ini akan dibangun ke dalam aplikasi seperti Titanium Backup. Titanium Backup dapat mencadangkan data aplikasi + ke satu file, tetapi file itu bukan APK dan hanya dapat dipulihkan oleh Titanium Backup itu sendiri - yang tidak membantu saya karena perangkat tujuan tidak di-rooting sehingga tidak dapat menjalankan TB.
  • Solusi yang memerlukan penggunaan terminal pada telepon atau ADB baik-baik saja.

Terima kasih.

Ian Renton
sumber
Jika Anda melihat ke dalam folder cadangan TB Anda akan mencatat bahwa ia menyimpan file .apkpolos (jadi setidaknya Anda dapat mengambilnya). Saya perlu melihat ke dalam file data; AFAIR ini hanya properti yang disimpan, tapi saya tidak ingat format yang digunakan. Namun, memulihkan data pada perangkat yang tidak di-rooting mungkin sangat sulit dicapai karena alasan yang sama dengan cadangan adalah: tidak ada akses ke folder data ...
Izzy
@Izzy TB memiliki dua metode cadangan. Satu normalnya menyimpan tiga file di direktori cadangan - tar.gz berisi APK, tar.gz yang berisi konten / data / data / [app] /, dan file .properties yang berisi apa yang saya asumsikan sebagai hash dari file. Pilihan lain (di bawah "Kirim Cadangan ini" -> "impor mudah" menulis satu file .TiBkp yang saya percaya berisi tiga normal. Either way, seperti yang Anda katakan, akses root diperlukan untuk mengembalikan data ke / data / data / [app] / di perangkat target
Ian Renton
Yap. Format yang terakhir dimaksudkan untuk memudahkan transfer ke mis perangkat lain (dan terima kasih telah menyebutkan ini kepada orang-orang dari penjelajah file ES, aplikasi itu sekarang mengenali file-file itu dan menawarkan untuk dibuka oleh TB, jika dipasang). Saya lebih mengacu pada format paket data (tidak terkompresi) (XML, SQLite, SQL ...) untuk mencari tahu bagaimana seseorang dapat memanipulasi paket-paket tersebut - dan tepat di tengahnya ingat targetnya adalah non-rooted ... Masih , itu bisa menjadi ide yang menarik untuk "transfer khusus" ke target root lain .
Izzy

Jawaban:

3

Setelah sekarang membaca lebih lanjut tentang format file APK, saya pikir saya sekarang dapat dengan aman menjawab pertanyaan saya sendiri dengan "tidak mungkin".

File APK tidak mengandung struktur data yang "dibongkar" saat diinstal seperti paket yang digunakan oleh, misalnya, sebagian besar distribusi Linux. Alih-alih, APK hanyalah sebuah file JAR yang lengkap dan dapat diubah sendiri yang berisi bytecode, manifes, dan sertifikat aplikasi, dan tidak ada yang lain.

Konten /data/data/[appname]tersebut kemungkinan dibuat oleh kode aplikasi saat dijalankan pertama kali (atau pada titik tertentu di masa depan), dan tidak ada cara untuk menyematkan data tersebut ke APK sehingga sistem secara otomatis memindahkannya ke tujuan yang benar pada waktu pemasangan.

Ian Renton
sumber
Tidak benar bahwa APK hanya berisi bytecode, manifes, dan sertifikat. Ini juga mengandung sumber daya dan aset apa pun yang digunakan oleh aplikasi, tetapi mereka tetap berada di file APK ketika aplikasi diinstal: mereka tidak disalin /data/data/kecuali jika aplikasi diprogram untuk melakukannya sendiri.
Dan Hulme
1

Anda masih bisa mendapatkan APK aplikasi dengan aplikasi seperti ES File Explorer , AppMonster atau Titanium Backup . Tapi saya tidak tahu apakah mereka mencadangkan data saat APK dibangun.

ber-dex
sumber
Aplikasi non-root sulit memasukkan data. AppMonster pasti tidak - dan untuk Titanium, OP sudah menyatakan itu tidak sesuai dengan kebutuhannya. Untuk ES saya ragu itu mengekstrak data.
Izzy
Saya baru saja mencoba ES, dan sepertinya tidak memasukkan data dengan cadangannya juga. (Atau setidaknya, ketika APK yang dicadangkan diinstal pada perangkat target yang tidak di-rooting, data yang saya harapkan tidak ada di sana.) Sejauh yang saya tahu, cadangan ES 'tidak lebih dari menyalin APK dari / data / aplikasi ke / sdcard / backup.
Ian Renton
0

Buka play store dan unduh ML Manager untuk mengekstrak file Apk ke folder pilihan Anda. Saya tidak tahu cara memasukkan data aplikasi ke dalam ini.

Gkeeg
sumber