Cách chạy PHP trong studio Android

Một trong những lợi thế chính của PeachPie so với người tiền nhiệm của nó, Phalanger, là chúng tôi cũng có thể nhắm mục tiêu. NET Core ngoài đầy đủ. Nền tảng NET. Điều này cho phép các ứng dụng PHP do PeachPie biên dịch chạy trên tất cả các nền tảng. NET Core, điều này tạo ra một số khả năng khá thú vị

Ý tưởng

Ngày nay, chúng ta có thể dễ dàng xây dựng một. NET cho điện thoại di động, e. g. trên Android. Và chạy đồ họa 3D bằng OpenGL theo chúng cũng không có vấn đề gì. Vậy tại sao không tiến thêm một bước nữa với một công nghệ hoàn toàn không được thiết kế để chạy trên môi trường di động?

Kế hoạch của chúng tôi là tạo một ứng dụng đơn giản với đồ họa OpenGL, được viết bằng PHP, sử dụng Trình biên dịch Xamarin và PeachPie, đồng thời chạy ứng dụng đó trên thiết bị hỗ trợ Android và kết quả cuối cùng sẽ giống như thế này

Để thực hiện điều này, chúng tôi cần khá nhiều công nghệ hợp tác với nhau, vì vậy hãy bắt đầu. Xương sống của nỗ lực của chúng tôi là PeachPie Compiler

PeachPie là trình biên dịch và thời gian chạy PHP thế hệ thứ hai dưới. NET &. NET Core, có khả năng biến PHP thành mã byte CIL có thể tương tác cả hai chiều với bất kỳ. ngôn ngữ mạng. Bên cạnh các lợi ích về hiệu suất, bảo mật và khả năng tương tác thường được đề cập, công nghệ này cũng cung cấp một số khả năng hoàn toàn kỳ lạ mà các nhà phát triển PHP không có được. g. chạy ứng dụng của họ trên điện thoại

Chỉnh sửa. Nó đã trở nên dễ dàng hơn đáng kể để đạt được điều này với việc thực hiện. NET generic. Kiểm tra bài đăng trên blog này

Yêu cầu

Để hoàn thành mục tiêu chạy PHP trên Android, các công cụ chúng tôi cần và khuyên dùng là

  • Visual Studio 2017 đã cài đặt các công cụ Xamarin – phiên bản cộng đồng được sử dụng miễn phí và có sẵn tại
    http. //Visual Studio. Microsoft. com/cs/tải xuống
  • Visual Studio Code [hoặc bất kỳ trình chỉnh sửa mã nào khác mà bạn thích] – có sẵn miễn phí tại
    http. //mã số. Visual Studio. com
  • NET core SDK [ít nhất là phiên bản 2. 0]
    http. //www. Microsoft. com/net/tải xuống

Cài đặt

Để làm cho toàn bộ công nghệ hoạt động, chúng ta cần cài đặt một số công cụ bổ sung cần thiết để biên dịch mã PHP thành. NET và chạy một. NET Core với OpenGL trên thiết bị Android. Những công cụ này là

PeachPie Compiler – Trình biên dịch PHP cho. NET
PeachPie là trình biên dịch và thời gian chạy PHP dựa trên Roslyn của chúng tôi dành cho. NET Core cho phép chúng tôi chuyển mã PHP sang phiên bản hiện đại. thế giới mạng. Bạn có thể tìm hiểu cách thiết lập dự án PHP ban đầu tại đây

Trong trường hợp của chúng tôi, chúng tôi sẽ tạo dự án thư viện thay vì web hoặc ứng dụng bảng điều khiển. Điều đó có thể được thực hiện bằng cách chạy hai lệnh sau

[bash]
dotnet new -i Peachpie.Templates::*
dotnet new classlib -lang PHP
[/bash]

Cái đầu tiên sẽ cài đặt các mẫu dự án PeachPie trên máy tính của bạn bằng cách sử dụng. NET Core SDK. Lệnh thứ hai sẽ tạo một dự án mẫu, dự án này sẽ tạo tệp dự án

