AndroidStudio 의 Gradle 을 사용 하여 jar 가방 과 aar 가방 을 헷 갈 리 게 합 니 다.
import com.android.build.gradle.LibraryPlugin
import com.android.build.gradle.AppPlugin
def getPackageName(){
// AndroidManifes.xml
println("siy-minifest:"+android.sourceSets.main.manifest.srcFile)
def androidManifest = new XmlSlurper().parse(android.sourceSets.main.manifest.srcFile)
def packageName = androidManifest['@package'];
println("siy-packageName:"+packageName);
return packageName;
}
def packageNameToPackagePath(){
String packagePath = "${getPackageName()}".replace('.','\\');
println("siy-packagePath:"+packagePath);
return packagePath;
}
task makeJar(dependsOn: ['compileReleaseJavaWithJavac'], type: Jar) {
group "payeco"
description "Automatically generate the jar packages for the SDK"
//
def srcClassDir = [project.buildDir.absolutePath + "\\intermediates\\classes\\release"];
//
from srcClassDir
// class
println("siy-srcClassDir:"+srcClassDir)
//
exclude packageNameToPackagePath()+"\\BuildConfig.class"
// , aa.bb.cc aa\bb\cc
exclude packageNameToPackagePath()+"\\BuildConfig\$*.class"
exclude "**\\R.class"
exclude "**\\R\$*.class"
//
include packageNameToPackagePath()+"\\**\\*.class"
// Jar
extension = "jar"
// Jar ...... , [baseName]-[appendix]-[version]-[classifier].[extension]
archiveName = project.name+"-org-"+android.defaultConfig.versionName+"."+extension
}
task proguardJar(dependsOn: ['makeJar'], type: proguard.gradle.ProGuardTask) {
group "payeco"
description "Automatically generate the proguard jar packages for the SDK"
//Android proguard
configuration android.getDefaultProguardFile('proguard-android.txt')
// , proguard.cfg, proguard-project.txt
configuration 'proguard-rules.pro'
String inJar = makeJar.archivePath.getAbsolutePath()
// jar
println("siy-inJar:"+inJar)
// jar
injars inJar
// jar
String outJar = inJar.substring(0, inJar.lastIndexOf(File.separator)) + "\\${makeJar.archiveName}".replace("-org-","-")
// jar
println("siy-outJar:"+outJar)
outjars outJar
// ( , )
dontshrink
Plugin plugin = getPlugins().hasPlugin(AppPlugin) ?
getPlugins().findPlugin(AppPlugin) :
getPlugins().findPlugin(LibraryPlugin)
if (plugin != null) {
List runtimeJarList
if (plugin.getMetaClass().getMetaMethod("getRuntimeJarList")) {
runtimeJarList = plugin.getRuntimeJarList()
} else if (android.getMetaClass().getMetaMethod("getBootClasspath")) {
runtimeJarList = android.getBootClasspath()
} else {
runtimeJarList = plugin.getBootClasspath()
}
for (String runtimeJar : runtimeJarList) {
println("siy-runtimejar:"+runtimeJar)
// proguard runtime
libraryjars(runtimeJar)
}
}
}
여기 서 가방 이름 을 되 돌려 주 는 것 과 가방 이름 을'/'로 바 꾸 는 두 가지 방법 을 설명 하 겠 습 니 다.AS 가 자바 코드 를 컴 파일 한 후의'class'를 build/intermediates/classes/release 아래 에 저장 하 는 것 을 알 고 있 습 니 다.구체 적 인 경 로 는 build/intermediates/classes/release/packageName 아래 에 있어 야 하기 때문에 manifest 아래 에 가서 packName 을 읽 어야 합 니 다.build.gradle 의 applicationId 를 왜 읽 지 않 습 니까?또 하 나 는 manifest 에서 읽 은 packageName 이 com.a.b.c 라 는 것 입 니 다.그래서 저 는 그것 을 com/a/b/c 로 만 드 는 방법 을 썼 습 니 다.jar 를 헷 갈 리 게 하지 않 으 려 면 proguarJar 라 는 task 를 실행 할 필요 가 없습니다.최종 적 으로 생 성 된 jar 가방 은 build/libs 디 렉 터 리 에 있 습 니 다.
헷 갈 리 는 aar 생 성:
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
// aar
libraryVariants.all{
variant->
variant.outputs.each{
outFile->
if(outFile.outputFile !=null && outFile.outputFile.name.endsWith('.aar'))
if('release'.equals(variant.buildType.name)) {
outFile.outputFile = new File(outFile.outputFile.getParent(), "${project.name}-${android.defaultConfig.versionName}.aar")
}else if('debug'.equals(variant.buildType.name)){
outFile.outputFile = new File(outFile.outputFile.getParent(), "${project.name}-org-${android.defaultConfig.versionName}.aar")
}
}
}
헷 갈 리 지 않 으 려 면 minifyEnable 을 false 로 설정 하면 됩 니 다.우정 알림:module Library 를 디 버 깅 하려 면 buildTypes 설명 을 하 는 것 이 좋 습 니 다.
최종 생 성 된 aar 패 키 지 는 build/outputs/aar 디 렉 터 리 에 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.