จะเพิ่มไอคอนแอปภายในโปรเจ็กต์ phonegap ได้อย่างไร?


85

ฉันสร้างโปรเจ็กต์ phonegap (v 3.0.0-0.14.0) ใหม่ด้วย config.xml เริ่มต้นจากนั้นเพิ่มแพลตฟอร์ม iOS และ Android

การกำหนดค่ามีเส้นทางทั้งหมดไปยังไอคอนแพลตฟอร์มทั้งหมด

ฉันเขียนทับไอคอนเริ่มต้นสำหรับ iOS และ Android เพื่อให้เส้นทางและชื่อยังคงตรงกับ png เหล่านั้น

เมื่อทำงานในโปรแกรมจำลองไอคอนจะไม่ปรากฏขึ้น ฉันได้ค้นหาใน xCode ซึ่งมันบอกว่าโฟลเดอร์ "ทรัพยากร" สำหรับไอคอนยังคงมีไอคอนเริ่มต้นของ phonegap อยู่ เช่นเดียวกับ Android

ผมทำอะไรผิดหรือเปล่า?

ฉันจะเพิ่มไอคอนแอพที่กำหนดเองสำหรับ iOS และ Android ด้วย phonegap ได้อย่างไร

ขอบคุณ

config.xml ของฉัน

<icon src="icon.png" />

<icon gap:density="ldpi" gap:platform="android" src="res/icon/android/icon-36-ldpi.png" />
<icon gap:density="mdpi" gap:platform="android" src="res/icon/android/icon-48-mdpi.png" />
<icon gap:density="hdpi" gap:platform="android" src="res/icon/android/icon-72-hdpi.png" />
<icon gap:density="xhdpi" gap:platform="android" src="res/icon/android/icon-96-xhdpi.png" />

<icon gap:platform="ios" height="57" src="res/icon/ios/icon-57.png" width="57" />
<icon gap:platform="ios" height="72" src="res/icon/ios/icon-72.png" width="72" />
<icon gap:platform="ios" height="114" src="res/icon/ios/icon-57-2x.png" width="114" />
<icon gap:platform="ios" height="144" src="res/icon/ios/icon-72-2x.png" width="144" />

<icon gap:platform="blackberry" src="res/icon/blackberry/icon-80.png" />
<icon gap:platform="blackberry" gap:state="hover" src="res/icon/blackberry/icon-80.png" />

<icon gap:platform="webos" src="res/icon/webos/icon-64.png" />
<icon gap:platform="winphone" src="res/icon/windows-phone/icon-48.png" />
<icon gap:platform="winphone" gap:role="background" src="res/icon/windows-phone/icon-173.png" />

4
มันคืออะไร? build ในเครื่องละเว้นไฟล์ config? stackoverflow.com/questions/15018098/…
Markus

Markus พูดถูกความคิดเห็นของเขาควรเป็นคำตอบ
drodsou

1
ฉันใช้เวลาในการตั้งคำถามที่พบบ่อยเกี่ยวกับทุกสิ่งที่คุณควรรู้เพื่อแก้จุดบกพร่อง / ทำให้ไอคอนใช้งานได้ (Cordova 5.1.1) ตรวจสอบstackoverflow.com/a/31674547/82609
Sebastien Lorber

คำตอบ:


67

โชคดีที่มีเอกสารเล็กน้อยเกี่ยวกับภาพสแปลชซึ่งทำให้ฉันได้รับตำแหน่งที่เหมาะสมสำหรับภาพไอคอนเช่นกัน นี่มันไปแล้ว

ที่ไฟล์จะถูกวางไว้ เมื่อคุณได้สร้างโครงการของคุณโดยใช้อินเตอร์เฟซบรรทัดคำสั่ง "คอร์โดวาสร้าง iOS" คุณควรจะมีโครงสร้างของไฟล์ที่สมบูรณ์สำหรับแอป iOS ของคุณในplatforms/ios/โฟลเดอร์

ภายในโฟลเดอร์นั้นคือโฟลเดอร์ที่มีชื่อแอปของคุณ ซึ่งจะมีresources/ไดเร็กทอรีที่คุณจะพบicons/และsplashscreen/โฟลเดอร์