[bash]
dotnet add reference ../<PHPLibName>/<PHPLibName>.csproj
[/bash]
1 cho bạn, vì vậy bạn không phải tạo thủ công

[bash]
dotnet add reference ../<PHPLibName>/<PHPLibName>.csproj
[/bash]
2 [chạy tự động trên mọi bản dựng] sau đó sẽ cài đặt tất cả các gói cần thiết – cả hai. NET và PeachPie

UrhoSharp – công cụ trò chơi 3D [hỗ trợ OpenGL]

UrhoSharp là một công cụ trò chơi 3D đa nền tảng cho Xamarin và. NET, có khá nhiều thứ bạn cần để phát triển trò chơi di động, bao gồm cả hỗ trợ OpenGL và Direct3D. Chúng tôi sẽ sử dụng nó để đơn giản hóa làm việc với đồ họa 3D. UrhoSharp được phân phối dưới dạng gói NuGet, vì vậy việc cài đặt nó không thể dễ dàng hơn. Trong VS, đi tới Công cụ/Tiện ích mở rộng và Cập nhật và tìm kiếm “Mẫu UrhoSharp” trực tuyến. Cài đặt chúng và bạn sẽ tìm thấy tùy chọn tạo dự án UrhoSharp cho Android trong hộp thoại “Dự án mới”. Tạo dự án theo khuôn mẫu này và NuGet Restore sẽ đảm nhận phần còn lại của quá trình cài đặt khi xây dựng dự án mới cho bạn

CHỈNH SỬA. Kể từ Visual Studio 2019, “Mẫu UrhoSharp” không khả dụng. Tuy nhiên, bạn có thể chọn mẫu của chúng tôi tại github. com/iolevel/peachpie-samples/urho-sample

Bắt đầu với Xamarin

Có một hướng dẫn hay về cách bắt đầu nhanh với Xamarin có sẵn từ Microsoft dưới liên kết này. Tuy nhiên, có một điểm tôi cảm thấy hướng dẫn này không chi tiết. Thiết lập trình giả lập

Trình giả lập – Sự cố máy ảo
Để chạy và test ứng dụng Android trên máy tính windows chúng ta cần giả lập môi trường android. Nó được cài đặt trong SDK Android trong Visual Studio, theo hướng dẫn của Microsoft. Trình giả lập Android sử dụng máy ảo HAXM của Intel. Để sử dụng được trên hệ điều hành Windows chúng ta phải vô hiệu hóa hết các trình quản lý máy ảo của Microsoft. Những gì bạn có thể đọc trong hướng dẫn chính thức là tắt tất cả các tính năng của Hyper-V trong hộp thoại “Bật và Tắt các tính năng của Windows”. Tuy nhiên, ngay cả sau khi làm điều đó và đảm bảo rằng mọi thứ khác đều ổn, tôi vẫn không thể chạy trình giả lập. Lý do là một trình quản lý máy ảo Windows khác - “Windows Hypervisor Platform”, cũng cần phải tắt để chạy HAXM mà không gặp sự cố

Sau khi tắt cả hai và cài đặt lại trình giả lập từ trình quản lý SDK Android trong VS2017, trình giả lập sẽ có sẵn để chạy. Bên cạnh trình giả lập, bạn cũng cần cài đặt Intel HAXM và Google USB Debugging Tools từ Tools/Android SDK Manager

Việc kiểm tra Trình tăng tốc giả lập Intel x86 [HAXM] chỉ tải xuống trình cài đặt, nhưng bạn cần chạy trình cài đặt đã tải xuống theo cách thủ công sau đó, nếu hệ thống của bạn chưa được cài đặt. Bạn có thể tìm thấy hướng dẫn cụ thể hơn về điều này trong hướng dẫn của intel tại đây

Sau đó, bạn có thể tạo và quản lý trình giả lập của mình trong Công cụ/Android/Trình quản lý thiết bị Android

Gỡ lỗi và triển khai trên thiết bị Android

