Làm cách nào để thêm biểu tượng ứng dụng trong các dự án phonegap?


85

Tôi đã tạo một dự án phonegap (v 3.0.0-0.14.0) mới với config.xml mặc định và sau đó thêm các nền tảng iOS và Android.

Cấu hình chứa tất cả các đường dẫn đến tất cả các biểu tượng nền tảng.

Tôi đã ghi đè các biểu tượng mặc định cho iOS và Android để đường dẫn và tên vẫn khớp với các pngs đó.

Khi chạy trong trình mô phỏng, các biểu tượng không hiển thị. Tôi đã tìm kiếm nó trong xCode, nơi nó cho tôi biết rằng thư mục "Tài nguyên" cho các biểu tượng vẫn chứa các biểu tượng mặc định của bản đồ điện thoại. Tương tự với Android.

Tôi đang làm gì sai?

Làm cách nào để thêm các biểu tượng ứng dụng tùy chỉnh cho iOS và Android với phonegap?

cảm ơn

config.xml của tôi

<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
đây là nó? bản dựng cục bộ bỏ qua tệp cấu hình? stackoverflow.com/questions/15018098/…
Markus

Markus đúng, bình luận của anh ấy phải là một câu trả lời
drodsou

1
Tôi đã dành thời gian để tạo Câu hỏi thường gặp về mọi thứ bạn nên biết để gỡ lỗi / làm cho các biểu tượng hoạt động (cordova 5.1.1). Kiểm tra stackoverflow.com/a/31674547/82609
Sebastien Lorber

Câu trả lời:


67

May mắn thay, có một chút trong tài liệu về hình ảnh giật gân, giúp tôi tìm được vị trí thích hợp cho các hình ảnh biểu tượng. Vì vậy, đây là nó đi.

Nơi đặt tệp Khi bạn đã xây dựng dự án của mình bằng giao diện dòng lệnh "cordova build ios", bạn sẽ có cấu trúc tệp hoàn chỉnh cho ứng dụng iOS của mình trong platforms/ios/thư mục.

Bên trong thư mục đó là một thư mục có tên ứng dụng của bạn. Đến lượt nó chứa một resources/thư mục nơi bạn sẽ tìm thấy các thư mục icons/splashscreen/.

Trong thư mục biểu tượng, bạn sẽ tìm thấy bốn tệp biểu tượng (cho 57px và 72 px, mỗi tệp ở phiên bản thông thường và @ 2x). Đây là các biểu tượng trình giữ chỗ Phonegap mà bạn đã thấy cho đến nay.

Làm gì

Tất cả những gì bạn phải làm là lưu các tệp biểu tượng trong thư mục này. Vì vậy, đó là:

YourPhonegapProject/Platforms/ios/YourAppName/Resources/icons

Tương tự đối với các tệp màn hình giật gân.

Ghi chú

  1. Sau khi đặt các tệp ở đó, hãy xây dựng lại dự án bằng cordova build iosAND sử dụng lệnh menu 'Sản phẩm sạch' của xCode. Nếu không có điều này, bạn vẫn sẽ thấy các trình giữ chỗ Bản đồ điện thoại.

  2. Tốt nhất là đổi tên tệp của bạn theo cách iOS / Apple (tức là icon-72@2x.png, v.v.) thay vì chỉnh sửa tên trong info.plist hoặc config.xml. Ít nhất điều đó đã làm việc cho tôi.

  3. Và nhân tiện, hãy bỏ qua đường dẫn lạ và tên tệp kỳ lạ được cung cấp cho các biểu tượng trong config.xml (tức là <icon gap:platform="ios" height="114" src="res/icon/ios/icon-57-2x.png" width="114" />). Tôi chỉ để những định nghĩa đó ở đó và các biểu tượng hiển thị tốt mặc dù biểu tượng 114px của tôi được đặt tên icon@2x.pngthay vì icon-57-2x.png.

  4. Không sử dụng config.xml để ngăn chặn hiệu ứng bóng của Apple trên biểu tượng. Thay vào đó, hãy đánh dấu vào hộp trong xCode (nhấp vào tiêu đề dự án trong cột điều hướng bên trái, chọn ứng dụng của bạn trong tiêu đề Target và cuộn xuống phần biểu tượng).


