คำถามที่พบบ่อย: ICON / SPLASH SCREEN (Cordova 5.x / 2015)
ฉันนำเสนอคำตอบของฉันเป็นคำถามที่พบบ่อยทั่วไปซึ่งอาจช่วยคุณแก้ปัญหาต่างๆที่ฉันพบขณะจัดการกับไอคอน / หน้าจอเริ่มต้น คุณอาจพบว่าเอกสารประกอบไม่ชัดเจนหรือเป็นปัจจุบันเสมอไป สิ่งนี้อาจไปที่เอกสาร StackOverflowเมื่อมี
ขั้นแรก: ตอบคำถาม
ฉันจะเพิ่มไอคอนแอพที่กำหนดเองสำหรับ iOS และ Android ด้วย phonegap ได้อย่างไร
ใน Cordova theicon
แท็กจะไม่ได้ผล ไม่มีแม้แต่เอกสารใน Cordova 3.0.0 คุณควรใช้เวอร์ชันเอกสารที่เหมาะกับ cli ที่คุณใช้ไม่ใช่เวอร์ชันล่าสุด!
ไอคอนแท็กไม่ทำงานสำหรับ Android ที่ทุกคนก่อนรุ่น 3.5.0 ตามสิ่งที่ฉันสามารถมองเห็นในรุ่นที่แตกต่างกันของเอกสาร ใน 3.4.0 ยังคงแนะนำให้คัดลอกไฟล์ด้วยตนเอง
ในเวอร์ชันที่ใหม่กว่า : ของคุณconfig.xml
ดูดีกว่าสำหรับ Cordova เวอร์ชันใหม่ อย่างไรก็ตามยังมีอีกหลายสิ่งที่คุณอาจต้องการทราบ หากคุณตัดสินใจที่จะอัปเกรดสิ่งที่เป็นประโยชน์ในการปรับเปลี่ยนมีดังนี้:
- คุณไม่จำเป็นต้องมี
gap:
เนมสเปซ
- คุณต้องการ
<preference name="SplashScreen" value="screen" />
สำหรับ Android
นี่คือรายละเอียดเพิ่มเติมของคำถามที่คุณอาจถามตัวเองเมื่อพยายามจัดการกับไอคอนและหน้าจอเริ่มต้น:
ฉันสามารถใช้ Cordova / Phonegap เวอร์ชันเก่าได้หรือไม่
ไม่คุณลักษณะไอคอน / หน้าจอเริ่มต้นไม่ได้อยู่ใน Cordova เวอร์ชันเก่าดังนั้นคุณต้องใช้เวอร์ชันล่าสุด ในเวอร์ชันก่อนหน้ามีเพียง Phonegap Build เท่านั้นที่จัดการกับไอคอน / หน้าจอเริ่มต้นดังนั้นการสร้างไอคอนในเครื่องและการจัดการจึงทำได้ด้วยตะขอเท่านั้น ฉันไม่ทราบเวอร์ชันขั้นต่ำที่จะใช้คุณสมบัตินี้ แต่ด้วย 5.1.1 มันใช้งานได้ดีทั้งใน Cordova / Phonegap cli ด้วย Cordova 3.5 มันไม่ได้ผลสำหรับฉัน
แก้ไข : สำหรับ Android คุณต้องใช้อย่างน้อย 3.5.0
ฉันจะดีบักกระบวนการสร้างเกี่ยวกับไอคอนได้อย่างไร
cli ใช้คำสั่ง CP หากคุณระบุเส้นทางไอคอนที่ไม่ถูกต้องจะแสดงcp
ข้อผิดพลาด:
sebastien@sebastien-xps:cordova (dev *+$%)$ cordova run android --device
cp: no such file or directory: /home/sebastien/Desktop/Stample-react/cordova/res/www/stample_splash.png
แก้ไข : คุณใช้cordova build <platform> --verbose
เพื่อรับบันทึกการใช้คำสั่ง cp เพื่อดูว่าไอคอนของคุณถูกคัดลอกไปที่ใด
ไอคอนควรอยู่ในโฟลเดอร์ตามการกำหนดค่า สำหรับฉันมันไปในหลายโฟลเดอร์ย่อยใน:platforms/android/build/intermediates/res/armv7/debug/drawable-hdpi-v4/icon.png
จากนั้นคุณจะพบ APK และเปิดเป็นไฟล์ zip เพื่อตรวจสอบว่ามีไอคอนอยู่ ต้องอยู่ในres/drawable*
โฟลเดอร์เพราะเป็นโฟลเดอร์พิเศษสำหรับ Android
ฉันควรวางไอคอน / หน้าจอเริ่มต้นไว้ที่ใดในโครงการของฉัน
ในหลาย ๆ ตัวอย่างคุณจะพบว่าไอคอน / หน้าจอเริ่มต้นถูกประกาศไว้ภายในres
โฟลเดอร์ นี่res
คือโฟลเดอร์ Android พิเศษใน APK ที่ส่งออก แต่ไม่ได้หมายความว่าคุณต้องใช้res
โฟลเดอร์ในโครงการของคุณ
คุณสามารถวางไอคอนของคุณได้ทุกที่ แต่เส้นทางที่คุณใช้จะต้องสัมพันธ์กับรูทของโปรเจ็กต์www
ดังนั้นอย่าดูแล! นี่เป็นเอกสาร แต่ไม่ชัดเจนเนื่องจากใช้ตัวอย่างทั้งหมดres
และคุณไม่รู้ว่าโฟลเดอร์นี้อยู่ที่ไหน :(
ฉันหมายความว่าถ้าคุณใส่ไอคอนในตัวwww/icon.png
คุณจะต้องรวมwww
ไว้ในเส้นทางของคุณอย่างแน่นอน
แก้ไข Mars 2016 : หลังจากอัปเกรดเวอร์ชันของฉันตอนนี้ดูเหมือนว่าไอคอนจะสัมพันธ์กับwww
โฟลเดอร์ แต่ไม่มีการเปลี่ยนแปลงเอกสารประกอบ ( ปัญหา )
ไม่<icon src="icon.png"/>
ทำงานหรือไม่
ไม่มันไม่!.
บน Android ดูเหมือนว่าจะเคยใช้งานได้มาก่อน (เมื่อยังไม่รองรับแอตทริบิวต์ความหนาแน่น?) แต่ไม่ใช่อีกต่อไป ดูปัญหา Cordova นี้
ใน iOS ดูเหมือนว่าการใช้คำประกาศระดับโลกนี้อาจลบล้างการประกาศที่เฉพาะเจาะจงมากขึ้นดังนั้นโปรดดูแลและสร้างด้วย--verbose
เพื่อให้แน่ใจว่าทุกอย่างทำงานได้ตามที่คาด
ฉันสามารถใช้ไอคอน / ไฟล์หน้าจอสแปลชเดียวกันสำหรับความหนาแน่นทั้งหมดได้หรือไม่
ใช่คุณสามารถ. คุณยังสามารถใช้ไฟล์เดียวกันสำหรับทั้งไอคอนและหน้าจอเริ่มต้น (เพื่อทดสอบ!) ฉันใช้ไฟล์ไอคอน "ใหญ่" ขนาด 65kb โดยไม่มีปัญหาใด ๆ
อะไรคือความแตกต่างเมื่อใช้แท็กแพลตฟอร์มเทียบกับแอตทริบิวต์แพลตฟอร์ม
<icon src="icon.png" platform="android" density="ldpi" />
เหมือนกับ
<platform name="android">
<icon src="www/stample_icon.png" density="ldpi" />
</platform>
ฉันควรใช้ช่องว่าง: เนมสเปซหากใช้ Phonegap หรือไม่
จากประสบการณ์ของฉัน Phonegap หรือ Cordova เวอร์ชันใหม่สามารถเข้าใจการประกาศไอคอนโดยไม่ต้องใช้gap:
เนมสเปซ xml
อย่างไรก็ตามฉันยังรอคำตอบที่ถูกต้องที่นี่: ปลั๊กอิน Cordova / phonegap เพิ่ม VS config.xml
เท่าที่ฉันเข้าใจคุณสมบัติบางอย่างของไฟล์ gap:
เนมสเปซอาจพร้อมใช้งานก่อนหน้านี้ใน PhonegapBuild จากนั้นใน Phonegap จากนั้นจะถูกย้ายไปยัง Cordova (?)
ถูก<preference name="SplashScreen" value="screen" />
ต้อง?
อย่างน้อยก็สำหรับ Android ใช่แล้ว ฉันเปิดปัญหาพร้อมคำอธิบายเพิ่มเติม
คำสั่งประกาศไอคอนมีความสำคัญหรือไม่?
ใช่! อาจไม่มีผลกระทบใด ๆ กับ Android แต่มีผลกับ iOS ตามการทดสอบของฉัน นี้เป็นพฤติกรรมที่ไม่คาดคิดและไม่มีเอกสารดังนั้นผมจึงเปิดปัญหาอื่น
ฉันต้องการcordova-plugin-splashscreen
?
ใช่สิ่งนี้จำเป็นอย่างยิ่งหากคุณต้องการให้หน้าจอเริ่มต้นทำงาน เอกสารประกอบไม่ชัดเจน ( ปัญหา ) และขอให้เราคิดว่าปลั๊กอินจำเป็นเพื่อเสนอ javascript API หน้าจอเริ่มต้น
ฉันจะปรับขนาดภาพสำหรับความกว้าง / ความสูง / ความหนาแน่นทั้งหมดอย่างรวดเร็วได้อย่างไร
มีเครื่องมือที่จะช่วยให้คุณทำเช่นนั้นได้ สิ่งที่ดีที่สุดสำหรับฉันคือhttp://makeappicon.com/แต่ต้องระบุที่อยู่อีเมล
วิธีแก้ปัญหาอื่น ๆ ที่เป็นไปได้ ได้แก่ :
คุณช่วยยกตัวอย่าง config ได้ไหม
ใช่. นี่คือของจริงของฉันconfig.xml
<?xml version='1.0' encoding='utf-8'?>
<widget id="co.x" version="0.2.6" 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" xmlns:gap="http://phonegap.com/ns/1.0">
<name>x</name>
<description>
x
</description>
<author email="info@x.co" href="https://x.co">
x
</author>
<content src="index.html" />
<preference name="permissions" value="none" />
<preference name="webviewbounce" value="false" />
<preference name="StatusBarOverlaysWebView" value="false" />
<preference name="StatusBarBackgroundColor" value="#0177C6" />
<preference name="detect-data-types" value="true" />
<preference name="stay-in-webview" value="false" />
<preference name="android-minSdkVersion" value="14" />
<preference name="android-targetSdkVersion" value="22" />
<preference name="phonegap-version" value="cli-5.1.1" />
<preference name="SplashScreenDelay" value="10000" />
<preference name="SplashScreen" value="screen" />
<plugin name="cordova-plugin-device" spec="1.0.1" />
<plugin name="cordova-plugin-console" spec="1.0.1" />
<plugin name="cordova-plugin-whitelist" spec="1.1.0" />
<plugin name="cordova-plugin-crosswalk-webview" spec="1.2.0" />
<plugin name="cordova-plugin-statusbar" spec="1.0.1" />
<plugin name="cordova-plugin-screen-orientation" spec="1.3.6" />
<plugin name="cordova-plugin-splashscreen" spec="2.1.0" />
<access origin="http://*" />
<access origin="https://*" />
<access launch-external="yes" origin="tel:*" />
<access launch-external="yes" origin="geo:*" />
<access launch-external="yes" origin="mailto:*" />
<access launch-external="yes" origin="sms:*" />
<access launch-external="yes" origin="market:*" />
<platform name="android">
<icon src="www/stample_icon.png" density="ldpi" />
<icon src="www/stample_icon.png" density="mdpi" />
<icon src="www/stample_icon.png" density="hdpi" />
<icon src="www/stample_icon.png" density="xhdpi" />
<icon src="www/stample_icon.png" density="xxhdpi" />
<icon src="www/stample_icon.png" density="xxxhdpi" />
<splash src="www/stample_splash.png" density="land-hdpi"/>
<splash src="www/stample_splash.png" density="land-ldpi"/>
<splash src="www/stample_splash.png" density="land-mdpi"/>
<splash src="www/stample_splash.png" density="land-xhdpi"/>
<splash src="www/stample_splash.png" density="land-xhdpi"/>
<splash src="www/stample_splash.png" density="land-xhdpi"/>
<splash src="www/stample_splash.png" density="port-hdpi"/>
<splash src="www/stample_splash.png" density="port-ldpi"/>
<splash src="www/stample_splash.png" density="port-mdpi"/>
<splash src="www/stample_splash.png" density="port-xhdpi"/>
<splash src="www/stample_splash.png" density="port-xxhdpi"/>
<splash src="www/stample_splash.png" density="port-xxxhdpi"/>
</platform>
<platform name="ios">
<icon src="www/stample_icon.png" width="180" height="180" />
<icon src="www/stample_icon.png" width="60" height="60" />
<icon src="www/stample_icon.png" width="120" height="120" />
<icon src="www/stample_icon.png" width="76" height="76" />
<icon src="www/stample_icon.png" width="152" height="152" />
<icon src="www/stample_icon.png" width="40" height="40" />
<icon src="www/stample_icon.png" width="80" height="80" />
<icon src="www/stample_icon.png" width="57" height="57" />
<icon src="www/stample_icon.png" width="114" height="114" />
<icon src="www/stample_icon.png" width="72" height="72" />
<icon src="www/stample_icon.png" width="144" height="144" />
<icon src="www/stample_icon.png" width="29" height="29" />
<icon src="www/stample_icon.png" width="58" height="58" />
<icon src="www/stample_icon.png" width="50" height="50" />
<icon src="www/stample_icon.png" width="100" height="100" />
<splash src="www/stample_splash.png" width="320" height="480"/>
<splash src="www/stample_splash.png" width="640" height="960"/>
<splash src="www/stample_splash.png" width="768" height="1024"/>
<splash src="www/stample_splash.png" width="1536" height="2048"/>
<splash src="www/stample_splash.png" width="1024" height="768"/>
<splash src="www/stample_splash.png" width="2048" height="1536"/>
<splash src="www/stample_splash.png" width="640" height="1136"/>
<splash src="www/stample_splash.png" width="750" height="1334"/>
<splash src="www/stample_splash.png" width="1242" height="2208"/>
<splash src="www/stample_splash.png" width="2208" height="1242"/>
</platform>
<allow-intent href="*" />
<engine name="browser" spec="^3.6.0" />
<engine name="android" spec="^4.0.2" />
</widget>
แหล่งตัวอย่างที่ดีคือชุดเริ่มต้น เช่นเดียวกับphonegap-startหรือIonic starter