Về cơ bản, có hai tùy chọn để triển khai các ứng dụng Xamarin trên thiết bị Android của bạn. Cái đầu tiên là Xamarin Live Player. Đây là một công cụ khá mạnh cho phép bắt đầu gỡ lỗi nhanh ngay trên thiết bị. Tuy nhiên, nó có một số hạn chế về chức năng nào có thể truy cập được, điều này sẽ hạn chế chúng tôi trong khu vực đồ họa 3G. Đó là lý do tại sao tôi chọn sử dụng phương pháp thứ hai. để gỡ lỗi trực tiếp trên thiết bị

Để thực hiện việc này, bạn cần kết nối thiết bị của mình với máy tính qua cáp USB và chọn tùy chọn gỡ lỗi USB trong cài đặt điện thoại Android của bạn. Sau đó, bạn có thể xây dựng và triển khai mã của mình trên thiết bị Android trực tiếp từ Visual Studio. Bạn có thể đọc thêm về cách thiết lập thiết bị của mình để phát triển trên các trang web của Microsoft

Nhắm mục tiêu và cấu trúc dự án

Trong Xamarin, vẫn cần phải có một dự án nhắm mục tiêu vào nền tảng Android cụ thể [mặc dù như được quảng cáo bởi Xamarin, hầu như tất cả mã có thể được chia sẻ chung. NET tiêu chuẩn dự án]. Vì hiện tại chúng tôi không thể nhắm mục tiêu điều này trực tiếp từ một dự án PHP, chúng tôi cần các dự án riêng biệt. Nó cũng hữu ích để tách mã PHP và C#
Chúng ta có thể làm theo cùng một thiết kế như được thực hiện bởi giải pháp mẫu Xamarin Forms. Chúng tôi có dự án nhỏ nhắm mục tiêu nền tảng Android cụ thể được sử dụng để khởi động ứng dụng của chúng tôi và có thể chứa một số mã API cấp thấp, nếu cần, được viết bằng C#

Và sau đó chúng tôi có dự án PHP thực tế, cốt lõi của giải pháp của chúng tôi. Về cơ bản, chúng tôi thay thế dự án thư viện C# được chia sẻ bằng dự án thư viện PHP mới mà chúng tôi đã tạo trước đó. Bằng cách này, tất cả logic có thể được viết bằng PHP, chỉ sử dụng dự án Android để có thể triển khai trên thiết bị

Chúng tôi có thể thêm tham chiếu đến dự án này trực tiếp trong VS hoặc bằng cách chạy lệnh sau từ thư mục dự án UrhoSharp của chúng tôi

[bash]
dotnet add reference ../<PHPLibName>/<PHPLibName>.csproj
[/bash]

Chúng tôi cũng đã tạo một dự án thứ ba, chứa một số công cụ tiện ích C# tĩnh, được chia sẻ và có vẻ như đây là một thiết kế tốt hơn để tách chúng ra khỏi dự án Android cụ thể. Chúng chủ yếu là các phương thức để khởi tạo các lớp chung. Thông tin thêm về điều này có thể được đọc trong phần tiếp theo

Một lần nữa, chúng ta có thể thêm một tham chiếu trong VS hoặc từ thư mục dự án thư viện PHP, giả sử cả hai dự án đều nằm dưới cùng một gốc, hãy chạy lệnh

[bash]
dotnet add reference ../<PHPUtilityLibName>/<PHPUtilityLibName>.csproj
[/bash]

Sau đó, cấu trúc dự án của chúng tôi đã sẵn sàng và chuẩn bị được xây dựng. Tất cả các bộ phận chúng tôi sử dụng sẽ được xây dựng khi xây dựng dự án UrhoSharp chính hoặc toàn bộ giải pháp

thuốc gốc

PHP hiện không hỗ trợ các lớp chung, vì vậy cú pháp của nó cũng không. Tuy nhiên, rất nhiều thư viện C# phổ biến, bao gồm cả UrhoSharp mà chúng tôi đang sử dụng để trao quyền cho OpenGL, sử dụng rộng rãi các generic. Vì vậy, vì lớp chung, khi được cung cấp một loại mẫu, được biên dịch thành một đối tượng CIL thông thường, sau đó chúng ta có thể sử dụng nó từ mã PHP của mình. Sau đó, vấn đề duy nhất là khai báo và khởi tạo nó