ในโฟลเดอร์ไอคอนคุณจะพบไฟล์ไอคอนสี่ไฟล์ (สำหรับ 57px และ 72 px แต่ละไฟล์ในเวอร์ชันปกติและ @ 2x) นี่คือไอคอนตัวยึดตำแหน่งของ Phonegap ที่คุณเคยเห็น

จะทำอย่างไร

สิ่งที่คุณต้องทำคือบันทึกไฟล์ไอคอนในโฟลเดอร์นี้ นั่นคือ:

YourPhonegapProject/Platforms/ios/YourAppName/Resources/icons

เช่นเดียวกับไฟล์ splashscreen

หมายเหตุ

  1. หลังจากวางไฟล์ที่นั่นแล้วให้สร้างโครงการใหม่โดยใช้ cordova build ios AND ใช้คำสั่งเมนู 'Clean product' ของ xCode หากไม่มีสิ่งนี้คุณจะยังคงเห็นตัวยึดตำแหน่ง Phonegap

  2. เป็นการดีที่สุดที่จะเปลี่ยนชื่อไฟล์ของคุณด้วยวิธี iOS / Apple (เช่น icon-72@2x.png เป็นต้น) แทนที่จะแก้ไขชื่อใน info.plist หรือ config.xml อย่างน้อยนั่นก็ใช้ได้ผลสำหรับฉัน

  3. และโดยวิธีนี้ให้ละเว้นเส้นทางแปลก ๆ และชื่อไฟล์แปลก ๆ ที่กำหนดให้สำหรับไอคอนใน config.xml (เช่น<icon gap:platform="ios" height="114" src="res/icon/ios/icon-57-2x.png" width="114" />) ฉันทิ้งคำจำกัดความเหล่านั้นไว้ที่นั่นและไอคอนก็แสดงได้ดีแม้ว่าไอคอน 114px ของฉันจะถูกตั้งชื่อicon@2x.pngแทนicon-57-2x.pngแทน

  4. อย่าใช้ config.xml เพื่อป้องกันเอฟเฟกต์เงาของ Apple บนไอคอน ให้ทำเครื่องหมายในช่อง xCode แทน (คลิกชื่อโปรเจ็กต์ในคอลัมน์การนำทางด้านซ้ายเลือกแอพของคุณใต้ส่วนหัวของเป้าหมายแล้วเลื่อนลงไปที่ส่วนไอคอน)


จะไม่ออกจากชื่อไฟล์ใน config.xml ทำลายการสร้างด้วยบริการ build phonegap หรือไม่ สิ่งนี้ใช้ได้เฉพาะเนื่องจากการสร้างภายในเครื่องละเว้น config.xml จะเกิดอะไรขึ้นถ้า phonegap ตัดสินใจอ่าน ฉันขอแนะนำให้คัดลอกไฟล์เหล่านั้นด้วยกระบวนการสร้างบางประเภท
Markus

1
สวัสดี Markus ฉันไม่มีประสบการณ์กับบริการ Phonegap Build (ยกเว้นว่าจะทำให้งงงวยเมื่อฉันลองใช้งานสั้น ๆ และไม่ประสบความสำเร็จ) ดังนั้นฉันไม่สามารถตัดสินความคิดเห็นของคุณได้ แต่ฉันจะรับฟังความคิดเห็นของคุณ ดังนั้นคำตอบของฉันจึงมุ่งเป้าไปที่ผู้ที่สร้างงานสร้างของตัวเองเท่านั้น
Wytze

1
คำตอบนี้ล้าสมัย (แต่ใช้ได้กับ 3.0.0) ไม่จำเป็นต้องใช้กระบวนการมานูเอลอีกต่อไปเพื่อจัดการเรื่องนี้ ตรวจสอบ edge doc และคำตอบของฉันที่นี่stackoverflow.com/a/31674547/82609
Sebastien Lorber

46

คำถามที่พบบ่อย: 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


