Saya menggunakan pemberitahuan Google di aplikasi saya, dan sampai sekarang saya telah melakukannya di manifes:
<!-- GCM -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> <!-- GCM requires a Google account. -->
<uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- Keeps the processor from sleeping when a message is received. -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <!-- This app has permission to register and receive data message. -->
<!-- Creates a custom permission so only this app can receive its messages. NOTE: APP_PACKAGE.permission.C2D_MESSAGE -->
<permission android:name="com.myapp.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="com.myapp.permission.C2D_MESSAGE" />
<!-- END GCM -->
Ini bekerja dengan baik sampai saya memperbarui Nexus 7 ke Android 5.0 saya.
Sekarang ketika saya mencoba menginstal aplikasi di perangkat ini dengan Eclipse, saya mendapatkan kesalahan ini:
INSTALL_FAILED_DUPLICATE_PERMISSION perm = com.myapp.permission.C2D_MESSAGE pkg = com.myapp
Saya tidak mengerti apa yang salah? Itu bekerja dengan sempurna hingga Android 5.0.
Saya tahu bahwa saya menggunakan C2D_MESSAGE
dua baris, permission
dan uses-permission
tetapi saya telah menyalin kode itu dari panduan Google GCM yang asli, jadi pasti baik-baik saja.
android
google-cloud-messaging
android-notifications
android-5.0-lollipop
NullPointerException
sumber
sumber
Jawaban:
Saya telah menemukan solusi yang berfungsi untuk saya.
Di Perangkat Saya (Nexus 7) Android 5.0. Lollipop saya ikuti langkah-langkah ini.
Setelah Menghapus Aplikasi, Anda akan menemukan di
App Name
bawah Daftar AplikasiDownloaded
tab.YourApp
tag "NOT INSTALLED"OptionMenu
dan Pilih "Copot pemasangan untuk semua Pengguna"Setelah langkah-langkah ini, saya berhasil menginstal aplikasi baru dan itu berjalan dengan baik.
sumber
Menghapus
Jalankan Aplikasi ... Kemudian Tambahkan permisson lagi dan Jalankan Aplikasi.
Siap!.
sumber
${applicationId}
alih - alihSaya memiliki masalah yang sama dengan izin tanda tangan khusus pada Android-21 dan menyelesaikannya dengan memastikan saya melakukan uninstall lengkap.
Ini adalah kasus tepi yang terjadi ketika:
Contoh baris perintah
Berikut ini adalah transkrip baris perintah yang menunjukkan masalah dan cara mengatasinya. Pada titik ini versi debug diinstal dan saya mencoba untuk menginstal versi produksi yang ditandatangani dengan kunci rilis:
Contoh gerhana
Pergi ke arah yang berlawanan (mencoba menginstal debug build dari Eclipse ketika rilis build sudah diinstal), saya mendapatkan dialog berikut:
Jika Anda hanya menjawab ya pada titik ini instalasi akan berhasil.
Contoh perangkat
Seperti yang ditunjukkan dalam jawaban lain, Anda juga dapat membuka halaman info aplikasi di pengaturan perangkat, klik menu overflow, dan pilih "Copot pemasangan untuk semua pengguna" untuk mencegah kesalahan ini.
sumber
Saya telah memecahkan ini tanpa harus menggunakan uninstall apk alternatif terlebih dahulu (apa yang menyakitkan, kan?). Untuk berhasil menginstal versi debug dan rilis apk, cukup gunakan placeholder $ {applicationId} bawaan Gradle di AndroidManifest.xml untuk memodifikasi android izin: nilai nama pada waktu kompilasi.
Cuplikan file build.gradle:
Cuplikan file AndroidStudio.xml:
Anda dapat memeriksa file AndroidManifest.xml yang dimodifikasi dalam apk menggunakan
aapt l -a app-debug.apk
untuk memastikan placeholder diterapkan dengan benar. Jika Anda menggunakan berbagai rasa produk, saya yakin Anda dapat menerapkan variasi metode ini sesuai dengan kebutuhan Anda.sumber
applicationId
dalam dua berbedaproductFlavors
, dan menggunakan${applicationId}
efeknya akan sama.Hapus referensi "Hard Coded" apa pun dari nama paket Anda, dari file manifes Anda.
(Ini adalah praktik terbaik bahkan jika Anda tidak menggunakan
productFlavors
)Misalnya, jika manifes Anda mengandung:
Mengubahnya menjadi:
Kemudian, dalam file gradle modul Anda, atur relevan Anda
applicationId
:Anda dapat mengikuti tutorial ini untuk informasi lebih lanjut
sumber
${applicationId}
memperbaiki masalah untuk saya!coba hapus instalan aplikasi dengan adb:
sumber
Failure [DELETE_FAILED_INTERNAL_ERROR]
. Apa yang mungkin menjadi alasannya?Saat memberikan kesalahan ini, ia akan dengan jelas menyebutkan nama paket aplikasi karena izinnya ditolak. Dan hanya menghapus instalan aplikasi tidak akan menyelesaikan masalah. Untuk mengatasi masalah, kita perlu melakukan langkah berikut:
Masalah terpecahkan: D
sumber
Menginstal aplikasi di OS 5.0 saya mendapatkan pesan ini:
Tidak ada paket duplikat, dan kami dapat mengatasi masalah ini dengan menghapus instalasi aplikasi lama secara manual atau menggunakan adb:
adb uninstall com.yourpackage
sumber
Tidak satu pun di atas bekerja untuk saya. Aplikasi saya berfungsi dengan baik sebelum Lollipop. Tetapi ketika saya mengujinya di Lollipop kesalahan di atas muncul. Itu menolak untuk menginstal. Saya tidak memiliki versi sebelumnya yang diinstal sehingga semua solusi di atas tidak valid dalam kasus saya. Tetapi berkat solusi SO ini sekarang berfungsi dengan baik. Sama seperti kebanyakan pengembang saya mengikuti tutorial menyesatkan Google dan saya menambahkan izin dengan salin dan tempel seperti ini:
Ini akan bekerja dengan versi yang lebih lama <Lollipop. Jadi sekarang saya berubah menjadi:
sumber
CommonsWare benar, tetapi menurut saya ini adalah cara (bug) yang buruk untuk mengatakan: "Apk yang diinstal pada perangkat ditandatangani dengan sertifikat yang berbeda dengan yang baru yang Anda coba pasang" .
Ini mungkin adalah bug baru karena di masa lalu ia digunakan untuk menanyakan apakah akan menghapus aplikasi dari perangkat karena salah sertifikat.
Solusinya sama menyakitkannya dengan menghapus aplikasi itu secara manual.
Juga apa yang telah kami lakukan demi pengembangan tim, kami menambahkan keystore debug ke repositori kami, dan arahkan gradle untuk menggunakannya seperti:
Dan sekarang ketika melewati perangkat antara anggota tim, kita semua menggunakan sertifikat debug yang sama, jadi tidak ada masalah. :)
sumber
Di Android 5, periksa pengaturan Anda -> aplikasi. Alih-alih menghapus hanya untuk pengguna aktif (karena android 5 dapat memiliki beberapa pengguna dan ponsel saya memiliki pengguna tamu) ketuk tombol aksesori di sudut kanan atas tindakan / bilah alat dan pilih "copot untuk semua pengguna". Tampaknya di Android 5 saat Anda baru mencopot pemasangan dari peluncur, Anda hanya mencopot aplikasi untuk pengguna aktif.
Aplikasi ini masih ada di perangkat .. Ini membuat saya terpesona karena saya mencoba untuk menginstal versi rilis, tidak berfungsi jadi saya pikir ya benar karena saya masih menginstal versi debug, menghapus aplikasi. Tapi daripada masih tidak bisa menginstal .. Petunjuk pertama adalah catatan dalam daftar aplikasi aplikasi yang dihapus dengan pesan di sebelahnya bahwa itu dihapus (gambar).
sumber
Lihat tautan ini ini yang katanya akan berfungsi saat mereka ditandatangani oleh kunci yang sama. Kunci rilis dan kunci debug tidak sama.
Jadi lakukanlah:
sumber
ganti baris di bawah ini:
sumber
Dalam kasus saya, saya memiliki beberapa aplikasi yang diinstal memiliki nama domain yang sama dalam nama paket sebagai berikut.
Saya harus menghapus semua aplikasi yang memiliki nama paket yang sama dan menginstalnya kembali untuk menghilangkan masalah.
Untuk menemukan semua nama paket dari perangkat saya menggunakan yang berikut ini.
Kemudian saya mengambil paket yang sesuai dengan nama paket saya yang saya cari.
Kemudian copot semua aplikasi yang memiliki domain itu.
Anda juga dapat menghapus instalasi aplikasi menggunakan
Settings
aplikasi. Pergi keSettings -> Apps -> Find the app -> Uninstall
Harapan itu membantu seseorang yang memiliki masalah yang sama dengan saya.
sumber
Sebelumnya digunakan untuk mengatakan bahwa aplikasi dengan tanda tangan berbeda ditemukan di perangkat. Saat menginstal dari IDE, ia juga akan menanyakan apakah Anda ingin menghapus instalannya?
Tapi saya pikir dari Android 5.0 mereka telah mengubah alasan untuk menghapus instalasi. Itu tidak terjadi jika Anda menginstal aplikasi dengan tanda tangan yang sama
sumber
Saya mengalami masalah yang sama dengan nexus 5 Android Lollipop 5.0.1:
Dan dalam kasus saya, saya tidak dapat memperbaiki masalah
uninstalling
aplikasi ini karena itu adalahandroid app
, tetapi saya harus mengubahcustom permissions
nama aplikasi sayamanifest
karena mereka sama dengan aplikasi android, yang saya tidak dapat menghapus atau melakukan perubahan apa pun.Semoga ini bisa membantu seseorang!
sumber
Dalam kasus saya, saya menerima kesalahan berikut
Ketika saya mencoba untuk menginstal aplikasi yang memiliki nama paket
com.abc.Secondapp
. Intinya adalah aplikasi dengan nama paketcom.abc.Firstapp
sudah diinstal di aplikasi saya.Saya mengatasi kesalahan ini dengan menghapus instalasi aplikasi dengan nama paket
com.abc.Firstapp
dan kemudian menginstal aplikasi dengan nama paketcom.abc.Secondapp
Saya harap ini akan membantu seseorang saat pengujian.
sumber
Di file AndroidManifest.xml Anda, ubah nama izin yang Anda nyatakan khusus, misalnya:
untuk ini,
com.myapprocks bagian ini menyelesaikan konflik dengan aplikasi Anda yang lain.
sumber
Dalam kasus saya, saya menggunakan perpustakaan pihak ketiga (yaitu vendor) dan perpustakaan dilengkapi dengan aplikasi sampel yang sudah saya instal pada perangkat saya. Sehingga aplikasi sampel sekarang saling bertentangan setiap kali saya mencoba menginstal aplikasi sendiri yang mengimplementasikan perpustakaan. Jadi saya hanya mencopot aplikasi sampel vendor dan berfungsi setelahnya.
sumber
Saya mencopot versi sebelumnya. Ini berhasil untuk saya.
sumber
Saya me-restart telepon saya setelah menghapus aplikasi dan itu berhasil
sumber
Jika Anda memiliki rasa aplikasi yang berbeda, coba uninstall dulu. Ini membantu saya ketika saya memiliki masalah yang sama.
sumber