web-dev-qa-db-ja.com

Android Studio別のAARファイルとjarを使用してAARを作成します

別のaarおよびjarファイルの依存関係を使用してAARファイルを作成しています。 .aarリリースファイルを正常に作成しました。

次に、新しいAARファイルをサンプルプロジェクトにインポートしました。プロジェクトは正常に実行されています。 aarクラスとjarクラスが意味するものにアクセスしようとすると、NoClassDefFoundエラーが表示されます。

注:最初に知りたいのは、現時点では、別のAAR内のAARが可能かどうかです。誰かが私がこの新しい問題から抜け出すのを手伝ってくれる?

このリンクも参照しました 複数のAAR/JARでAARを作成します 。それは推移的=真と言っています。しかし、そのフラグをどこで使用するかはわかりません。アプリケーションを使用しているサードパーティ、またはAARプロジェクトの依存関係内でAARを作成しているとき。

アドバンスに感謝します。

私のミニプロジェクトGradleファイル:

.AARファイルにのみ変換するミニプロジェクト。次に、このファイルは別のNewProjectのみを使用します

ミニプロジェクトBuild.gradleファイル

/*
This would be enabled for development purpose and to debug and check the same
*/

apply plugin: 'com.Android.application'

/*
This would be enabled for exporting as aar file
apply plugin: 'com.Android.library'
*/

//apply plugin: 'com.Android.library'

Android {

    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    dexOptions {
        javaMaxHeapSize "4g"
        preDexLibraries = false
    }
    defaultConfig {

        /*
        This application id would be used for development purpose and to debug and check the same.
        This would be commented when exporting as library
        */
        applicationId 'com.pss.pssplayer'
        minSdkVersion 18
        targetSdkVersion 23
        multiDexEnabled true
        versionCode 1
        versionName "1.0"
    }

    aaptOptions {
        cruncherEnabled = false
    }

    buildTypes {

        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'),
 'proguard-rules.pro'

        }
    }

    productFlavors {
    }
}

dependencies {

    compile fileTree(include: ['*.jar'], dir: 'libs')

    testCompile 'junit:junit:4.12'

    compile 'com.Android.support:appcompat-v7:23.1.1'

    compile 'com.Android.support:support-v4:23.1.1'

    compile files('libs/ksoap2-Android-Assembly-3.2.0-jar-with-dependencies.jar')

    compile files('libs/secure.jar')

    compile(project(':getSubProject')) {

        transitive = true

    }// this getSubProject also contains one classes jar
}
10
harikrishnan

Android-fat-aar gradleプラグインを使用すると、非常に便利です。

0

依存関係でaarとjarを参照する場合、最初のaarを参照して新しいaarをコンパイルできます。

しかし、それらはあなたのaarに埋め込まれていません。代わりに、「big aar」を使用するアプリケーションも、最初の2つに依存する必要があります。

そのために、「大きなaar」が最初の2つに依存していることをmavenに伝えることで、すべてのaarをmavenのようなリポジトリにデプロイできます。 (-> pom.xml)

アプリケーションのbuild.gradleファイルでは、transitive=trueを使用して「bigaar」にのみ依存関係を追加し、依存関係の依存関係を確認するようにシステムに指示できます。

編集

少なくともjarをマージできます。これらの答えを見てください:

gradle-他のjarを含むlib dirを含むjarを作成するにはどうすればよいですか?

Gradleは複数のプロジェクトを1つのjarにjarできますか?

すべてのリソース、マニフェストなどをマージする必要があるため、aarのマージはより困難です...

5
Bipi