2
ฉันสร้างยูทิลิตี้ cli ขนาดเล็ก (ในกลุ่มอื่น ๆ อีกมากมาย) ที่จัดการไอคอนแอปหน้าจอเริ่มต้นและการสร้างตัวอย่างhttps://github.com/mmacmillan/cordova-imagingฉันพูดถึงสิ่งนี้เนื่องจากขับเคลื่อนโดยไฟล์การกำหนดค่าที่มีการบันทึกไว้อย่างดีเกี่ยวกับ ขนาด / มิติ / สถานที่และมีลิงก์ไปยังเอกสารเฉพาะแพลตฟอร์ม สิ่งนี้อาจช่วยเสริมคำตอบโดยละเอียดที่คุณสละเวลาให้
Mike MacMillan

ฉันทำทั้งหมดนี้ด้วย Cordova 5.1 ไฟล์จะถูกคัดลอกใน. apk ตามที่คุณพูดถึง แต่แท็บเล็ตยังไม่แสดงไอคอนใหม่ ความคิดใด ๆ ?
Gringo Suave

สิ่งที่ต้องทำคือถอนการติดตั้งแอปเวอร์ชันเก่าจากนั้นติดตั้งเวอร์ชันใหม่ จากนั้นแท็บเล็ตสังเกตเห็นบางอย่างเปลี่ยนแปลงไป ดังนั้นฉันจึงได้รับไอคอนใหม่
Gringo Suave

1
เป็นคำตอบที่ยอดเยี่ยมจริงๆ! ฉันใช้คำแนะนำของคุณcordova build android --verboseเพื่อระบุและแก้ไขปัญหาของฉัน ขอบคุณ!
ซาร่าห์

คำตอบที่ดี Sebastien;) ยกนิ้วให้
Alaeddine

32

ตั้งแต่ Cordova 3.5.0-0.2.6 <icon />องค์ประกอบใน config.xml ทำงานร่วมกับคำเตือนต่อไปนี้:

  1. srcแอตทริบิวต์เป็นเส้นทางที่สัมพันธ์กับโฟลเดอร์รากโครงการของคุณ เครื่องมือติดตามปัญหาเกี่ยวกับปัญหานี้ทำให้เกิดการเปลี่ยนแปลง

  2. <icon src="..." />องค์ประกอบโดยไม่ต้องมีความละเอียด / dpi เป็นเอกสารที่เป็นไอคอนที่ใช้โดยแพลตฟอร์มทั้งหมดเป็นไอคอนเริ่มต้น อย่างไรก็ตามในรุ่น Android ไอคอนเริ่มต้นจะถูกคัดลอกไปยังโฟลเดอร์ที่วาดได้ของ Android เท่านั้นโดยไม่ได้ตั้งค่าความละเอียดที่เฉพาะเจาะจง สิ่งนี้ทำให้ไอคอนแบบกำหนดเองของคุณปรากฏใน/res/drawableโฟลเดอร์และไอคอนเริ่มต้นของ Cordova ที่มีความละเอียดเฉพาะจะมีอยู่ในโฟลเดอร์อื่น ๆ ภายใน apk สุดท้าย (เช่น/res/drawable-ldpi) คุณต้องเพิ่มองค์ประกอบไอคอนหนึ่งรายการconfig.xmlสำหรับความละเอียดแต่ละรายการบนแพลตฟอร์ม Android

ตัวอย่างเช่นหากรูปภาพไอคอนของคุณอยู่ในเส้นทางที่www/res/img/icon.pngสัมพันธ์กับโปรเจ็กต์รูทของคุณบรรทัดนี้config.xmlจะทำให้ไอคอนแอพของคุณใน Android ใช้งานได้:

<!-- Default application icon -->
<icon src="www/res/img/icon.png" />
<!--
    Default icon should work, but cordova don't overwrite
    the default on all densities
-->
<icon src="www/res/img/icon.png" platform="android" density="ldpi" />
<icon src="www/res/img/icon.png" platform="android" density="mdpi" />
<icon src="www/res/img/icon.png" platform="android" density="hdpi" />
<icon src="www/res/img/icon.png" platform="android" density="xhdpi" />

ด้วยการกำหนดค่าดังกล่าวคุณสามารถมีไอคอนรูปภาพเดียวสำหรับความละเอียดทั้งหมดที่เขียนทับไอคอน Cordova เริ่มต้นและไม่ต้องใช้ hoooks แบบกำหนดเอง เพียงแค่สร้างด้วยcordova build androidควรทำเคล็ดลับ