Cách giải quyết vấn đề này là sử dụng một loại phương thức xuất xưởng trong C#, được gọi từ PHP. Chúng tôi tạo các phương thức xuất xưởng này trong lớp tiện ích C# mà chúng tôi tham khảo từ thư viện PHP. Sau đó, chúng ta có thể gọi các phương thức này để xử lý việc khởi tạo các loại Chung cho chúng ta. Những cái chúng được tạo, chúng ta có thể sử dụng chúng như bất kỳ đối tượng nào khác trong mã PHP. Đây là một ví dụ về một phương pháp như vậy

[csharp]
public static class UtilityFunctions
{
  public static Sphere CreateSphereComponent[Node node]
  {
    return node.CreateComponent<Sphere>[];
  }
}
[/csharp]

Phiên bản tương lai của PeachPie Compiler sẽ cung cấp một cú pháp mở rộng [tương tự như ngôn ngữ Hack] để làm việc với các lớp chung. Hãy theo dõi thông báo về điều này và làm theo tài liệu của chúng tôi

Chỉnh sửa. . NET generic đã được triển khai trong

[bash]
dotnet add reference ../<PHPLibName>/<PHPLibName>.csproj
[/bash]
3. Kiểm tra bài đăng trên blog này

Thời gian để viết mã

Vì vậy, cuối cùng chúng tôi đã sẵn sàng để viết một số mã thực sự làm điều gì đó [hoặc, thành thật mà nói, "viết lại" sẽ chính xác hơn]. Chúng tôi lấy ứng dụng UrhoSharp mẫu và viết lại logic vào PHP

