天天看點

Android Studio建立aar或jar庫子產品建立Module三方應用使用aar檔案三方應用使用jar檔案

我們開發時,經常需要給合作方提供aar,或jar庫檔案,這個是如何使用Android Studio建立的呢?

建立Module

在Android Studio中建立一個APP項目,然後在此APP項目中File–New–New Module,建立一個Module

,其中類型選擇Android Library.

Android Studio建立aar或jar庫子產品建立Module三方應用使用aar檔案三方應用使用jar檔案

然後,配置對應的Library name,Module name,Package name:

Android Studio建立aar或jar庫子產品建立Module三方應用使用aar檔案三方應用使用jar檔案

在mylibrary的Module中,打開build.gradle,我們配置生成的aar名字:

Android Studio建立aar或jar庫子產品建立Module三方應用使用aar檔案三方應用使用jar檔案
def releaseTime() {
    return new Date().format("yyyy_MM_dd", TimeZone.getTimeZone("GMT+8"))
}
           
buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            android.libraryVariants.all { variant ->
                variant.outputs.all {
                    outputFileName = "mylibrary_${defaultConfig.versionName}_${releaseTime()}.aar"
                }
            }
        }
    }
           

其,完整build.gradle内容:

apply plugin: 'com.android.library'


def releaseTime() {
    return new Date().format("yyyy_MM_dd", TimeZone.getTimeZone("GMT+8"))
}

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"

    defaultConfig {
        minSdkVersion 28
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles 'consumer-rules.pro'
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            android.libraryVariants.all { variant ->
                variant.outputs.all {
                    outputFileName = "mylibrary_${defaultConfig.versionName}_${releaseTime()}.aar"
                }
            }
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}
           

通過這個檔案,我們也可以看到,Module的配置方式為:

而APP應用的配置方式為:

編譯後,生成的aar檔案:

mylibrary/build/outputs/aar/mylibrary_1.0_2020_06_22.aar
           

生成為jar檔案:

mylibrary/build/intermediates/packaged-classes/debug/classes.jar
           

三方應用使用aar檔案

将我們生成的aar,提供給三方應用。

Android Studio建立aar或jar庫子產品建立Module三方應用使用aar檔案三方應用使用jar檔案

我們在目錄下建立libs,将生成aar庫複制到此目錄下,并在build.gradle檔案中,将aar庫添加到項目中。如上圖

然後,在我們的源碼中調用UtilHelper.onDo:

import com.android.mylibrary.UtilHelper;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
    }

    private void init() {
        UtilHelper.onDo("test_aar");
    }
}

           

三方應用使用jar檔案

将我們生成的jar,提供給三方應用。

Android Studio建立aar或jar庫子產品建立Module三方應用使用aar檔案三方應用使用jar檔案

我們在目錄下建立libs,将生成jar庫複制到此目錄下,并在build.gradle檔案中,将jar庫添加到項目中。如上圖

然後,在我們的源碼中調用UtilHelper.onDo:

import com.android.mylibrary.UtilHelper;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
    }

    private void init() {
        UtilHelper.onDo("test_jar");
    }
}