Android【SDK】 SDK是如何开发的,怎么打包aar包


一、Android SDK开发示例工程

本教程工程Git链接:https://gitcode.com/xiaohuihui1400/AndroidSdkExample/overview

二、Android SDK的开发

新建项目,如果选择 Empty Activity 的话语言默认是 Kotlin,此处选择 No Activity

请添加图片描述

本教程使用 Java 语言,构建配置语言为 Groovy,可自行决定:

请添加图片描述

等待项目编译完成,在新的项目中创建Module:

请添加图片描述

选择 Android Library

请添加图片描述

根据自己的需求编写SDK,此处新建 Empty Views Activity

请添加图片描述

命名为 OneActivity

请添加图片描述

再新建一个 Empty Views Activity 命名为 TwoActivity

请添加图片描述

做一个简单的打开页面功能,OneActivity 中点击按钮打开 TwoActivity 页面:

  • activity_one.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".OneActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="40dp"
        android:text="跳转TwoActivity"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:padding="15dp"
        android:text="这里是SDK的OneActivity"
        android:textSize="16sp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@id/button" />

</androidx.constraintlayout.widget.ConstraintLayout>
  • activity_two.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".TwoActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="40dp"
        android:padding="15dp"
        android:textSize="16sp"
        android:text="这里是SDK的TwoActivity"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
  • OneActivity.java
package com.example.mylibrary;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class OneActivity extends AppCompatActivity implements View.OnClickListener{

    private Button mButton;
    private TextView mTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_one);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
        initView();
    }

    private void initView() {
        mButton = findViewById(R.id.button);
        mButton.setOnClickListener(this);
        mTextView = findViewById(R.id.textView);
        mTextView.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        int id = view.getId();
        if (id == R.id.button) {
            startActivity(new Intent(this, TwoActivity.class));
        } else if (id == R.id.textView) {
            Toast.makeText(this, mTextView.getText(), Toast.LENGTH_SHORT).show();
        }
    }

}
  • TwoActivity.java
package com.example.mylibrary;

import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class TwoActivity extends AppCompatActivity implements View.OnClickListener {

    private TextView mTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_two);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
        initView();
    }

    public void initView() {
        mTextView = findViewById(R.id.textView);
        mTextView.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        int id = view.getId();
        if (id == R.id.textView) {
            Toast.makeText(this, mTextView.getText(), Toast.LENGTH_SHORT).show();
        }
    }

}

如果不想打包,可以在app\build.gradle 直接引入模块:

dependencies {
    implementation project(':mylibrary')
}

如下图所示:

请添加图片描述

三、打包aar包

执行 Gradle 任务,将 mylibrary 模块打包成aar:

gradle :mylibrary:assembleRelease

请添加图片描述

aar 包可以在mylibrary\build\outputs\aar 中找到:

请添加图片描述

当然也可以通过 Rebuild Project 来生成 aar 包:

请添加图片描述

需要跳过test的方法,使用以下的命令:

gradle build -x test

四、Android SDK的使用

将 aar 包复制或者移动到 app\libs 目录下:

请添加图片描述

app\build.gradle 引入 libs 目录下的所有 jar、aar 包:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
}

如下图所示:

在这里插入图片描述

在项目中新建一个 Empty Views Activity 进行SDK的测试:

请添加图片描述

命名为 MainActivity,并勾选为启动 Activity :

请添加图片描述

  • activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="40dp"
        android:text="跳转SDK"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:padding="15dp"
        android:text="这里是MainActivity"
        android:textSize="16sp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@id/button" />

</androidx.constraintlayout.widget.ConstraintLayout>
  • MainActivity.java
package com.example.myapplication;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

import com.example.mylibrary.OneActivity;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button mButton;
    private TextView mTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
        initView();
    }

    private void initView() {
        mButton = findViewById(R.id.button);
        mButton.setOnClickListener(this);
        mTextView = findViewById(R.id.textView);
        mTextView.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        int id = view.getId();
        if (id == R.id.button) {
            startActivity(new Intent(this, OneActivity.class));
        } else if (id == com.example.mylibrary.R.id.textView) {
            Toast.makeText(this, mTextView.getText(), Toast.LENGTH_SHORT).show();
        }
    }
}