Việc để lại tên tệp trong config.xml sẽ không phá vỡ bản dựng với dịch vụ bản đồ điện thoại? điều này chỉ hoạt động vì bản dựng cục bộ đang bỏ qua config.xml. điều gì sẽ xảy ra nếu phonegap quyết định đọc nó? Tôi đề nghị sao chép các tệp đó với một số loại quy trình xây dựng.
Markus

1
Xin chào Markus, tôi không có kinh nghiệm với dịch vụ Phonegap Build (ngoại trừ việc nó gặp khó khăn khi tôi thử một thời gian ngắn và không thành công). Vì vậy, tôi không thể đánh giá nhận xét của bạn nhưng tôi sẽ giữ lời của bạn cho nó. Vì vậy, câu trả lời của tôi chỉ nhắm mục tiêu đến những người tự xây dựng.
Wytze

1
Câu trả lời này đã lỗi thời (nhưng hoạt động cho 3.0.0). Không cần quá trình manuel nữa để xử lý việc này. Kiểm tra cạnh doc và câu trả lời của tôi ở đây stackoverflow.com/a/31674547/82609
Sebastien Lorber

46

Câu hỏi thường gặp: MÀN HÌNH ICON / SPLASH (Cordova 5.x / 2015)

Tôi trình bày câu trả lời của mình dưới dạng Câu hỏi thường gặp chung có thể giúp bạn giải quyết nhiều vấn đề tôi gặp phải khi xử lý các biểu tượng / màn hình giật gân. Bạn có thể nhận ra như tôi rằng tài liệu không phải lúc nào cũng rõ ràng và cũng không cập nhật. Điều này có thể sẽ chuyển đến tài liệu StackOverflow khi có sẵn.

Đầu tiên: trả lời câu hỏi

Làm cách nào để thêm các biểu tượng ứng dụng tùy chỉnh cho iOS và Android với phonegap?

Trong phiên bản Cordova của bạn, iconthẻ này vô dụng. Nó thậm chí không được ghi lại trong Cordova 3.0.0. Bạn nên sử dụng phiên bản tài liệu phù hợp với cli bạn đang sử dụng chứ không phải phiên bản mới nhất!

Các biểu tượng thẻ không hoạt động dành cho Android tại tất cả trước khi phiên bản 3.5.0 theo những gì tôi có thể nhìn thấy trong các phiên bản khác nhau của tài liệu. Trong 3.4.0, họ vẫn khuyên bạn nên sao chép thủ công các tệp

Trong các phiên bản mới hơn : của bạn config.xmltrông đẹp hơn cho các phiên bản Cordova mới hơn. Tuy nhiên vẫn còn nhiều điều bạn có thể muốn biết. Nếu bạn quyết định nâng cấp, đây là một số điều hữu ích cần sửa đổi:

  • Bạn không cần gap:không gian tên
  • Bạn cần <preference name="SplashScreen" value="screen" />cho Android

Dưới đây là chi tiết hơn về các câu hỏi bạn có thể tự hỏi khi cố gắng xử lý các biểu tượng và màn hình giật gân:

Tôi có thể sử dụng phiên bản cũ của Cordova / Phonegap không

Không, tính năng biểu tượng / màn hình giật gân không có trong các phiên bản cũ của Cordova, vì vậy bạn phải sử dụng phiên bản gần đây. Trong các phiên bản cũ, chỉ có Phonegap Build mới xử lý các biểu tượng / màn hình giật gân nên việc xây dựng cục bộ và xử lý các biểu tượng chỉ có thể thực hiện được với một hook. Tôi không biết phiên bản tối thiểu để sử dụng tính năng này nhưng với 5.1.1, nó hoạt động tốt ở cả Cordova / Phonegap cli. Với Cordova 3.5, nó không hoạt động với tôi.

Chỉnh sửa : đối với Android, bạn phải sử dụng ít nhất 3.5.0

Làm cách nào để gỡ lỗi quy trình xây dựng về các biểu tượng?

Cli sử dụng lệnh CP. Nếu bạn cung cấp một đường dẫn biểu tượng không hợp lệ, nó sẽ hiển thị cplỗi:

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