คุณมีลิงค์รายงานข้อบกพร่องสำหรับปัญหา 2 หรือไม่? ฉันเพิ่งประสบปัญหานี้ในโครงการใหม่และตอนแรกทำให้ฉันสับสน ต้องการติดตามความคืบหน้าเพื่อทราบว่าจะได้รับการแก้ไขเมื่อเป็นไปได้ ไชโย
Mike

ในที่สุด omg ก็ใช้งานได้! ขอบคุณสำหรับdensity. เปลี่ยน<icon gap:platform="android" gap:qualifier="ldpi" src="www/res/icon/android/icon-36-ldpi.png" />เป็น<icon gap:platform="android" density="ldpi" src="www/res/icon/android/icon-36-ldpi.png" />
ท่าเล็ง

@Ronoaldo Periera your'e ผู้ช่วยชีวิตของฉัน !! <icon .. > แท็กสำหรับแต่ละความหนาแน่น! เก่ง !!
Hittz

ไอคอนเริ่มต้น src ทำงานได้ไม่ดีสำหรับ Android ดังนั้นจึงถูกเพิกเฉย! ตรวจสอบคำตอบของฉันที่นี่: stackoverflow.com/a/31674547/82609
Sebastien Lorber

8

หากคุณต้องการเป็นวิธีที่ง่ายต่อการใช้งานเพื่อเพิ่มไอคอนโดยอัตโนมัติเมื่อมีการสร้างในประเทศ ( cordova emulate ios, cordova run androidฯลฯ ) มีลักษณะที่สำคัญนี้:

https://gist.github.com/LinusU/7515016

หวังว่าสิ่งนี้จะเริ่มทำงานนอกกรอบในอนาคตนี่คือรายงานข้อบกพร่องที่เกี่ยวข้องในโครงการ Cordova:

https://issues.apache.org/jira/browse/CB-2606


Linus ตามที่อธิบายไว้ในคำตอบของฉันใช่ตอนนี้ใช้งานได้แล้ว แต่ดูเหมือนว่าจะมีบางอย่างพังตรวจสอบstackoverflow.com/a/31674547/82609
Sebastien Lorber

4

คุณต้องสร้างไฟล์ config.xml ซึ่งคุณจะต้องใส่ไฟล์ไอคอน

<?xml version="1.0" encoding="ISO-8859-1" ?>
<widget xmlns = "http://www.w3.org/ns/widgets"
   xmlns:gap = "http://phonegap.com/ns/1.0"
   id        = "example"
   version    = "1.0.0">

   <icon src="icon.png" />
</widget>

ตรวจสอบสิ่งนี้: https://build.phonegap.com/docs/config-xml

มีไอคอนเฉพาะของ iOS


ไฟล์ config ของฉันมีไอคอนทั้งหมดอยู่แล้ว มันถูกสร้างขึ้นโดยค่าเริ่มต้นเมื่อสร้างโปรเจ็กต์ phonegap ใหม่
Markus

2
ไม่ทำงาน มันทำงานร่วมกับ PG Build แต่ Cordova 3.x cli ไม่ได้ใช้ไอคอนที่ระบุใน config.xml มาพิจารณา (หรือ icon.png & screen.png ในรูท) ยังมองหาคำตอบสำหรับคำถามนี้
lefnire

ใช่ config.xml สำหรับ PhoneGap Build เท่านั้น! มีใครรู้วิธีทำบ้าง!
Michael

บน Cordova 3.5.0-0.2.6 การรองรับไอคอนใช้งานได้โดยมีข้อแม้บางประการบน Android ดูคำตอบของฉันสำหรับรายละเอียด
Ronoaldo Pereira

4

เนื่องจากคำตอบส่วนใหญ่ที่นี่มุ่งเป้าไปที่ iOS นี่คือโซลูชันสำหรับการเปลี่ยนไอคอนใน Android

สำหรับ Android:

ทำการเปลี่ยนแปลงใน<project location> \ platforms \ android \ ant-build \ resและไม่ใช่<project location> \ platforms \ android \ res