MainActivity 中存在一个按钮,点击跳转SDK中的 OneActivity 页面,效果如下:

请添加图片描述

至此,我们完成了 Android SDK 的制作和使用。

  • 20
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要打包一个aar文件,可以按照以下步骤进行操作: 1. 在Android Studio中打开你的项目。 2. 在项目根目录下创建一个新的module,选择"Android Library"。 3. 在新的module中添加你想要打包的代码和资源文件。 4. 在新的module的build.gradle文件中添加以下代码: ``` apply plugin: 'com.android.library' android { // 配置你的库的版本号、名、最小SDK版本等信息 } dependencies { // 添加你的库依赖的其他库 } // 配置打包输出的aar文件名 task createAar(type: Copy) { from('build/outputs/aar/') into('../aar/') include('*.aar') } // 执行打包任务 assemble.dependsOn createAar ``` 5. 在Android Studio的Terminal中执行以下命令: ``` ./gradlew assemble ``` 6. 打包完成后,在项目根目录下的"aar"文件夹中可以找到生成的aar文件。 希望这个回答能够帮到你! ### 回答2: Android Studio是一款功能强大的Android开发工具,可以方便地创建和打包aar库。aar文件Android应用程序库的格式,可以含Activity、资源文件、Java类等。 首先,我们需要在Android Studio中创建一个库项目。可以右键单击项目,然后选择“New”>“Module”>“Android Library”。 然后,我们需要在该库项目中添加所需的代码、资源、类等。在添加完毕后,我们需要在项目的根目录下的build.gradle文件中进行如下配置: ``` apply plugin: 'com.android.library' android { compileSdkVersion 30 buildToolsVersion "30.0.3" defaultConfig { minSdkVersion 16 targetSdkVersion 30 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.3.0' } ``` 注意,我们需要将插件“com.android.application”改为“com.android.library”,以便打包aar库。 接下来,我们需要在项目根目录下的gradle.properties文件中添加以下内容: ``` android.useAndroidX=true android.enableJetifier=true ``` 这些属性将自动更新库项目中的依赖项,使其兼容AndroidX。 最后,我们需要在菜单栏中的“Build”>“Make Module 'library_name'”来打包aar库。打包后的文件将存储在项目目录下的build/outputs/aar/目录中,可以作为库供其他应用程序使用。 总之,Android Studio可以方便地创建和打包aar库,只需要按照上述步骤进行配置即可。 ### 回答3: Android Studio是一款高效的Android开发IDE,提供了打包aarAndroid Archive)的功能。 AAR是一种Android Library项目的一种打包方式。通常情况下,一个Android Library会被打包为一个AAR文件,可以被其他的Android项目引用。Android Studio提供了一种非常简单的方法来打包aar文件,并将它作为一个库项目添加到其他的Android项目中去。 以下是打包aar文件的步骤: 1. 创建一个新的Android Library项目。 2. 在模块的build.gradle文件中,添加以下内容: ``` apply plugin: 'com.android.library' android { //添加打包配置 libraryVariants.all { variant -> variant.outputs.all { outputFileName = "${project.getName()}-${variant.baseName}-${variant.versionName}.aar" } } } ``` 3. 然后,点击菜单 "File" -> "Project Structure",在左侧面板中选择"Modules" ,然后点击“+”号新建模块: 4. 选择“Import.Jar/.AAR”选项。 5. 选择刚才打包aar文件,然后设置新模块的名称和安装路径。 6. 点击“Finish”按钮,然后在新的模块中引用你的库文件。 通过以上步骤,即可轻松地将Android Library项目打包aar文件,并将其添加到其他的Android项目中去。使用aar文件,可以加速应用程序的构建过程,同时也可以提高开发者的生产效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一碗情深

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值