Để phát triển Android một cách hoàn thiện hơn, các bạn cần phải biết cách tạo và xuất bản một thư viện Android của riêng bạn. Trong bài học lập trình android này, các bạn sẽ được hướng dẫn để có thể sẽ dàng thêm và sử dụng trong các dự án.
1. Tạo một thư viện Android
Nếu thư viện của bạn sẽ được bao gồm chỉ các lớp Java, đóng gói nó như một JAR và phân phối nó sử dụng một máy chủ tập tin có lẽ là cách nhanh nhất và dễ nhất để chia sẻ. Nếu bạn đã tạo ra từ giao diện điều khiển, lệnh sau sẽ đủ:
1 |
jar cvf mylibrary.jar Class1.class Class2.class ... ClassN.class |
Tuy nhiên, hướng dẫn học android này cho bạn thấy làm thế nào để làm việc với nhiều thư viện phức tạp có chứa không chỉ các lớp học Java, mà còn các loại tập tin XML và các nguồn lực. Thư viện như vậy được tạo ra như các module thư viện Android và thường được đóng gói như là các tập tin AAR.
Hãy tạo ra một thư viện Android đơn giản là cung cấp một tùy chỉnh View để phát triển những người sử dụng nó.
Bước 1: Thêm một Module mới
Để bắt đầu, thêm một module Android mới để dự án của bạn bằng cách chọn New> New Module từ menu File. Bạn sẽ được hiển thị màn hình sau, trong đó cung cấp nhiều sự lựa chọn:
Chọn Library Android và nhấn Next. Trong các hình thức sau đây, nhập tên cho thư viện của bạn và nhấn Next. Tôi sẽ được gọi mylittlelibrary thư viện này.
Trong màn hình cuối cùng, chọn Add không có Hoạt động và nhấn Finish.
Hiện tại dự án của bạn sẽ có hai mô-đun, một cho các ứng dụng và một cho thư viện. Đây là những gì cấu trúc của nó trông giống như:
Bước 2: Tạo một Layout
Tạo một layout XML mới bằng cách kích chuột phải vào thư mục res của module thư viện của bạn và chọn New> XML> Layout XML File. Đặt tên nó là my_view.xml.
Để giữ cho hướng dẫn này đơn giản, chúng ta sẽ tạo ra một Xem tùy chỉnh mà có hai vật dụng TextView bên trong một LinearLayout. Sau khi thêm một số văn bản để các vật dụng TextView, bố trí tập tin XML sẽ giống như thế này:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="16dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Hello!"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="This is my custom view from my little library."/> </LinearLayout> |
Bước 3: Tạo một lớp Java
Tạo một lớp Java mới và đặt tên nó MyView.java. Hãy chắc chắn để đặt file này trong thư mục src của thư viện module-không các module ứng dụng.
Để thực hiện điều này hành xử như một lớp View, làm cho nó một lớp con của lớp LinearLayout. Android Studio sẽ nhắc bạn thêm một vài nhà xây dựng cho lớp. Sau khi thêm chúng, các lớp học mới nên xem xét như thế này:
1 2 3 4 5 6 7 8 9 10 11 |
public class MyView extends LinearLayout { public MyView(Context context) { super(context); } public MyView(Context context, AttributeSet attrs) { super(context, attrs); } } |
Như bạn có thể thấy, bây giờ chúng tôi có hai nhà xây dựng. Để tránh thêm mã khởi tạo cho từng dựng, gọi một phương thức có tên khởi tạo từ mỗi constructor. Thêm mã sau đây để mỗi constructor:
1 |
initialize(context); |
Trong phương thức khởi tạo, gọi thổi phồng để kết hợp với bố trí, chúng tôi tạo ra trong bước trước đó với cả lớp.
1 2 3 |
private void initialize(Context context){ inflate(context, R.layout.my_view, this); } |
2. Sử dụng các thư viện ở địa phương
Bây giờ thư viện đã sẵn sàng, hãy tận dụng nó trong các module ứng dụng của cùng một dự án để đảm bảo rằng không có vấn đề. Để làm như vậy, thêm nó như là một sự phụ thuộc biên dịch trong file build.gradle của module ứng dụng:
1 |
compile project(":mylittlelibrary") |
Tạo một lớp Java mới, MainActivity, bên trong module ứng dụng. Làm cho nó một lớp con của lớp Hoạt động và chép đè phương thức onCreate của nó.
1 2 3 4 5 6 7 |
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } } |
Bên trong phương thức onCreate, tạo ra một thể hiện của giao diện tùy chỉnh bằng cách sử dụng constructor của nó. Vượt qua nó để phương pháp setContentView để nó lấp đầy tất cả các không gian màn hình của hoạt động:
1 2 3 4 5 6 7 8 |
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); View v = new MyView(this); setContentView(v); } |
Hoạt động của bạn bây giờ đã sẵn sàng. Sau khi thêm nó vào manifest ứng dụng, xây dựng dự án của bạn và triển khai các ứng dụng của bạn với một thiết bị Android. Bạn sẽ có thể xem xem tùy chỉnh khi các ứng dụng khởi động.
3. Xuất bản Thư viện của bạn trên Bintray
Bintray là một nền tảng phổ biến mà bạn có thể sử dụng để xuất bản các thư viện Android. Nó là miễn phí và dễ sử dụng.
Bắt đầu bằng cách tạo một tài khoản trên Bintray. Sau khi đăng nhập vào tài khoản của bạn, bạn sẽ thấy rằng bạn đã sở hữu sáu kho. Bạn có thể có thể sử dụng một trong số họ hoặc tạo ra một kho lưu trữ mới. Đối với hướng dẫn này, tôi sẽ sử dụng các kho lưu trữ được gọi là mê, đó là một kho Maven.
Truy cập vào trang cá nhân của bạn và nhấp vào nút Edit. Trên trang tiếp theo, nhấp vào liên kết API Key để xem API key.
Hãy ghi nhớ bàn phím bởi bạn sẽ cần nó để xác thực cho bạn khi sử dụng plugin Bintray
Bước 1: Thêm Plugins cần thiết
Để tương tác với Bintray trong Android Studio, bạn nên bao gồm các plugin Bintray trong sự phụ thuộc của tập tin build.gradle của dự án của bạn.
1 |
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2' |
Bởi vì bạn sẽ được tải lên thư viện để một kho Maven, bạn cũng nên thêm các plugin Maven như hình dưới đây.
1 |
classpath "com.github.dcendents:android-maven-gradle-plugin:1.3" |
Bước 2: Áp dụng các Plugins
Mở tập tin build.gradle của module thư viện của bạn và thêm mã sau đây để áp dụng các plugins chúng tôi thêm vào trong bước trước.
1 2 |
apply plugin: 'com.jfrog.bintray' apply plugin: 'com.github.dcendents.android-maven' |
Bước 3: Xác định POM Chi tiết
Các plugin Bintray sẽ tìm một file POM khi nó tải lên thư viện. Mặc dù các plugin Maven tạo nó cho bạn, bạn nên xác định giá trị của thẻ groupId và giá trị của các phiên bản tag mình. Để làm như vậy, sử dụng các nhóm và phiên bản biến trong tập tin gradle của bạn.
1 2 |
group = 'com.github.hathibelagal.librarytutorial' // Change this to match your package name version = '1.0.1' // Change this to match your version number |
Nếu bạn đã quen thuộc với Maven và bạn đang tự hỏi tại sao chúng ta không chỉ định giá trị của thẻ artifactId, đó là vì các plugin Maven sẽ, theo mặc định, sử dụng tên của thư viện của bạn như artifactId.
Bước 4: Tạo một nguồn tin JAR
Để phù hợp với các tiêu chuẩn Maven, thư viện của bạn cũng nên có một tập tin JAR chứa các file nguồn của thư viện. Để tạo ra các tập tin JAR, tạo ra một nhiệm vụ mới Jar, generateSourcesJar, và xác định vị trí của các tập tin bằng cách sử dụng nguồn từ chức năng.
1 2 3 4 |
task generateSourcesJar(type: Jar) { from android.sourceSets.main.java.srcDirs classifier 'sources' } |
Bước 5: Tạo một JAR Javadoc
Nó cũng khuyến cáo rằng thư viện của bạn có một tập tin JAR chứa Javadocs của nó. Vì hiện tại bạn không có bất kỳ Javadocs, tạo ra một nhiệm vụ mới Javadoc, generateJavadocs, để tạo ra chúng. Sử dụng các biến nguồn để xác định vị trí của các tập tin nguồn. Bạn cũng nên cập nhật các biến classpath để các nhiệm vụ có thể tìm các lớp học thuộc về Android SDK. Bạn có thể làm điều này bằng cách thêm giá trị trả về của phương android.getBootClasspath với nó.
1 2 3 4 5 |
task generateJavadocs(type: Javadoc) { source = android.sourceSets.main.java.srcDirs classpath += project.files(android.getBootClasspath() .join(File.pathSeparator)) } |
Tiếp theo, để tạo ra một JAR từ Javadocs, tạo một nhiệm vụ Jar, generateJavadocsJar, và thông qua các tài sản của generateJavadocs destinationDir để từ chức năng. Nhiệm vụ mới của bạn sẽ trông như thế này:
1 2 3 4 |
task generateJavadocsJar(type: Jar) { from generateJavadocs.destinationDir classifier 'javadoc' } |
Để đảm bảo các nhiệm vụ generateJavadocsJar chỉ bắt đầu khi nhiệm vụ generateJavadocs đã hoàn thành, hãy thêm đoạn mã sau đây, trong đó sử dụng các phương pháp dependsOn để đặt hàng các nhiệm vụ:
1 |
generateJavadocsJar.dependsOn generateJavadocs |
Bước 6: Bao gồm các tập tin JAR Generated
Để bao gồm nguồn và Javadoc JAR file trong danh sách các hiện vật, trong đó sẽ được tải lên kho Maven, bạn nên thêm tên của nhiệm vụ của mình một cấu hình được gọi là lưu trữ. Để làm như vậy, sử dụng các đoạn mã sau:
1 2 3 4 |
artifacts { archives generateJavaDocsJar archives generateSourcesJar } |
Bước 7: Chạy Task
Nó bây giờ là thời gian để chạy các nhiệm vụ, chúng tôi tạo ra trong bước trước đó. Mở cửa sổ Projects Gradle và tìm kiếm một công việc có tên cài đặt.
Kích đúp vào nó để chạy các tác vụ liên quan đến các module thư viện. Một khi nó chạy xong, bạn sẽ có mọi thứ bạn cần để xuất bản thư viện của bạn, một tập tin hợp lệ POM, một tập tin AAR, một JAR nguồn, và một JAR Javadocs.
Bước 8: Cấu hình Bintray Plugin
Để cấu hình các plugin, bạn nên sử dụng việc đóng cửa bintray trong tập tin Gradle của bạn. Đầu tiên, xác nhận bản thân bằng cách sử dụng người dùng và chính biến, tương ứng với tên người dùng và API key Bintray của bạn tương ứng.
Trên Bintray, thư viện của bạn sẽ nằm bên trong một gói Bintray. Bạn nên cung cấp thông tin chi tiết về nó bằng cách sử dụng repo, tên, giấy phép, và các thông số bằng trực giác có tên vcsUrl của việc đóng cửa pkg. Nếu gói không tồn tại, nó sẽ được tạo tự động cho bạn.
Khi bạn tải lên các tập tin để Bintray, họ sẽ được liên kết với một phiên bản của gói Bintray. Vì vậy, pkg phải chứa một đóng cửa phiên bản có tên thuộc tính được thiết lập để một tên duy nhất. Tùy chọn, bạn cũng có thể cung cấp một mô tả, ngày phát hành, và tag Git sử dụng dần, phát hành, và các thông số vcsTag.
Cuối cùng, để xác định các tập tin đó nên được tải lên, thiết lập giá trị của các tham số cấu hình để lưu trữ.
Đây là một cấu hình mẫu:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
bintray { user = 'test-user' key = '01234567890abcdef01234567890abcdef' pkg { repo = 'maven' name = 'com.github.hathibelagal.mylittlelibrary' version { name = '1.0.1-tuts' desc = 'My test upload' released = new Date() vcsTag = '1.0.1' } licenses = ['Apache-2.0'] vcsUrl = 'https://github.com/hathibelagal/LibraryTutorial.git' websiteUrl = 'https://github.com/hathibelagal/LibraryTutorial' } configurations = ['archives'] } |
Bước 9: Upload Files Sử dụng Bintray Plugin
Mở cửa sổ Projects Gradle một lần nữa và tìm kiếm các nhiệm vụ bintrayUpload. Kích đúp vào nó để bắt đầu tải lên các tập tin.
Một khi nhiệm vụ hoàn thành, mở trình duyệt để truy cập vào trang chi tiết gói Bintray của bạn. Bạn sẽ thấy một thông báo mà nói rằng bạn có bốn tập tin chưa được công bố. Để xuất bản những tập tin này, hãy nhấp vào liên kết Publish.
4. Sử dụng các thư viện Từ Bintray
Thư viện của bạn bây giờ là có sẵn như là một gói Bintray. Khi bạn chia sẻ URL của kho Maven của bạn, cùng với các nhóm ID, tạo tác ID, và số phiên bản, bất kỳ nhà phát triển có thể truy cập vào thư viện của bạn. Ví dụ, để sử dụng thư viện, chúng tôi tạo ra, các nhà phát triển sẽ phải bao gồm các đoạn mã sau:
1 2 3 4 5 6 7 8 9 |
repositories { maven { url 'https://dl.bintray.com/eruzza/maven' } } dependencies { compile 'com.github.hathibelagal.librarytutorial:mylittlelibrary:1.0.1@aar' } |
Lưu ý rằng các nhà phát triển phải bao gồm một cách rõ ràng kho của bạn trong danh sách các kho trước khi thêm thư viện như là một sự phụ thuộc biên dịch.
5. Bổ sung thêm các thư viện cho JCenter
Theo mặc định, Android Studio tìm kiếm các thư viện trong một kho lưu trữ được gọi là JCenter. Nếu bạn bao gồm thư viện của bạn trong kho JCenter, các nhà phát triển sẽ không phải thêm bất cứ điều gì để danh sách các kho của họ.
Để thêm thư viện của bạn để JCenter, mở trình duyệt và truy cập vào trang chi tiết gói Bintray của bạn. Nhấn vào nút có nhãn Add để JCenter.
Sau đó bạn sẽ được đưa đến một trang cho phép bạn soạn một tin nhắn. Bạn có thể sử dụng trường Bình luận để tùy đề cập đến bất kỳ chi tiết về thư viện.
Nhấn vào nút Send để bắt đầu quá trình xem xét của Bintray. Trong vòng một hoặc hai ngày, các folks tại Bintray sẽ liên kết thư viện của bạn vào kho JCenter và bạn sẽ có thể thấy liên kết để JCenter trên trang chi tiết gói hàng của bạn.
Bất kỳ nhà phát triển có thể sử dụng thư viện của bạn mà không thay đổi danh sách các kho.
Như vậy, bạn đã học cách để tạo ra một mô-đun thư viện Android đơn giản và công bố nó cho cả hai kho Maven của riêng bạn và để kho JCenter.
Chúc các bạn thành công !
>> 11 Icon sử dụng trong ứng dụng Android
>> Chia sẻ chức năng giữa Apps Android với AIDL
———————— || ————————
Trung tâm Đào tạo học lập trình Game Mobile với các Khóa học lập trình android cơ bản nâng cao tại hà nội !