สำหรับบางคนที่ทำการเปลี่ยนแปลงในตำแหน่งหลังอาจได้ผล แต่เมื่อสังเกตเห็นว่า Phonegap คัดลอกจาก \ android \ res ไปยัง \ android \ ant-build \ res ฉันจึงตัดสินใจเช็คอินที่นั่นและพบโฟลเดอร์ที่วาดได้แยกต่างหากซึ่งมีค่าเริ่มต้น ไอคอน phonegap

การเปลี่ยนสิ่งเหล่านั้นได้ผลในที่สุด

เนื่องจากฉันกำลังสร้างและใช้งานในเครื่องและไม่ได้ใช้ Adobe PhoneGap Build การเปลี่ยนไอคอนใน<ตำแหน่งโปรเจ็กต์> \ www \ res \ icon \ androidก็ใช้ไม่ได้เช่นกัน


3

ฉันใช้ phonegap 3.1.0-0.15.0 เนื่องจาก iOS7 เปลี่ยนความละเอียดเป็น 120x120px ฉันเพิ่งเพิ่มไฟล์ที่มีขนาดเหล่านั้นไปยังโปรเจ็กต์จากนั้นเปลี่ยนไฟล์ info.plist

  1. เพิ่มไฟล์ 120x120 ในโปรเจ็กต์โดยคลิกขวาที่ไฟล์โปรเจ็กต์ใน Xcode แล้วเลือก"เพิ่มไฟล์ใน" [ชื่อโปรเจ็กต์ของคุณ] "...
  2. ไปที่ไฟล์ info.plist ใน Xcode "Resources / [Your Project Name] -info.plist"
  3. ภายใต้"ไฟล์ไอคอน (iOS 5) / ไอคอนหลัก / ไฟล์ไอคอน" ให้เปลี่ยน"รายการ 2"เป็นชื่อไฟล์ใดก็ได้ที่ไฟล์ของคุณมี (ฉันเรียกว่าไอคอนของฉัน "-120.png ซึ่งฉันวางไว้ในโฟลเดอร์ Project พร้อมกับไอคอนอื่น ๆ ทั้งหมด แม้ว่ามันจะไม่สำคัญก็ตาม)

สามารถดูข้อมูลเพิ่มเติมได้ที่นี่: http://www.digifloor.com/missing-recommended-icon-file-error-ios-app-13

ในการแก้ไขหน้าจอเริ่มต้นใน iOS ฉันเพิ่งวางไฟล์ใหม่ที่มีขนาดเดียวกันและชื่อไฟล์เดียวกันเขียนทับไฟล์เก่า อย่าลืมไปที่Product> Cleanในแถบเมนูใน Xcode (ทางลัด Shift + Command + K) และควรใช้งานได้ดี! :)


3

ใน Cordova 3.3.1-0.1.2 ลักษณะการทำงานที่คาดไว้ไม่ทำงานอย่างถูกต้อง

ใน

http://cordova.apache.org/docs/en/3.3.0/config_ref_images.md.html#Icons%20and%20Splash%20Screens

ระบุไว้อย่างชัดเจนว่าคุณควรใส่ไว้ในโฟลเดอร์ www หลักของคุณในโฟลเดอร์ที่เรียกว่า res และไอคอนที่เป็นไปตามรูปแบบการตั้งชื่อเฉพาะแทนที่จะใช้วิธีกำหนด config.xml ที่ปรับแต่งได้แบบดั้งเดิม (ซึ่งคุณชี้ไปที่ไฟล์ที่คุณเลือก ซึ่งดีกว่ามาก) ควรใช้เวลาจากที่นั่นสำหรับแต่ละแพลตฟอร์มและนำไปใส่ในแพลตฟอร์ม /? android? / res / drawable-? dpi / icon.png แต่มันไม่มีพฤติกรรมที่ถูกต้องในเวลานี้ ...

