Setelah meningkatkan ke Cordova Android 8.0 , saya melihat net::ERR_CLEARTEXT_NOT_PERMITTED
kesalahan saat mencoba menghubungkan ke http://
target.
Mengapa demikian dan bagaimana saya bisa mengatasinya?
Setelah meningkatkan ke Cordova Android 8.0 , saya melihat net::ERR_CLEARTEXT_NOT_PERMITTED
kesalahan saat mencoba menghubungkan ke http://
target.
Mengapa demikian dan bagaimana saya bisa mengatasinya?
Tingkat API default di platform Android Cordova telah ditingkatkan. Di perangkat Android 9, komunikasi teks jelas sekarang dinonaktifkan secara default .
Untuk mengizinkan komunikasi teks yang jelas lagi, setel android:usesCleartextTraffic
pada application
tag Anda ke true
:
<platform name="android">
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:usesCleartextTraffic="true" />
</edit-config>
</platform>
Seperti disebutkan dalam komentar, jika Anda belum menentukan android
ruang nama XML sebelumnya, Anda akan menerima error: unbound prefix
selama pembuatan. Ini menunjukkan bahwa Anda perlu menambahkannya ke widget
tag Anda dengan cara yang sama config.xml
, seperti:
<widget id="you-app-id" version="1.2.3"
xmlns="http://www.w3.org/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cdv="http://cordova.apache.org/ns/1.0">
error: unbound prefix.
) ketika mencoba membangun aplikasi Cordova saya. Solusinya adalah menambahkanconfig.xml
file saya , di<widget>
elemen root saya atributxmlns:android="http://schemas.android.com/apk/res/android
AndroidManifest.xml
dalam proyek Android Anda?Ada dua hal yang harus diperbaiki di config.xml Jadi jawaban yang benar harus menambahkan xmls: android:
ditambah mengedit konfigurasi untuk mengizinkan:
Jika langkah 1 dihindari kesalahan: awalan tidak terikat. akan muncul
sumber
Cleartext di sini mewakili informasi yang tidak dienkripsi. Sejak Android 9, disarankan agar aplikasi memanggil HTTPS API untuk memastikan tidak ada eves yang jatuh.
Namun, jika kita masih perlu memanggil API HTTP, kita dapat melakukan berikut ini:
Platform: Ionic 4
Buat file bernama: network_security_config.xml di bawah project-root / resources / android / xml
Tambahkan baris berikut:
Sekarang di project-root / config.xml , perbarui baris berikut:
Ini harus bekerja sekarang.
sumber
config.xml
sebelumedit-config
tag:<resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
. Terima kasih!Untuk mengatasi masalah, ada opsi lain. dalam sumber file / android / xml / network_security_config.xml. memasukkan:
Saya kasus saya, saya menggunakan alamat IP maka base-config diperlukan, tetapi jika Anda memiliki domain. cukup tambahkan domain.
sumber
Saya mengalami masalah ini sendiri hari ini, dan menemukan plugin yang sangat bagus yang akan menghemat kerumitan mencoba mengizinkan lalu lintas cleartext secara manual di Android 9+ untuk aplikasi Apache Cordova Anda. Cukup instal cordova-plugin-cleartext, dan plugin akan menangani semua hal di balik layar Android untuk Anda.
sumber
Setelah beberapa hari berjuang, ini berhasil untuk saya, dan saya harap ini juga berhasil untuk Anda.
tambahkan ini ke CONFIG.XML Anda , di atas kode Anda.
dan ini, di bawah platform android.
tambahkan kode berikut ke file ini "resources / android / xml / network_security_config.xml" .
sumber
trust-anchors
tag adalah komponen terakhir untuk membuat semua hal lainnya berfungsi.Menambahkan atribut berikut dalam tag pembuka <widget> berhasil untuk saya. Sederhana dan langsung dimuat ulang dengan benar di emulator Android 9. xmlns: android = "http://schemas.android.com/apk/res/android"
sumber
edit-config
kode dari jawaban yang diterima (memperbaikiunbound prefix
kesalahan)Anda harus menambahkan
untuk
seperti ini
sumber
Berikut adalah solusi yang berhasil untuk saya. File yang saya perbarui adalah sebagai berikut:
Perubahan pada file terkait adalah sebagai berikut:
1. config.xml
Saya telah menambahkan
<application android:usesCleartextTraffic="true" />
tag di dalam<edit-config>
tag di file config.xml2. network_security_config.xml
Di file ini saya telah menambahkan 2
<domain>
tag dalam<domain-config>
tag, domain utama dan sub domain sesuai kebutuhan proyek sayaTerima kasih @Ashutosh atas bantuannya.
Semoga membantu.
sumber
Saya menggunakan IONIC 5.4.13, cordova 9.0.0 ([email protected])
Saya mungkin mengulang informasi tetapi bagi saya masalah mulai muncul setelah menambahkan beberapa plugin (belum yakin). Saya mencoba semua kombinasi di atas, tetapi tidak ada yang berhasil. Ini hanya mulai berfungsi setelah menambahkan:
untuk mengajukan proyek di
jadi file network_security_config.xml saya sekarang terlihat seperti:
Terimakasih untuk semua.
sumber
Cli ionik lama (4.2) menyebabkan masalah dalam kasus saya, perbarui ke 5 untuk menyelesaikan masalah
sumber
Kami menggunakan
cordova-custom-config
plugin untuk mengelola konfigurasi Android kami. Dalam hal ini solusinya adalah menambahkan yang barucustom-preference
keconfig.xml
:Adakah yang tahu bagaimana melakukan ini hanya untuk pembangunan pembangunan? Saya akan senang untuk rilis build meninggalkan pengaturan ini
false
.(Saya melihat konfigurasi iOS menawarkan
buildType="debug"
untuk itu, tetapi saya tidak yakin apakah ini berlaku untuk konfigurasi Android.)sumber
@Der Hochstapler terima kasih atas solusinya.
tetapi di IONIC 4 beberapa penyesuaian dalam proyek config.xml bekerja untuk saya
Tambahkan baris di tag Widget
setelah ini, di tag Platform untuk android sesuaikan beberapa baris, centang di bawah ini
tambahkan usingCleartextTraffic = true setelah networkSecurityConfig dan tag resource-file
sumber
Dalam proyek kapasitor Ionic 4, ketika saya mengemas dan menerapkan ke ponsel android untuk pengujian, saya mendapat kesalahan ini. Diatasi dengan memasang kembali kapasitor dan memperbarui platform android.
sumber
Jika Anda memiliki kerangka kerja Cordova Lama yang mengalami masalah dengan perintah NPM dan Cordova. Saya akan menyarankan opsi di bawah ini.
Buat file android / res / xml / network_security_config.xml -
AndroidManifest.xml -
sumber
Solusi berikut berhasil untuk saya.
goto
resources/android/xml/network_security_config.xml
Ubah ke-sumber
Cukup tambahkan baris ini ke file platforms / android / app / src / main / AndroidManifest.xml
<application android: hardwareAccelerated = "true" android: icon = "@ mipmap / ic_launcher" android: label = "@ string / app_name" android: supportingRtl = "true" android: usingCleartextTraffic = "true" >
sumber