使ç¨ASæå æ··æ·Jarå ï¼ç¾åº¦ä¸ä¸ï¼ä¸çä¸ççï¼ä½æ¯å¾å¤é½æ¯é¶é¶æ£æ£çåå¾ä¸æ¯å¾è¯¦ç»ææ¯ç´æ¥æ·è´ï¼æç §ä»ä»¬çæç¨æµè¯æ»ä¸æ¯å¾é¡ºå©ï¼æ以è¿éæå°±ææ个人å¦ä¹ ASæå æ··æ·Jarçæææ»ç»åºæ¥ï¼å¸æ对大家æ帮å©ã个人è§å¾åå¾è¿æ¯æ¯è¾è¯¦ç»ç
使ç¨gradleæ··æ·æå Jar
使ç¨ASå¼å项ç®ï¼å¼å ¥ç¬¬ä¸æ¹åºæ¯é常æ¹ä¾¿çï¼æ们åªéè¦å¨build.gradleä¸é ç½®ä¸è¡ä»£ç å°±å¯ä»¥è½»æ¾å¼å ¥æ们éè¦çå¼ååºãé£ä¹gradleå¯ä»¥å¸®æ们混æ·æå Jaråï¼çæ¡æ¯å½ç¶å¯ä»¥ï¼
é£ä¹æ们å¦ä½æå Jarå¢ï¼å ¶å®æ们å¨ç¼è¯é¡¹ç®çæ¶åï¼ASå·²ç»å¸®æ们å¨ç®å½build/intermediates/bundles/release/classes.jaræ好äºJarãé£ä¹æ们éè¦åçå°±æ¯æJarè¿è¡æ··æ·çå·¥ä½äºãè¿é以个人项ç®bannerDemo 为ä¾ï¼æ··æ·æ¥éª¤å¦ä¸:
å¨ä½ çlibraryçbuild.gradleæ件ä¸å å ¥å¦ä¸ä»£ç ï¼
task makeJar(type: proguard.gradle.ProGuardTask, dependsOn: "build") {
// æªæ··æ·çjarè·¯å¾
injars 'build/intermediates/bundles/release/classes.jar'
// æ··æ·åçjarè¾åºè·¯å¾
outjars 'build/outputs/cocolove2-banner-1.1.0.jar'
// æ··æ·åè®®
configuration 'proguard-rules.pro'}
é 置混æ·åè®®
1.æ们å æASèªå¸¦çåè®®é ç½®è¿æ¥ä¸æ注éï¼ç¬è æ·»å
# This is a configuration file for ProGuard.# http://proguard.sourceforge.net/index.html#manual/usage.html## Starting with version 2.2 of the Android plugin for Gradle, these files are no longer used. Newer# versions are distributed with the plugin and unpacked at build time. Files in this directory are# no longer maintained.#表示混æ·æ¶ä¸ä½¿ç¨å¤§å°åæ··åç±»å-dontusemixedcaseclassnames#表示ä¸è·³è¿libraryä¸çépublicçç±»-dontskipnonpubliclibraryclasses#æå°æ··æ·ç详ç»ä¿¡æ¯-verbose# Optimization is turned off by default. Dex does not like code run# through the ProGuard optimize and preverify steps (and performs some# of these optimizations on its own).-dontoptimize##表示ä¸è¿è¡æ ¡éª,è¿ä¸ªæ ¡éªä½ç¨ å¨javaå¹³å°ä¸ç-dontpreverify# Note that if you want to enable optimization, you cannot just# include optimization flags in your own project configuration file;# instead you will need to point to the# "proguard-android-optimize.txt" file instead of this one from your# project.properties file.-keepattributes *Annotation*
-keep public class com.google.vending.licensing.ILicensingService-keep public class com.android.vending.licensing.ILicensingService# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native-keepclasseswithmembernames class * {
native <methods>;
}# keep setters in Views so that animations can still work.# see http://proguard.sourceforge.net/manual/examples.html#beans-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}# We want to keep methods in Activity that could be used in the XML attribute onClick-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keepclassmembers class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator CREATOR;
}
-keepclassmembers class **.R$* {
public static <fields>;
}# The support library contains references to newer platform versions.# Don't warn about those in case this app is linking against an older# platform version. We know about them, and they are safe.-dontwarn android.support.**# Understand the @Keep support annotation.-keep class android.support.annotation.Keep-keep @android.support.annotation.Keep class * {*;}-keepclasseswithmembers class * {
@android.support.annotation.Keep <methods>;
}
-keepclasseswithmembers class * {
@android.support.annotation.Keep <fields>;
}
-keepclasseswithmembers class * {
@android.support.annotation.Keep <init>(...);
}
2.ASèªå¸¦çé
ç½®ææ¡£è¿æ¯ä¸å¤çï¼æ们è¿éè¦å å
¥å¦ä¸é
ç½®
è¿éåªå±ç¤ºåºæ¬æä½ï¼å¨å®é
å¼åä¸å¯è½éè¦æ´å¤ä¾èµï¼è¦æ ¹æ®å
·ä½æ
åµå¼å
¥èªå·±éè¦çä¾èµå
#ä¸é¢ä»£ç ä¸çxxæ¯ææ个人çé
置路å¾,æ¶å个人信æ¯ï¼è¿é以xx代æ¿
#å¼å
¥ä¾èµå
rt.jarï¼jdkè·¯å¾ï¼
-libraryjars /xxx/xx/xx/jdk1.8.0_77.jdk/Contents/Home/jre/lib/rt.jar
#å¼å
¥ä¾èµå
android.jar(android SDKè·¯å¾)
-libraryjars /xx/xx/xx/Android/sdk/platforms/android-24/android.jar
#å¦æç¨å°Appcompatå
ï¼éè¦å¼å
¥
-libraryjars /xxx/xxx/xx/xxx/MyApplication/library-banner/build/intermediates/exploded-aar/com.android.support/appcompat-v7/24.1.1/jars/classes.jar
-libraryjars /xx/xx/xx/xx/MyApplication/library-banner/build/intermediates/exploded-aar/com.android.support/support-v4/24.1.1/jars/classes.jar
#忽ç¥è¦å
-ignorewarnings
#ä¿è¯æ¯ç¬ç«çjar,没æä»»ä½é¡¹ç®å¼ç¨,å¦æä¸åå°±ä¼è®¤ä¸ºæ们ææç代ç æ¯æ ç¨ç,ä»èæææç代ç å缩æ,导åºä¸ä¸ªç©ºçjar
-dontshrink
#ä¿æ¤æ³å
-keepattributes Signature
3.å å ¥èªå·±ä¸æ³æ··æ·çé ç½®æ ¹æ®å®é éæ±é ç½®
-keep class com.cocolove2.library_banner.view.**{*;}
å¨å½ä»¤è¡æ§è¡å½ä»¤æ··æ·Jarï¼æ示BUILD SUCCESFUL表示æåï¼
//mac./gradlew makeJar//windowsgradlew makeJar
示ä¾å±ç¤º
æè¿é以混æ·library-banner åºä¸ºä¾
1.é¦å æ们è¦ççä¸æ们çbuildToolçé ç½®,å¦ä¸å¾ï¼
buildTools#Gradle
å¦æä½ ç项ç®çbuildTool#Gradleé
ç½®å¦ä¸å¾ï¼é£ä½ æå
æ··æ·ç第ä¸æ¥å·²ç»å®æäºï¼èå¦æéæ©çæ¯æ¬å°çgradleï¼å½ä½ æ§è¡./gradlew
makeJaræ¶ï¼ç³»ç»ä¼å
ä¸è½½gradle,ä¸ç¥æ¯ç½ç»ä¸å¥½è¿æ¯è¢«å¢æäºï¼ææ¯æ¬¡å°è¯ä¸è½½é½æ¯çäºå¾ä¹
ï¼æç»ä¹æ²¡æåã
2.å¨é¡¹ç®ç®å½ä¸æ§è¡./gradlew makeJaræå è¾åºæ··æ·çJarï¼å¦ä¸å¾
3.æ¥çæ··æ·ç»æ.
æ··æ·æ¥é解å³åæ³ä¸ªäººéå°ç
#logæ示缺å°ä¾èµJar,æè è·¯å¾ä¸å¯¹proguard5.2.1ä¸è½½å°å
é 读