2012-06-30 18 views
6

Tôi có những gì tôi nghĩ là một thiết lập khá chuẩn của một ứng dụng web hiện có và muốn được tư vấn về cách tốt nhất để thích ứng với việc tạo phiên bản gốc qua PhoneGap, theo cách chúng tôi có thể tiếp tục phát triển ứng dụng web và cập nhật các phiên bản do điện thoại tạo ra từ phiên bản này bằng cách làm lại tối thiểu.các vấn đề về đường dẫn chuyển ứng dụng web sang phonegap

Tôi là người mới sử dụng PhoneGap. Tôi đã tìm kiếm xung quanh và đã thử các đề xuất khác nhau từ StackOverflow v.v. không có may mắn, ít nhất là để thiết lập của tôi.

Ứng dụng này được phát triển trong GWT và bao gồm:

tài nguyên tĩnh trong một thư mục chia sẻ cho tất cả các ứng dụng

/static/với hình ảnh, phông chữ, css. Css xác định một số họ phông chữ, tham chiếu các tệp phông chữ trong/phông chữ

Chúng tôi đề cập đến các tài nguyên tĩnh này từ tệp html và mã JavaScript sử dụng đường dẫn tuyệt đối .

tài nguyên tĩnh trong một số thư mục con (bởi các module GWT FYI)

Chẳng hạn như/LoginGadget, sẽ có GWT tạo ra html, javascript và đôi khi các thư mục con với css và css-hình ảnh.

GWT-RPC

Đây là những cơ bản servlets nơi GWT sẽ chăm sóc của serialization vv, và được truy cập từ mã khách hàng của chúng tôi qua XHRs theo bao

PhoneGap Build

Tôi đã bắt đầu nhìn vào tạo một ứng dụng đóng gói bằng PhoneGap và chạy vào một số vấn đề mà tôi cần lời khuyên (ví dụ Android).

Tôi đã tạo/asset/www và đặt tệp index.html vào đó và bắt đầu. tôi sao chép một phiên bản của chúng tôi/thư mục/tĩnh và thư mục/LoginGadget của chúng tôi dưới rằng "gốc" để xem, và bắt đầu sử dụng nó

super.loadUrl("file:///android_asset/www/index.html"); 

mà hoạt động.

Trong tất cả các tệp html và Javascript được tạo GWT của chúng tôi, chúng tôi có tham chiếu đến tài nguyên tĩnh sử dụng cả tuyệt đối (ví dụ: "/ static/....") và đường dẫn tương đối (ví dụ: từ LoginGadget Javascript, nó có thể tham chiếu "css/some.css ").

Đường dẫn tương đối hoạt động, khi chúng cư trú "trong" thư mục chứa html/js tham chiếu đến chúng.

Vấn đề 1

Tuy nhiên, tài liệu tham khảo để đường dẫn tuyệt đối thất bại, mặc dù PhoneGap bắt đầu bằng cách nói:

DroidGap: url=file:///android_asset/www/index.html baseUrl=file:///android_asset/www/ 

tôi mong đợi một tham chiếu đến "/static/images/file.png" từ nói chỉ mục. html được nối vào "baseUrl" để cung cấp tệp: ///android_asset/www/static/images/file.png và do đó hoạt động, vì đó là nơi tệp nằm.

Tôi đã phải sửa đổi index.html để sử dụng "static/image/file.png" để nó hoạt động. Nhưng tôi phải biên dịch lại tất cả ứng dụng GWT với cấu hình khác để sửa đổi tất cả các tham chiếu đến tài nguyên và tham chiếu từ các tệp khác trong thư mục con trở lại "/ static /" sẽ không hoạt động nếu được sửa đổi thành "tĩnh/".

Làm cách nào tôi có thể nhận được các tham chiếu đường dẫn tuyệt đối tới "bản đồ" tới/asset/www hoặc tương tự? (Xem dưới đây, tôi đã xem xét sử dụng "cơ sở" tag ....)

Vấn đề 2

Các RPC GWT thực hiện yêu cầu XHR đến máy chủ html/js được phục vụ từ. Điều này hoạt động tuyệt vời vì ứng dụng không có tên máy chủ lưu trữ được mã hóa cứng và thực tế được triển khai trên nhiều appengine appids/miền khác nhau để kiểm tra, v.v.

Ở đây các tệp html/js được "phân phối" từ file: /// do đó tôi cần phải xác định máy chủ bằng cách nào đó.

Tôi đã cố gắng chỉ định thẻ "cơ sở" như được ghi lại, nhưng sau đó bất kỳ tham chiếu nào tôi có trong html/js của mình đến tài nguyên không chỉ định "tệp: //" dường như được thực hiện với máy chủ được chỉ định trong "base" ..... do đó tôi không tải các tài nguyên cục bộ của mình nữa và về cơ bản tôi có một ứng dụng web được phục vụ từ máy chủ của tôi.

Muốn

