본문 바로가기
개발/APP

안드로이드 라이브러리 jar 만들기.

by 카루딘 2018. 11. 8.
반응형



출처:   https://m.blog.naver.com/ilove_uguys/220536903548


proguard-rules.pro


네이버 로그인은 따로 프로가드 설정은 하지 않았다.


다만 카카오톡은 프로가드 설정 없이는 앱이 자꾸 죽는 문제가 발생하여 

아래와 같이 추가했다.


# Kakao
-keep class com.kakao.** { *; }
-keepattributes Signature
-keepclassmembers class * {
public static <fields>;
public *;
}


혹시 이넘이나, 이너 클래스가 문제를 일으킬 경우 아래와 같은 코드를 추가해주장


-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}-keepattributes InnerClasses


===================================================================================================


카카오톡, 네이버, 페이스북으로 로그인 하는 기능.. 넘 힘들게 고생스럽게 했다..ㅠㅠ

코드를 압축해서 jar 라이브러리로 쓰고 싶어서

jar파일 반드는 법을 익혔다.


참고 사이트 : https://www.youtube.com/watch?v=E54KjhrP66I

참고 사이트2: http://blog.ashwanik.in/2015/02/export-jar-for-android-plugin-unity3d.html

 


프로젝트를 하나 만들고, 그안에 library 하나를 만든다.

그리고 라이브러리의 build.gradle 파일을 아래와 같이 작성한다.


그리고 우측 Gradle 윈도우 창을 열고

첨부파일과 같이 exportJar를 클릭한다. (모듈명 -> Tasks-> other 하위에 있다.)

주의 디버그 모드가 아닌 릴리즈 모드로 run 시킬것.


개인 기록으로 남겨 놓는 글이라.. 설명이 부진합니다.

혹시 상세한 설명 필요하시면 댓글로.....



apply plugin: 'com.android.library'

android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
sourceSets {
main {
// Here is the path to your source code
java {
srcDir 'src/main/java'
}
}
}
defaultConfig {
minSdkVersion 14
targetSdkVersion 23
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.0'
compile files('release/AndroidPlugin.jar')
}

task deleteOldJar(type: Delete) {
delete 'build/libs/AndroidPlugin.jar'
}
task exportJar(type: Copy) {
from('build/intermediates/bundles/release/')
into('release/')
include('classes.jar')
///Give whatever name you want to give
rename('classes.jar', 'AndroidPlugin.jar')
}

exportJar.dependsOn(deleteOldJar, build)

 



출처: http://blog.naver.com/david_shkim/220692284090


Android Library module에서 AAR이 아닌 JAR만 만들기 위해서는

lib module의 "build.gradle" file을 약간 수정하면 된다.


1. task deleteOldJar{}

// task to delete the old jar
task deleteOldJar(type: Delete) {
delete 'release/smartlink.jar'
}

2. task exportJar{}

// task to export contents as jar
task exportJar(type: Copy) {
from('build/intermediates/bundles/release/')
into('release/')
include('classes.jar')
rename('classes.jar', 'smartlink.jar')
}

3. dependence

exportJar.dependsOn(deleteOldJar, build)


아래 예제 참조


 apply plugin: 'com.android.library'


android {
compileSdkVersion 23
buildToolsVersion "23.0.3"

defaultConfig {
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
}

// task to delete the old jar
task deleteOldJar(type: Delete) {
delete 'release/smartlink.jar'
}

// task to export contents as jar
task exportJar(type: Copy) {
from('build/intermediates/bundles/release/')
into('release/')
include('classes.jar')
rename('classes.jar', 'smartlink.jar')
}

exportJar.dependsOn(deleteOldJar, build)


반응형