ดังนั้นฉันเดาว่าเราต้องวางไว้ที่นั่นด้วยตนเองสำหรับแต่ละแพลตฟอร์ม แน่นอนว่าจะต้องลบออกจากการทำซ้ำลงในโฟลเดอร์ www อีกครั้ง สำหรับฉันฉันต้องแทนที่เนื้อหาในโฟลเดอร์ www หลักทั้งหมดอยู่ดีเพราะมันใช้ไม่ได้กับแม้แต่ hello world โดยไม่ต้องแฮ็ค index.html การเปลี่ยนเส้นทางเพื่อค้นหาโฟลเดอร์สุ่มแปลก ๆ ที่นั่น การวางโฟลเดอร์ res ข้าง www นั้นสมเหตุสมผลที่สุด แต่สิ่งที่ดูเหมือนว่าจะเป็นสำหรับฉันที่เกิดจากชุดของตัวเลือก / ข้อบกพร่องในการออกแบบที่เรียงซ้อนและสับสน


2

ในบางกรณี skripts ภายในของ Cordova ไม่ได้ใส่ไอคอนไว้ในโฟลเดอร์ที่ถูกต้องดังนั้นคุณจึงสามารถเห็นหุ่นยนต์ f *** cordova แทนที่จะเป็นไอคอนของคุณเอง

ใช้ประโยชน์จากสคริปต์เบ็ด;)

สามตะขอของคุณ Cordovaphonegap โครงการต้องการ

สร้างโฟลเดอร์ "after_platform_add" ในโฟลเดอร์ hook และใส่ / เปลี่ยน skript สุดท้ายจาก devgirl

อย่าลืมตั้งค่าสิทธิ์ระดับผู้บริหารสำหรับสคริปต์ใน linux "chmod 777 <script>"

โชคดี!


1

สิ่งที่ฉันทำคือเพิ่มบรรทัดด้านล่างใน config.xml <icon src="www/img/appIcon.png" />

และทำงานได้ดีโดยสิ้นเชิง


ขอบคุณคน ฉันพยายามใส่ไอคอนเดียวใน res / icon.png (ดังตัวอย่างเอกสารประกอบ ... ) และมันไม่เคยทำงานบน ios ในที่สุดฉันก็ยอมแพ้กับโฟลเดอร์ "res" ที่สับสนและวางไอคอนไว้ใต้ "www" ตามที่คุณแนะนำและมันก็เป็นเสน่ห์สำหรับฉันเช่นกัน! สิ่งนี้ใช้ได้กับ Cordova 6.0.0 แพลตฟอร์ม ios
firepol

1

เพียงเพิ่มรหัสนี้ลงในไฟล์ config.xml ของคุณ

<icon src="path to your icon image">

เช่น:

<icon src="icon.png">

วิธีจำว่าคุณต้องใช้นามสกุล. png


ลองใช้ภาพ png
Jobincs

0

ฉันกำลังพยายามทำความเข้าใจว่าทั้งหมดนี้เชื่อมโยงกันอย่างไร

นี่คือสิ่งที่ฉันพบใน XCode แต่ฉันหวังว่าจะได้รับการแก้ไขหรือยืนยันหากสมมติฐานของฉันถูกต้อง ฉันไม่พบการสร้างนอกกรอบเพื่อ xcode จาก Cordova ที่ใช้ไอคอนอย่างถูกต้อง เช่นเดียวกับคุณฉันได้อัปเดตไอคอนทั้งหมดที่อยู่ใน config.xml แต่ไม่มีลูกเต๋า

ดังนั้น...

ขั้นแรกฉันมักจะอัปเดต config.xml ในรูทของโปรเจ็กต์ด้วยอันที่อยู่ในโฟลเดอร์ "www" ของฉัน (สิ่งนี้ฉันไม่แน่ใจว่า www / config.xml มีความสำคัญหรือมีผลบังคับใช้)

อย่างที่สองฉันอัปเดต "ขั้นตอนการสร้าง" ของโครงการ ขยาย "คัดลอกทรัพยากรบันเดิล" คุณสังเกตเห็นภาพทั้งหมดใน "ทรัพยากร / ไอคอน" "ทรัพยากร / สแปลช" แล้ว คุณสามารถ:

  • ลบสิ่งเหล่านี้ทั้งหมดเพื่อหลีกเลี่ยงการเขียนทับภาพของคุณหรือ
  • อัปเดตภาพเหล่านี้ทั้งหมดด้วยตัวคุณเอง (เปลี่ยนชื่อเป็นชื่อภาพในรายการ)