Những gì tôi muốn làm, là để có thể lấy (khá lớn) biên soạn và thử nghiệm ứng dụng từ chiến tranh của tôi wab ứng dụng của (/ tĩnh và tất cả các thư mục/GWT-đun của tôi) bị ảnh hưởng và sao chép chúng vào/asset/www trên ứng dụng PhoneGap của tôi và sau đó thêm một số đĩa nồi hơi hoặc mã khởi động và chạy như vậy.

Âm thanh như một yêu cầu lớn, nhưng tôi nghĩ rằng nếu tôi có thể xác định đúng hai điều: con đường

  • tập tin để sử dụng như là "gốc" cho đường dẫn tuyệt đối cho các yêu cầu tài nguyên mà không chỉ định một http/giao thức https (hoặc các giao thức khác ..... mà tôi đã thấy được xử lý trong DroidGap.java)

  • máy chủ (giao thức, tên máy, cổng) để sử dụng cho bất kỳ XHR yêu cầu

Sau đó mọi thứ sẽ xuất hiện trong quá trình giặt!

Tôi nghĩ đây sẽ là thiết lập "chuẩn" hàng ngày và đã được đề cập đến. Có lẽ nó là và tôi chỉ thiếu một cái gì đó.

Nhận xét? đề xuất?

Cảm ơn trước vì đã được trợ giúp.

+0

xem bằng phông chữ hải quan. Không phải tất cả trình duyệt đều hỗ trợ tốt. Ví dụ. WP7 thì không. – Loda

+0

Tôi thường xuyên phát triển loại hình này. Bạn không chắc chắn lý do tại sao bạn sẽ sử dụng đường dẫn tuyệt đối. Chỉ sử dụng đường dẫn tương đối như điểm của phonegap để tạo cho nhiều thiết bị. –

Trả lời

0

Chúng tôi giải quyết những vấn đề này với hai hành động riêng biệt:

1) Tôi đã viết một mục tiêu kiến ​​rằng một phần của bản dựng của chúng tôi có ứng dụng web và thay thế các đường dẫn trong tất cả các tham chiếu url nội bộ mà nó tìm thấy, giúp chúng phù hợp với những gì cần thiết để chúng hoạt động trong ứng dụng. Nó vẫn có vẻ là một lỗi lớn trong phonegap với tôi. Có thể nó đã được sửa trong các phiên bản mới hơn?

2) Chúng tôi đã phân loại lớp dịch vụ RPC và sửa đổi nó để có một thành viên tĩnh là điểm cuối dịch vụ. Khi khởi động ứng dụng phonegap của chúng tôi, chúng tôi sửa đổi điểm kết thúc để trỏ đến máy chủ và ưu tiên mong muốn .... tất cả các RPC GWT của chúng tôi đều trỏ đến đúng vị trí.

3

Bạn có biết về mgwt không? http://www.m-gwt.com

Khung di động cho GWT được xây dựng bởi một trong các thành viên Ủy ban điều hành GWT và nó cũng tích hợp Phonegap cho các ứng dụng GWT.

Có rất nhiều tài liệu trong các dự án và một nhóm người dùng rất thân thiện.

Hãy để tôi giải quyết vấn đề của mình với một chút chi tiết hơn:

Problem1:

Nếu bạn đang sử dụng đường dẫn tuyệt đối bạn sẽ nhận được rằng hành vi không phù hợp với PhoneGap, kể từ khi trình duyệt được xây dựng những url cục bộ và tham chiếu đến/có nghĩa là mục nhập gốc trên điện thoại. Sử dụng URL tuyệt đối là một ý tưởng tồi trong hầu hết thời gian và tôi khuyên bạn nên thay đổi điều đó trong ứng dụng của bạn (như bạn đã làm).

Problem2:

Để sử dụng GWT RPC với PhoneGap đọc bài viết trên blog này mà tôi thực hiện để giải quyết các vấn đề: http://blog.daniel-kurka.de/2012/04/gwt-rpc-with-phonegap-revisited.html

+0

Tôi đã xem nhanh mgwt/gwt-phonegap. Nếu tôi nhận được những thứ làm việc trong điện thoại, chúng tôi cũng có thể di chuyển nhiều hơn phát triển ứng dụng web của chúng tôi với GWT để sử dụng chúng. Tuy nhiên, đầu ra JS được biên dịch của họ sẽ tương tự như tôi nghĩ với sản lượng JST đã biên dịch hiện tại của mình ..... và vì vậy tôi nghĩ rằng tôi vẫn sẽ có cùng một vấn đề mà tôi mô tả trong câu hỏi của mình? –

+0

Xin chào Daniel, cảm ơn vì điều đó. Tôi đã đi xuống con đường của việc sử dụng SetServiceEndPoint ..... nhưng bỏ qua công việc tạo ra một máy phát điện mới cho GWT.create(), nhưng tương tự như tiếp cận. Tôi đã sửa đổi bản dựng của mình để remapp các URL tuyệt đối cho đường dẫn và hoạt động cho Android, nhưng đối với iOS đường dẫn tuyệt đối dường như không thể được xác định tại thời gian biên dịch vì nó có ID thiết bị ở giữa đường dẫn! :-( –

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