Chỉnh sửa : bạn có quyền sử dụng cordova build <platform> --verboseđể lấy nhật ký sử dụng lệnh cp để xem nơi các biểu tượng của bạn được sao chép

Các biểu tượng sẽ nằm trong một thư mục theo cấu hình. Đối với tôi, nó nằm trong nhiều thư mục con trong:platforms/android/build/intermediates/res/armv7/debug/drawable-hdpi-v4/icon.png

Sau đó, bạn có thể tìm thấy APK và mở nó dưới dạng tệp nén zip để kiểm tra các biểu tượng hiện có. Chúng phải nằm trong một res/drawable*thư mục vì đó là một thư mục đặc biệt dành cho Android.

Tôi nên đặt các biểu tượng / màn hình giật gân ở đâu trong dự án của mình?

Trong nhiều ví dụ, bạn sẽ thấy các biểu tượng / màn hình giật gân được khai báo bên trong một resthư mục. Đây reslà một thư mục Android đặc biệt trong APK đầu ra, nhưng nó không có nghĩa là bạn phải sử dụng một resthư mục trong dự án của mình.

Bạn có thể đặt biểu tượng của mình ở bất cứ đâu, nhưng đường dẫn bạn sử dụng phải liên quan đến gốc của dự án , và đừng wwwquá quan tâm! Đây là tài liệu, nhưng không rõ ràng vì tất cả các ví dụ đang sử dụng resvà bạn không biết thư mục này ở đâu :(

Ý tôi là nếu bạn đặt biểu tượng vào www/icon.pngbạn thì tuyệt đối phải đưa wwwvào con đường của bạn.

Sửa Mars 2016 : sau khi nâng cấp phiên bản của tôi, bây giờ có vẻ như các biểu tượng có liên quan đến wwwthư mục nhưng tài liệu chưa được thay đổi ( vấn đề )

<icon src="icon.png"/>hiệu quả không?

Không nó không! .

Trên Android, có vẻ như nó đã từng hoạt động trước đây (khi thuộc tính mật độ chưa được hỗ trợ?) Nhưng không còn nữa. Xem vấn đề Cordova này

Trên iOS, có vẻ như việc sử dụng khai báo toàn cục này có thể ghi đè các khai báo cụ thể hơn, vì vậy hãy cẩn thận và xây dựng --verboseđể đảm bảo mọi thứ hoạt động như mong đợi.

Tôi có thể sử dụng cùng một biểu tượng / tệp màn hình giật gân cho tất cả các mật độ không.

Có bạn có thể. Bạn thậm chí có thể sử dụng cùng một tệp cho cả biểu tượng và màn hình giật gân (chỉ để kiểm tra!). Tôi đã sử dụng một tệp biểu tượng "lớn" 65kb mà không có vấn đề gì.

Sự khác biệt khi sử dụng thẻ nền tảng so với thuộc tính nền tảng

<icon src="icon.png" platform="android" density="ldpi" />

giống như

<platform name="android">
    <icon src="www/stample_icon.png" density="ldpi" />
</platform>

Tôi có nên sử dụng gap: namespace nếu sử dụng Phonegap không?

Theo kinh nghiệm của tôi, các phiên bản Phonegap hoặc Cordova mới đều có thể hiểu các khai báo biểu tượng mà không cần sử dụng bất kỳ gap:không gian tên xml nào .

Tuy nhiên, tôi vẫn đang chờ câu trả lời hợp lệ ở đây: plugin cordova / phonegap thêm VS config.xml

Theo như tôi hiểu, một số tính năng với gap:không gian tên có thể có sẵn trước đó trong PhonegapBuild, sau đó trong Phonegap và sau đó được chuyển sang Cordova (?)

<preference name="SplashScreen" value="screen" />bắt buộc?

Ít nhất là đối với Android thì có. Tôi đã mở một vấn đề với các giải thích bổ sung.

Thứ tự khai báo biểu tượng có quan trọng không?

Vâng, nó có! Nó có thể không ảnh hưởng đến Android nhưng nó có trên iOS theo thử nghiệm của tôi. Đây là hành vi không mong muốn và không có giấy tờ nên tôi đã mở một vấn đề khác .

Tôi có cần cordova-plugin-splashscreenkhông?

Có, điều này hoàn toàn bắt buộc nếu bạn muốn màn hình giật gân hoạt động. Tài liệu không rõ ràng ( vấn đề ) và chúng ta hãy nghĩ rằng plugin chỉ được yêu cầu để cung cấp API javascript cho màn hình giật gân.

Làm cách nào để thay đổi kích thước hình ảnh cho tất cả chiều rộng / chiều cao / mật độ một cách nhanh chóng

Có những công cụ giúp bạn làm điều đó. Địa chỉ tốt nhất đối với tôi là http://makeappicon.com/ nhưng nó yêu cầu cung cấp địa chỉ email.

Các giải pháp khả thi khác là:

Bạn có thể cho tôi một cấu hình ví dụ?

Đúng. Đây là thật của tôiconfig.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>

Một nguồn ví dụ tốt là bộ dụng cụ khởi động. Như phonegap-start hoặc Ionic starter


2
tôi đã xây dựng một tiện ích cli nhỏ (trong số nhiều tiện ích khác), xử lý biểu tượng ứng dụng, màn hình giật gân và tạo bản xem trước https://github.com/mmacmillan/cordova-imaging , tôi đề cập đến điều này bởi vì nó được thúc đẩy bởi tệp cấu hình được ghi chép đầy đủ về kích thước / thứ nguyên / vị trí và chứa các liên kết đến tài liệu dành riêng cho nền tảng; điều này có thể giúp bổ sung câu trả lời chi tiết bạn đã dành thời gian để cung cấp
Mike MacMillan

Tôi đã làm tất cả điều này, với Cordova 5.1, các tệp được sao chép trong .apk như bạn đã đề cập, nhưng máy tính bảng vẫn không hiển thị biểu tượng mới. Có ý kiến ​​gì không?
Gringo Suave

Điều cần làm là gỡ cài đặt phiên bản cũ của ứng dụng, sau đó cài đặt phiên bản mới. Sau đó, máy tính bảng nhận thấy một cái gì đó đã thay đổi. Vì vậy, tôi đã có thể nhận được biểu tượng mới.
Gringo Suave

1
Thật là một câu trả lời tuyệt vời! Tôi đã sử dụng đề xuất của bạn cordova build android --verboseđể xác định và giải quyết vấn đề của tôi. Cảm ơn!
Sarah

Nice câu trả lời Sebastien;) thumbs up
Alaeddine

