2012-01-24 27 views
5

Vấn đề của tôi liên quan đến phát triển PhoneGap và Android bằng cách sử dụng plugin Applaud của Eclipse. Tôi đã tải xuống và cài đặt plugin Applaud thành công. Tôi có thể tạo một dự án mới bằng cách sử dụng thuật sĩ Applaud (thông qua biểu tượng thanh công cụ Eclipse), và bản demo chạy trên thiết bị tốt. Tuy nhiên, khi tôi ghi đè tệp html hiện tại & js (chỉ main.js, chứ không phải phonegap.js), sau đó xây dựng nó cho thiết bị, chức năng thiết bị không hoạt động tốt (nút bấm/cập nhật ui/etc), nhưng các lệnh PhoneGap chẳng hạn như (device.version/device.platform/etc) dường như không hoạt động.Applaud & Phonegap trên Android

Tôi đã thử gắn kết điều này vào sự kiện onDeviceReady cũng như đảm bảo thư viện .jar được bao gồm nhưng tôi vẫn gặp sự cố tương tự. Vì vậy, tôi đoán câu hỏi của tôi là; khi tạo giải pháp PhoneGap bằng Applaud, Eclipse có cần biên dịch và thư viện, chẳng hạn như PhoneGap không? và nếu có, làm thế nào mà ai đó có thể làm những việc như vậy?

Lỗi Log:

01-24 14:59:44.567: W/KeyCharacterMap(5453): No keyboard for id 131074 

01-24 14:59:44.567: W/KeyCharacterMap(5453): Using default keymap: /system/usr/keychars/qwerty.kcm.bin 

01-24 14:59:59.917: I/Web Console(5453): Failed to run constructor: TypeError: object is not a function at file:///android_asset/www/resources/js/phonegap-1.3.0.js:210 

01-24 14:59:59.927: I/Web Console(5453): Failed to run constructor: TypeError: Cannot read property 'capture' of undefined at file:///android_asset/www/resources/js/phonegap-1.3.0.js:210 

01-24 14:59:59.927: I/Database(5453): sqlite returned: error code = 14, msg = cannot open file at source line 25467 

01-24 15:00:00.057: D/dalvikvm(5453): GC_CONCURRENT freed 1185K, 55% free 3188K/6983K, external 2630K/2814K, paused 2ms+3ms 
+0

bạn có thêm plugin vào tệp plugins.xml không? – ghostCoder

+0

là sự kiện onDeviceReady bị sa thải? – ghostCoder

+0

Vâng, cũng là tệp plugin nằm trong thư mục gốc/res/plugins.xml .. Tôi đã đăng nhập thiết bị trong khi đang chạy và dường như có được kết quả sau: I/Web Console (4894): Không chạy được hàm tạo: TypeError : đối tượng không phải là hàm tại tệp: ///android_asset/www/resources/js/phonegap-1.3.0.js: 210I/Web Console (5109): Không thể chạy hàm tạo: LoạiError: Không thể đọc thuộc tính 'chụp' không xác định tại tệp: ///android_asset/www/resources/js/phonegap-1.3.0.js: 210 I/Cơ sở dữ liệu (5109): sqlite trả về: mã lỗi = 14, msg = không thể mở tệp tại dòng nguồn 25467 – JohnHodkinson

Trả lời

3

Vì vậy, tôi đã quay lại và bằng cách nào đó đã khắc phục sự cố tôi gặp phải (có thể là do may mắn). Khi tôi bắt đầu dự án này, tôi nghĩ cách tiếp cận tốt nhất sẽ làm cho ứng dụng này trở thành mô-đun càng tốt; mỗi chức năng (yêu cầu web, đọc/ghi tệp, v.v.) được tách riêng với nhau. Vì vậy, tôi đã tạo nhiều tệp js riêng biệt, mỗi tệp được gắn thẻ với tên thích hợp (mạng, thiết bị, ngôn ngữ, v.v.) và sau đó đưa chúng vào trang index.html của tôi, sau đó được chạy bằng điện thoại.

Trong một số những tập tin này, tôi đã lấy phương pháp sau đây:

var Device = { 
    // Returns the Device Name as a string. 
    Name: function() { 
     return window.device.name; 
    } 
}; 

Kết quả là, tôi sau đó có thể truy cập chức năng này bằng cách sử dụng dấu chấm (mà tôi thích). Tuy nhiên bằng cách làm như vậy, kết quả là nhiều tập tin dựa vào một tập tin khác, làm cho nó khó khăn để theo dõi vấn đề của tôi. Sau khi chi tiêu một số thời gian bình luận và un-commenting chức năng, Có vẻ như bằng cách sử dụng một sự kết hợp của phương pháp tiếp cận trên (dot nhà điều hành) và sự lựa chọn xấu của tôi về quy ước đặt tên. Việc thực hiện Device.Name() ở trên dường như (không hoàn toàn chắc chắn về lý do tại sao/như thế nào) xung đột với các thư viện PhoneGap, do đó dẫn đến lỗi js trên thiết bị.

Sau khi thay đổi tên trên từ "Thiết bị" thành "Thiết bị cầm tay", sự cố của tôi đã biến mất. Một giải pháp đơn giản và có thể hiển nhiên cho một buổi chiều đau đớn.

+0

Nghe tôi vừa gặp sự cố tương tự. Khi bạn nhập một dự án hoặc tạo một dự án mới, thẻ script để tải jg điện thoại sẽ được kết nối. Chỉ cần trong trường hợp bạn không cần nó. Bạn chỉ cần bỏ ghi chú dòng đó. –

+0

phonegap.js định nghĩa một đối tượng Thiết bị với các thuộc tính cụ thể cho thiết bị - nó sẽ xung đột với đối tượng của bạn ở trên và có thể khiến nó không hoạt động –

1

Tôi sẽ trả lời câu hỏi của bạn, nhưng tôi không nghĩ rằng đó là vấn đề của bạn:

hay không wizard hoan nghênh chỉ sử dụng phonegap.jar hoặc tái thiết của nó các thành phần phụ thuộc vào cách bạn sử dụng trình thủ thuật tạo dự án.

Nếu bạn sử dụng "Phonegap tích hợp" hoặc trỏ vào bản phát hành chính thức đã tải xuống ("Nhập đường dẫn đến PhoneGap đã cài đặt"), nó sẽ chỉ trỏ đến phonegap.jar từ bản phát hành đó. Nếu bạn trỏ vào một thư mục có phiên bản PhoneGap github chưa được giải nén, phonegap.jar sẽ không được sử dụng và các nguồn Java PhoneGap sẽ được tích hợp vào dự án của bạn. Điều này giúp dễ dàng gỡ lỗi cài đặt PhoneGap.

Về vấn đề của bạn, có thể bạn đã gặp sự cố với tệp index.html của mình, như lỗi chính tả của thẻ điện thoại {...}. Js. Như ghostCoder nói trong các bình luận, bạn có thể cần phải chia sẻ mã của bạn để được trợ giúp về nó.

Các vấn đề liên quan