Chúng ta bắt đầu bằng cách tạo lớp Ứng dụng với các trường công khai cần thiết [có một vài trường hơn trong ứng dụng C# ban đầu, do sự hợp tác của hai phần ứng dụng] và một hàm tạo được gọi ngầm.

[php]
class App
{
	public $helloText;
	public $scene;

	public $earthNode;
	public $rootNode;
	public $cloudsNode;
	public $cameraNode;
	public $lightNode;

	public function __construct[string $text] {
    		$this->myText = $text;
	}
}
[/php]

Sau đó, chúng tôi tạo phương thức

[bash]
dotnet add reference ../<PHPLibName>/<PHPLibName>.csproj
[/bash]
4 bên trong lớp Ứng dụng của chúng tôi, phương thức này sẽ khởi tạo cảnh UrhoSharp. Nó tạo văn bản
[bash]
dotnet add reference ../<PHPLibName>/<PHPLibName>.csproj
[/bash]
5 ở nền trước của cảnh, chính cảnh đó và đối tượng Octree được sử dụng làm cơ sở của cảnh UrhoSharp. Chúng tôi sử dụng hàm tĩnh
[bash]
dotnet add reference ../<PHPLibName>/<PHPLibName>.csproj
[/bash]
6 ở đây, hàm này gọi hàm chung
[bash]
dotnet add reference ../<PHPLibName>/<PHPLibName>.csproj
[/bash]
7 trên thể hiện của đối tượng cảnh

Sau khi tạo Scene và Octree, chúng ta cũng tạo nút đầu tiên của cảnh,

[bash]
dotnet add reference ../<PHPLibName>/<PHPLibName>.csproj
[/bash]
8. Chúng ta có thể thấy cách chúng ta gọi các phương thức tiêu chuẩn từ. NET trên đối tượng
[bash]
dotnet add reference ../<PHPLibName>/<PHPLibName>.csproj
[/bash]
9 đã được khởi tạo

[php]
public function Start[]
{
    	// UI text
    	$this->helloText = new GuiText[];
    	$this->helloText->Value = "Yaay, hello from php";
    	$this->helloText->HorizontalAlignment = GuiHorizontalAlignment::Center;
    	$this->helloText->VerticalAlignment = GuiVerticalAlignment::Top;

    	$this->scene = new Scene[];
    	UtilityFunctions::CreateOctree[$this->scene];

    	$this->rootNode = $this->scene->CreateChild[];
    	$this->rootNode->Position = new Vector3[0, 0, 20];

    	createEarthNode[];
}
[/php]

Là câu lệnh cuối cùng của phương thức

[bash]
dotnet add reference ../<PHPLibName>/<PHPLibName>.csproj
[/bash]
4, chúng ta gọi phương thức
[bash]
dotnet add reference ../<PHPUtilityLibName>/<PHPUtilityLibName>.csproj
[/bash]
1 được khai báo ngay sau đó, phương thức này khởi tạo đối tượng cho Earth. Chúng tôi làm điều này theo cách tương tự như nút gốc. Ngoài ra, chúng tôi đang thiết lập vòng quay của nút. Lưu ý cách chúng tôi đang sử dụng một. NET từ mã PHP của chúng tôi tại đây

[php]
// Create a node for the Earth
public function createEarthNode[]
{
    	$this->earthNode = $this->rootNode->CreateChild[];
    	$this->earthNode->SetScale[5];
    	$this->earthNode->Rotation = new Quaternion[0, 180, 0];
}
[/php]

Sau đây là một phương pháp chịu trách nhiệm tạo ra kết cấu của Trái đất. Chúng ta cần tải kết cấu từ một. tập tin jpg. Chúng tôi đang sử dụng chức năng UrhoSharp tĩnh để tạo tài liệu cho điều đó. Chúng tôi gọi phương thức công khai này trực tiếp từ phương thức Bắt đầu C#, ngay sau phương thức Bắt đầu PHP của chúng tôi

[php]
// Create a static model component - Sphere:
public function createEarthTexture[]
{
    	$earthSphere = UtilityFunctions::CreateSphereComponent[$this->earthNode];
    	$earthSphere->SetMaterial[Material::FromImage["Textures/Earth.jpg"]];
}
[/php]

Chúng ta có thể làm theo cùng một mô hình viết lại các phương thức Ứng dụng và viết toàn bộ mã tạo cảnh vào PHP theo cách này

Truyền đối tượng CIL trong C#

Vẫn còn một vấn đề gây ra bởi các loại đối tượng PHP. Mặc dù dữ liệu đối tượng cơ bản được tạo dưới dạng đối tượng CIL, loại cấp cao nhất của các phiên bản được tạo bằng PHP và được biên dịch bằng PeachPie luôn là

[bash]
dotnet add reference ../<PHPUtilityLibName>/<PHPUtilityLibName>.csproj
[/bash]
2. Vì vậy, để sử dụng các phương thức của chúng và thường tương tác với chúng trong C#, chúng ta cần chuyển chúng thành các kiểu thực tế của chúng một cách rõ ràng. Điều này đạt được như sau

[php]
phpApp.scene.Cast[]
[/php]

Để không phải làm điều này mỗi khi chúng ta muốn sử dụng các đối tượng này từ mã C#, chúng ta cũng khai báo các đối tượng này là thành viên của lớp Ứng dụng của chúng ta trong C# và tạo một hàm để gán các thể hiện của chúng được xây dựng trong PHP với đúng loại cho các đối tượng này.

[csharp]
Text helloText;
Node rootNode, earthNode, cloudsNode, cameraNode;
Scene scene;
private void CreatePHPReferences[]
{
	helloText = [Text]phpApp.helloText.AsObject[];
        scene = [Scene]phpApp.scene.AsObject[];
        rootNode = [Node]phpApp.rootNode.AsObject[];
        earthNode = [Node]phpApp.earthNode.AsObject[];
        cloudsNode = [Node]phpApp.cloudsNode.AsObject[];
        cameraNode = [Node]phpApp.cameraNode.AsObject[];
}
[/csharp]

Bây giờ chúng ta có thể lấy gần như toàn bộ mã từ ứng dụng UrhoSharp C# ban đầu và viết lại bằng PHP. Bạn cũng có thể sử dụng bất kỳ mã PHP hiện tại nào của mình, viết mã mới và xây dựng toàn bộ trò chơi di động bằng PHP theo cách này

Đây là chủ đề của công việc trong tương lai của chúng tôi trên API PeachPie;

Xây dựng và chạy

Bây giờ chúng ta có thể dễ dàng xây dựng, gỡ lỗi và triển khai dự án Android trong Visual Studio giống như bất kỳ dự án nào khác. dự án NET. Ngoài ra, chúng ta chỉ có thể xây dựng thư viện PHP, trong cấu hình mặc định bằng cách chạy

[bash]
dotnet add reference ../<PHPLibName>/<PHPLibName>.csproj
[/bash]
0

Điều này cũng xây dựng thư viện tiện ích được tham chiếu. Cuối cùng, chúng ta có một hình ảnh 3D tuyệt đẹp về Trái đất đang quay, được viết bằng PHP, chạy trên thiết bị Android thông qua Xamarin và UrhoSharp

kết thúc

Đến bây giờ, bạn đã có một giải pháp cơ bản được định cấu hình đầy đủ và sẵn sàng sử dụng cho ứng dụng Xamarin PHP của chúng tôi. Nó đang chạy OpenGL, nó được viết bằng PHP, được biên dịch bởi PeachPie Compiler thành. NET và được triển khai cho thiết bị Android của bạn. Con đường phía trước hiện đang mở ra cho các thử nghiệm về những gì bạn có thể làm với một kho công nghệ như thế này

Lấy giải pháp GitHub
https. //github. com/jan-pavlovsky/UrhoPHPTest

Hãy cho chúng tôi biết suy nghĩ của bạn về tùy chọn này

Posted on 12/11/2018, in category Tin tức, Hướng dẫn, tags. android, đa nền tảng, dotNET, trò chơi, điện thoại di động, Peachpie, PHP, urhosharp, xamarin

Bạn có thể sử dụng PHP trong Android Studio không?

Có thể bạn chưa biết hoặc chưa biết rằng bạn có thể sử dụng PHP để phát triển ứng dụng Android của mình. Chúng ta có thể sử dụng PHP làm back-end cho các Ứng dụng Android của mình và hãy tin tôi rằng chúng hoạt động hoàn hảo với nhau. Bất kỳ ứng dụng Android nào cần đăng nhập và đăng ký tài khoản đều có thể sử dụng hiệu quả PHP trên nền tảng của nó .

Làm cách nào để chạy tệp PHP trên Android?

Cài đặt PHP trên hệ điều hành Android . Cài đặt ứng dụng Termux trên thiết bị của bạn. Step 1: Install the Termux app on your device. Bước 2. Sau khi cài đặt ứng dụng, bạn sẽ thấy dấu “$”. Nhập apt update và nhấn phím enter trên bàn phím của bạn. Bước 3. Sau đó, bạn sẽ thấy lại dấu $.

Tôi có thể chuyển đổi trang web PHP sang ứng dụng Android không?

Mục đích của PHP là tạo các trang web và ứng dụng web. Công nghệ cung cấp năng lượng cho các ứng dụng di động hoàn toàn khác. Không có cách nào để dịch trực tiếp những gì bạn đã xây dựng bằng PHP thành các ứng dụng gốc cho nền tảng iOS và Android .

Làm cách nào để sử dụng mySQL trong Android Studio?

Đây là khi người dùng đã đăng ký. .
Bước 1. Tạo cơ sở dữ liệu mySQL trong phpMyAdmin. .
Bước 2. Tạo 3 file php. .
Bước 3. Các thành phần nên có trong Android Studio. .
Bước 4. Thiết kế hoạt động_main. xml. .
Bước 5. Tạo một lớp có tên Design the. .
Bước 6. Viết mã trong MainActivity. java. .
Bước 7. Bạn có thể kiểm tra ứng dụng của bạn

Chủ Đề