32

Kể từ Cordova 3.5.0-0.2.6, <icon />phần tử trong config.xml hoạt động với những lưu ý sau:

  1. Các srcthuộc tính là một đường dẫn tương đối đến thư mục gốc của dự án của bạn. Trình theo dõi vấn đề về vấn đề này lý do tại sao thay đổi.

  2. Phần <icon src="..." />tử không có độ phân giải / dpi được ghi nhận là biểu tượng được tất cả các nền tảng sử dụng làm biểu tượng mặc định. Tuy nhiên, trên các bản dựng android, biểu tượng mặc định chỉ được sao chép vào thư mục có thể vẽ của android mà không có độ phân giải cụ thể được đặt. Điều này làm cho biểu tượng tùy chỉnh của bạn xuất hiện trong /res/drawablethư mục và biểu tượng mặc định của cordova với các độ phân giải cụ thể tồn tại trong các thư mục khác bên trong apk cuối cùng (tức là /res/drawable-ldpi). Bạn phải thêm một phần tử biểu tượng vào config.xmlcho mỗi độ phân giải trên nền tảng Android.

Ví dụ: nếu hình ảnh biểu tượng của bạn nằm trong đường dẫn www/res/img/icon.pngliên quan đến dự án gốc của bạn, thì dòng này config.xmllàm cho biểu tượng ứng dụng của bạn trong android hoạt động:

<!-- 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" />

Với cấu hình đó, bạn có thể có một biểu tượng hình ảnh duy nhất cho tất cả các độ phân giải ghi đè lên biểu tượng cordova mặc định và không có hoooks tùy chỉnh. Đơn giản chỉ cần xây dựng với cordova build androidsẽ làm được thủ thuật


