2015-12-28 3 views
1

Я создал приложение Android с некоторыми зависимостями градиента. Теперь я хочу создать из этого проекта *.jar (без ресурсов и добавить их отдельно) файл или файл *.aar. Я попытался создать новый проект библиотеки (с build.xml), скопировал мои *.java и res файлы и запустил ant jar, я исправляю проблему один за другим. Есть ли лучшее решение для этого?Как установить приложение Android Gradle в * .jar или * .aar файл

+0

Ant ничего не знает о AARs. Почему вы используете Ant вместо Gradle для этого? – CommonsWare

+0

почему муравей? используйте градирную сборку. для изменения из приложения в библиотеку (файл aar) просто измените его с 'apply plugin: 'com.android.application'', чтобы применить плагин:' com.android.library'' –

ответ

0

Вам необходимо сделать два модуля. Первым модулем будет jar. Это должно быть POJO s (обычный старый объект Java) и ничего Android. Второй модуль будет aar. Это может зависеть от вашего первого проекта, но добавьте конкретный код/​​ресурсы Android.

Тогда ваш проект (MyApp) структура будет выглядеть следующим образом

MyApp/ 
MyApp/build.gradle 
MyApp/settings.gradle 
MyApp/PoJoProject/ 
MyApp/PoJoProject/build.gradle 
MyApp/AndroidProject/ 
MyApp/AndroidProject/build.gradle 

Тогда ваш файл settings.gradle будет выглядеть примерно так:

include ':PoJoProject', ':AndroidProject' 

Теперь в модулях

В MyApp/PoJoProject/build.gradle вы захочет применить плагин java. Этот модуль будет строить до желаемого формата jar, который может быть запущен в любом месте по нормальному JVM.

plugins { 
    id 'java' 
} 

version '1.00' 
group 'com.example.multimodule.gradle' 

repositories { 
    jcenter() 
} 

dependencies { 
    compile 'com.google.code.gson:gson:2.5' 
    testCompile 'junit:junit:4.12' 
} 

compileJava { 
    sourceCompatibility = JavaVersion.VERSION_1_8 
    targetCompatibility = JavaVersion.VERSION_1_8 
} 

В MyApp/AndroidProject/build.gradle вы хотите применить android плагин. Этот модуль будет построен в желаемом формате aar и может использоваться только в качестве зависимости от Android.

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.0.0-alpha3' 
    } 
} 
apply plugin: 'com.android.application' 

// version could be different from app version if needed 
// `version` & `group` could also be in the top level build.gradle 
version '1.00' 
group 'com.example.multimodule.gradle' 

repositories { 
    jcenter() 
} 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 

    defaultConfig { 
     applicationId "com.example.multiproject.gradle.android" 
     minSdkVersion 19 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    testOptions { 
     unitTests.returnDefaultValues = true 
    } 
} 

dependencies { 
    // let the android `aar` project use code from the `jar` project 
    compile project(':PoJoProject') 
    testCompile 'junit:junit:4.12' 
} 
Смежные вопросы