当前位置:   article > 正文

Android Studio_aar包制作及使用方法_编译aar

编译aar

目录

 

一、 aar 包打包方法

1. 新建一个Module, 选择 Android Library

2. 在新建的包中,添加你的代码.

3. 编译工程, 产生aar 包

二、使用aar 包

1. 拷贝aar 到libs 目录

2.  在build.gralde 中添加依赖

3.  同步Gradle.

4.  调用lib 的函数


一、 aar 包打包方法

1. 新建一个Module, 选择 Android Library

你可以先随便创建一个工程,然后执行以下操作:

路径: File -> New -> New Module -> 选择Android Library -> 输入lib 的名称, 如networklib -> Finish

2. 在新建的包中,添加你的代码.

如新建 NetworkManager.java,  例子很简单,该包 模拟从网络 获取热门 消息,供客户端调用。

  1. package com.example.networklib;
  2. import android.util.Log;
  3. public class NetworkManager {
  4. private final String TAG = "NetworkManager";
  5. private boolean mIsDebugMode = true;
  6. private static NetworkManager mInstance;
  7. public static NetworkManager getInstance() {
  8. if (mInstance == null) {
  9. mInstance = new NetworkManager();
  10. }
  11. return mInstance;
  12. }
  13. public String getHotNews() {
  14. log("getHotNews");
  15. return "我是一条热门消息";
  16. }
  17. private void log(String msg) {
  18. if (mIsDebugMode) {
  19. Log.d(TAG, msg);
  20. }
  21. }
  22. }

3. 编译工程, 产生aar 包

Build -> Make project ->  完成后,  在build 的目录下会产生aar 包, 如路径: networklib\build\outputs\aar

此外Studio 中的 Build variants (一般在左下角), 可以选择编译release 或者debug ,

对应产生: networklib-release.aar / networklib-debug.aar 

此时, 已经完成了aar包的制作了,是不是很简单!!!

另外,可以看到该Module 的build.gralde 是配置成library的 (如果是app,则是application)

apply plugin: 'com.android.library'

 

二、使用aar 包

假如客户端需要调用aar包去获取热门消息,然后显示出来。

可以先随便新建一个工程, 作为客户端。

1. 拷贝aar 到libs 目录

这里的例子是把上面生成的 networklib-release.aar 拷贝到新建项目的 libs 目录

2.  在build.gralde 中添加依赖

  1. dependencies {
  2. implementation fileTree(dir: "libs", include: ["*.jar", "*.aar"])
  3. //省略其它的
  4. }

因为studio 默认是会自动添加libs 目录下的所有jar包, 所以我们只需要添加上述红色字体的部分即可。

3.  同步Gradle.

路径: File  -> Sync project with gradle Files

或者在修改了build.gradle 后, 按照Studio 上面的提示,点击同步。

至此, 已经完成了 aar 包的添加, 以下就是使用的问题了。

4.  调用lib 的函数

客户端的界面很简单,主要就是一个按钮 和 显示文本:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. tools:context=".MainActivity">
  8. <Button
  9. android:id="@+id/get_button"
  10. android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"
  12. android:text="获取热门消息"
  13. app:layout_constraintStart_toStartOf="parent"
  14. app:layout_constraintTop_toTopOf="parent" />
  15. <TextView
  16. android:id="@+id/result_tip"
  17. android:layout_width="wrap_content"
  18. android:layout_height="wrap_content"
  19. android:text="结果"
  20. app:layout_constraintStart_toStartOf="@id/get_button"
  21. app:layout_constraintTop_toBottomOf="@id/get_button" />
  22. <TextView
  23. android:id="@+id/get_result"
  24. android:layout_width="wrap_content"
  25. android:layout_height="wrap_content"
  26. app:layout_constraintStart_toStartOf="@id/result_tip"
  27. app:layout_constraintTop_toBottomOf="@id/result_tip" />
  28. </androidx.constraintlayout.widget.ConstraintLayout>

代码调用:

  1. package com.example.uselibs;
  2. import androidx.appcompat.app.AppCompatActivity;
  3. import android.os.Bundle;
  4. import android.util.Log;
  5. import android.view.View;
  6. import android.widget.Button;
  7. import android.widget.TextView;
  8. import com.example.networklib.NetworkManager;
  9. public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  10. private static final String TAG = "MainActivity";
  11. private Button mGetButton;
  12. private TextView mGetResult;
  13. //libs
  14. private NetworkManager mNetworkManager;
  15. @Override
  16. protected void onCreate(Bundle savedInstanceState) {
  17. super.onCreate(savedInstanceState);
  18. setContentView(R.layout.activity_main);
  19. mGetButton = (Button) findViewById(R.id.get_button);
  20. mGetResult = (TextView) findViewById(R.id.get_result);
  21. mNetworkManager = NetworkManager.getInstance();
  22. mGetButton.setOnClickListener(this);
  23. }
  24. @Override
  25. public void onClick(View v) {
  26. if (v == null) {
  27. log("onClick v is null");
  28. return;
  29. }
  30. log(" view id = " + v.getId());
  31. switch (v.getId()) {
  32. case R.id.get_button:
  33. if (mGetResult != null) {
  34. mGetResult.setText(mNetworkManager.getHotNews());
  35. }
  36. break;
  37. default:
  38. break;
  39. }
  40. }
  41. private void log(String msg) {
  42. Log.d(TAG, msg);
  43. }
  44. }

可以看到,这里调用 NetworkManager 也很简单, 和调用客户端的其它代码一样。

只不过是导入的方式不一样而已。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/331542
推荐阅读
相关标签
  

闽ICP备14008679号