Bạn có liên kết báo cáo lỗi cho vấn đề 2 không? Tôi vừa gặp phải vấn đề này trong một dự án mới và nó khiến tôi bối rối lúc đầu. Muốn theo dõi tiến độ để biết khi nào nó được sửa nếu có thể. Chúc mừng.
Mike

omg cuối cùng đã có nó để làm việc! Cảm ơn bạn đã density. Tôi đã thay đổi <icon gap:platform="android" gap:qualifier="ldpi" src="www/res/icon/android/icon-36-ldpi.png" />đến<icon gap:platform="android" density="ldpi" src="www/res/icon/android/icon-36-ldpi.png" />
Tha Leang

@Ronoaldo Periera your'e my savior !! thẻ <icon ..> cho mỗi mật độ! xuất sắc!!
Hittz

Biểu tượng mặc định src không hoạt động tốt cho Android nên thực sự nó bị bỏ qua! Kiểm tra câu trả lời của tôi ở đây: stackoverflow.com/a/31674547/82609
Sebastien Lorber

8

Nếu bạn muốn một cách dễ dàng sử dụng để thêm các biểu tượng tự động khi xây dựng tại địa phương ( cordova emulate ios, cordova run android, vv) có một cái nhìn tại ý chính sau:

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

Hy vọng rằng điều này sẽ bắt đầu hoạt động hiệu quả trong tương lai, đây là báo cáo lỗi liên quan về dự án Cordova:

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


Linus khi nó được giải thích trong có câu trả lời của tôi bây giờ nó hoạt động nhưng nó cũng dường như đã phá vỡ một số nội dung, kiểm tra stackoverflow.com/a/31674547/82609
Sebastien Lorber

4

Bạn phải tạo một tệp config.xml trong đó bạn sẽ đặt tệp biểu tượng

<?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>

Kiểm tra cái này: https://build.phonegap.com/docs/config-xml

có các biểu tượng dành riêng cho iOS


tệp cấu hình của tôi đã chứa tất cả các biểu tượng. nó được tạo theo mặc định khi tạo một dự án phonegap mới
Markus

2
Không hoạt động. Nó hoạt động với PG Build, nhưng Cordova 3.x cli không xem xét các biểu tượng được chỉ định trong config.xml (cũng không phải icon.png & screen.png trong root). Cũng đang tìm kiếm câu trả lời cho câu hỏi này.
lefnire

Yup config.xml chỉ dành cho PhoneGap Build! có ai biết cách làm điều này không ?!
Michael

Trên Cordova 3.5.0-0.2.6, hỗ trợ cho biểu tượng hoạt động, với một số lưu ý trên Android. Xem câu trả lời của tôi để biết chi tiết.
Ronoaldo Pereira

4

Vì hầu hết các câu trả lời ở đây đều nhắm mục tiêu đến iOS nên đây là một giải pháp để thay đổi biểu tượng trong Android.

Đối với android:

Thực hiện các thay đổi ở <vị trí dự án> \ platform \ android \ ant-build \ res chứ không phải <vị trí dự án> \ platform \ android \ res

Đối với một số người, việc thay đổi ở vị trí thứ hai có thể đã hiệu quả, nhưng nhận thấy việc sao chép Bản đồ điện thoại từ \ android \ res vào \ android \ ant-build \ res, tôi quyết định kiểm tra ở đó và tìm thấy một bộ thư mục có thể kéo riêng chứa mặc định biểu tượng phonegap.

Thay đổi những điều đó cuối cùng đã hiệu quả.

Vì tôi đang xây dựng và chạy cục bộ chứ không sử dụng Adobe PhoneGap Build nên việc thay đổi các biểu tượng trong <vị trí dự án> \ www \ res \ icon \ android cũng không hoạt động.


3