ขณะที่ฉันกำลังดำเนินการอยู่คุณอาจสามารถอัปเดตรูปภาพจากแท็บ "สรุป" ได้เพียงเล็กน้อย

ลากและวางรูปภาพของคุณจากโฟลเดอร์ res ไปยังรูปภาพที่เหมาะสมในแท็บ "สรุป" (res / icon / ios -> ไอคอนแอพและ res / screen / ios -> เปิดตัวรูปภาพ) ฉันใช้กับ iPhone เท่านั้นเนื่องจากแอปของฉันคือ iPhone เท่านั้น เลือก "แสดงผลล่วงหน้า" หากคุณไม่ต้องการให้เงาปรากฏ

จากนั้นอัปเดต "icon.png" ที่อ้างถึงในไฟล์ plist ของโครงการ: PROJECT_NAME-Info.plist หรือในแท็บ "ข้อมูล" เมื่อดูเป้าหมายโครงการ เปลี่ยนชื่อเป็น "icon-57.png" (ซึ่งตอนนี้อยู่ในรูทโปรเจ็กต์ของคุณสิ่งนี้จะถูกเพิ่มลงในรูทโดยอัตโนมัติเมื่อคุณลากแล้วปล่อย

สร้างและคุณควรมีไอคอนแอปที่อัปเดต


ฉันสร้างโครงการด้วย Cordova 3.0.3 แล้ว แต่ฉันคิดว่ามันเหมือนกันกับรุ่น phonegap
Sam Tsai

0

แค่สังเกตว่าฉันเพิ่งเปลี่ยน config.xml ของฉันให้ดูเหมือนตัวอย่างของเซบาสเตียน

สิ่งที่เป็นประโยชน์ในการดีบักทั้งหมดนี้โดยเฉพาะอย่างยิ่งหากคุณไม่ได้สร้างในเครื่อง ... คือการดาวน์โหลดไฟล์ XAP / IPA / APK ที่สร้างจากระบบคลาวด์ PhoneGap และสร้างโฟลเดอร์สำหรับแต่ละไฟล์ เปลี่ยนชื่อไฟล์แต่ละไฟล์ด้วยนามสกุล. ZIP และแตกเนื้อหาของแต่ละไฟล์ไปยังโฟลเดอร์ที่เกี่ยวข้อง โดยพื้นฐานแล้วตอนนี้คุณสามารถดูได้ว่ามีอะไรอยู่ในแพ็คเกจที่จะส่งไปยังโทรศัพท์

การทำเช่นนี้ฉันเห็นได้ว่าสำหรับแพลตฟอร์ม Microsoft Phone นั้นส่วนใหญ่ไม่สนใจความพยายามทั้งหมดของฉันในการเปลี่ยนไอคอนหรือหน้าจอเริ่มต้น หากคุณเปลี่ยน ApplicationIcon.png และ SplashScreenImage.jpg จากนั้นให้ zip ชุดโฟลเดอร์อีกครั้งและเปลี่ยนชื่ออีกครั้งเป็นไฟล์. XAP จากนั้นคุณสามารถปรับใช้กับโทรศัพท์ของคุณและมันจะทำงานได้อย่างสมบูรณ์ อย่างไรก็ตามมีวิธีการเพียงแค่สร้าง PhoneGap เพื่อเปลี่ยน icon.png และ icon.jpg ของคุณให้เป็นสองไฟล์ บางทีคำแนะนำของ Masood อาจเป็นไปได้ที่นี่และใช้สคริปต์เบ็ด

การทำเช่นเดียวกันกับไฟล์. IPA (iOS) จะทำให้เกิดไฟล์หลายไฟล์เช่น icon-something.png ที่ระดับพาเรนต์เหนือ www. ทุกอย่างดูเหมือนจะว่างเปล่า

การทำเช่นเดียวกันกับไฟล์. APK (Android) จะทำให้ได้ชุดโฟลเดอร์ res / drawable-something และดูเหมือนว่าจะมี icon.png ของฉันอยู่ในแต่ละโฟลเดอร์ เป็นความสำเร็จที่ใกล้เคียงที่สุดที่ฉันสามารถเรียกร้องได้ในขณะนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.