Tôi đang chạy phonegap 3.1.0-0.15.0, vì iOS7 đã thay đổi độ phân giải thành 120x120px, tôi vừa thêm một tệp có các kích thước đó vào dự án, sau đó thay đổi tệp info.plist.

  1. Thêm tệp 120x120 vào dự án, bằng cách nhấp chuột phải vào tệp dự án trong Xcode và chọn, "Thêm tệp vào" [Tên dự án của bạn] "...
  2. Đi tới tệp info.plist trong Xcode "Tài nguyên / [Tên dự án của bạn] -info.plist"
  3. Trong "Tệp biểu tượng (iOS 5) / Biểu tượng chính / Tệp biểu tượng", hãy thay đổi "Mục 2" thành bất kỳ tên tệp nào mà tệp của bạn có (tôi gọi là của tôi "icon-120.png mà tôi đã đặt trong thư mục Dự án cùng với tất cả các biểu tượng khác , mặc dù điều này không quan trọng)

Thông tin thêm có thể được tìm thấy ở đây: http://www.digifloor.com/missing-recommended-icon-file-error-ios-app-13

Để khắc phục màn hình giật gân trong iOS, tôi vừa dán các tệp mới có cùng kích thước và cùng tên tệp, ghi đè lên các tệp cũ. Chỉ cần nhớ chuyển đến Sản phẩm> Làm sạch trong thanh menu trong Xcode (phím tắt Shift + Command + K) và nó sẽ hoạt động tốt! :)


3

Trong cordova 3.3.1-0.1.2, hành vi mong đợi không hoạt động bình thường.

trong

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

nó nói rõ rằng bạn đang giả sử đặt chúng vào thư mục www chính của mình trong một thư mục có tên là res và các biểu tượng tuân theo một quy ước đặt tên cụ thể thay vì cách chỉ định config.xml có thể tùy chỉnh ban đầu (trong đó bạn trỏ đến tệp bạn chọn, cái nào đã / tốt hơn nhiều). Nó sẽ mất sau đó cho mỗi nền tảng và đặt chúng vào các nền tảng /? android? / res / drawable-? dpi / icon.png nhưng nó không có hành vi đúng như vậy tại thời điểm này ... lỗi.

vì vậy tôi đoán chúng ta phải tự đặt chúng ở đó cho mỗi nền tảng. tất nhiên nó sẽ cần phải xóa nó khỏi sao chép nó vào thư mục www. đối với tôi, tôi đã phải thay thế hoàn toàn nội dung trong thư mục www chính vì nó chỉ đơn giản là không hoạt động với hello world nếu không hack index.html chuyển hướng để tìm một thư mục ngẫu nhiên kỳ lạ nào đó ở đó. Đặt thư mục res bên cạnh www là hợp lý nhất nhưng đối với tôi, điều đó dường như là do một loạt các lựa chọn / sai sót thiết kế xếp tầng và khó hiểu này gây ra.


2

trong một số trường hợp, các đoạn mã bên trong của cordova không đặt các biểu tượng vào đúng thư mục, do đó bạn có thể thấy rô bốt f *** cordova thay vì biểu tượng của riêng bạn.

Sử dụng tập lệnh hook .;)

ba-hooks-your-wireovaphonegap-project-nhu cầu

Tạo một thư mục "after_platform_add" trong thư mục hook và đặt / thay đổi skript cuối cùng từ devgirl.

Đừng quên đặt quyền điều hành cho tập lệnh, trong linux "chmod 777 <script>"

chúc may mắn!


1

Tất cả những gì tôi đã làm là thêm các dòng bên dưới vào config.xml <icon src="www/img/appIcon.png" />

Và nó hoạt động hoàn toàn tốt


Thx người đàn ông. Tôi đã cố gắng đặt một biểu tượng trong res / icon.png (như trong các ví dụ tài liệu ...) và nó không bao giờ hoạt động trên iOS. Cuối cùng tôi đã từ bỏ thư mục "res" khó hiểu đó và đặt biểu tượng dưới "www" như bạn đề xuất và nó cũng hoạt động như một sự quyến rũ đối với tôi! Điều này hoạt động cho Cordova 6.0.0. nền tảng ios.
firepol

1

Chỉ cần thêm mã này vào tệp config.xml của bạn

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

ví dụ:

<icon src="icon.png">

Xin hãy nhớ rằng bạn cần sử dụng phần mở rộng .png


cố gắng sử dụng hình ảnh png
Jobincs

0

Tôi cũng đang cố gắng hiểu cách tất cả những thứ này kết nối với nhau.

Đây là những gì tôi đã tìm thấy cho đến nay trong XCode, nhưng tôi hy vọng sẽ được sửa chữa hoặc khẳng định nếu giả định của tôi là đúng. Tôi đã không tìm thấy một bản dựng ngoại hộp cho xcode từ cordova áp dụng chính xác các biểu tượng. Giống như bạn, tôi đã cập nhật tất cả các biểu tượng được liệt kê trong config.xml nhưng không có xúc xắc.

Vì thế...

Đầu tiên, tôi thường cập nhật config.xml trong thư mục gốc của dự án với cái trong thư mục "www" của tôi (điều này tôi không chắc chắn rằng www / config.xml có bất kỳ ưu tiên nào hay thậm chí nó được áp dụng hay không)

Thứ hai, tôi cập nhật "Các giai đoạn xây dựng" của dự án. Mở rộng "Copy Bundle Resources", bạn đã nhận thấy tất cả các hình ảnh trong "Resources / icon", "Resources / splash". Bạn có thể:

  • xóa tất cả những thứ này để tránh ghi đè lên hình ảnh của bạn HOẶC
  • cập nhật tất cả những hình ảnh này với của riêng bạn (đổi tên thành tên hình ảnh được liệt kê)

Khi tôi đang giải quyết vấn đề này, bạn có thể chỉ cập nhật hình ảnh từ tab "Tóm tắt".

Kéo và thả hình ảnh của bạn từ các thư mục res vào hình ảnh thích hợp trong tab "Tóm tắt". (res / icon / ios -> App icon và res / screen / ios -> Launch Images). Tôi chỉ làm điều đó cho iPhone vì ứng dụng của tôi chỉ dành cho iPhone. Kiểm tra "kết xuất trước" nếu bạn không muốn độ bóng xuất hiện.

Sau đó, cập nhật "icon.png" được tham chiếu trong tệp plist của dự án: PROJECT_NAME-Info.plist hoặc trong tab "Thông tin" khi xem mục tiêu dự án. Đổi tên nó thành "icon-57.png" (hiện nằm trong thư mục gốc dự án của bạn, điều này đã được tự động thêm vào thư mục gốc khi bạn thực hiện thao tác kéo và thả.

Xây dựng và bạn nên một biểu tượng ứng dụng được cập nhật.


Tôi đã xây dựng dự án với Cordova 3.0.3, nhưng tôi tưởng tượng nó cũng giống với các bản dựng phonegap.
Sam Tsai,

0

Chỉ cần lưu ý rằng tôi vừa thay đổi config.xml của mình để trông giống như ví dụ của Sebastian.

Một cái gì đó cũng hữu ích trong việc gỡ lỗi tất cả những điều này, đặc biệt nếu bạn không thực hiện các bản dựng cục bộ ... là tải xuống các tệp XAP / IPA / APK như được tạo từ đám mây PhoneGap và tạo các thư mục cho mỗi tệp. Đổi tên từng tệp bằng phần mở rộng .ZIP và trích xuất nội dung của mỗi tệp vào các thư mục tương ứng. Vì vậy, về cơ bản, bây giờ bạn có thể thấy những gì trong gói hàng sẽ được chuyển đến điện thoại.

Làm điều này, tôi có thể thấy rằng đối với nền tảng Điện thoại Microsoft, nó phần lớn bỏ qua mọi nỗ lực của tôi trong việc thay thế biểu tượng hoặc màn hình giật gân. Nếu sau đó bạn thay thế ApplicationIcon.png và SplashScreenImage.jpg, sau đó nén lại tập hợp thư mục và đổi tên lại thành tệp .XAP, bạn có thể triển khai nó vào điện thoại của mình và nó sẽ hoạt động hoàn hảo. Bằng cách nào đó, có một cách chỉ để bản dựng PhoneGap biến icon.png và icon.jpg của bạn thành hai tệp đó. Có lẽ gợi ý của Masood là một khả năng ở đây và sử dụng một tập lệnh hook.

Làm tương tự đối với tệp .IPA (iOS) dẫn đến một số tệp như icon-something.png ở cấp chính trên www. Tất cả đều trống.

Làm tương tự đối với tệp .APK (Android) dẫn đến một tập hợp các thư mục res / drawable-something và dường như có icon.png của tôi trong mỗi thư mục. Đó là thành công gần nhất mà tôi có thể khẳng định vào lúc này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.