Ⅰ 怎麼讓android studio的編譯的aar防止反編譯
1、 簡述
在比較大的 Android 項目的開發中,我們經常會遇到工程、jar 包等等之間相互引用的方式。一般我們通過在 gradle 文件中配置依賴來解決
通用配置
Gradle 的一些基本依賴配置方式如下:
compile fileTree(dir: 'xxx', include: ['*.jar', "*.xxx"]):將某個目錄下所有符合擴展名的文件作為依賴;
compile 'com.xx.xx:ProjectName:Version':配置Maven` 庫作為依賴;在 Maven 庫中心 可以搜索自己想用的庫進行依賴;
compile project(':AnotherMole'):配置另一個 Mole 作為本 Mole 的依賴,被依賴的 Mole 必須被導入到當前工程中;
compile files('xxx.jar'):配置某個 jar 包作為依賴。
看起來不錯,基本通用的配置都已經存在了。一般對於中等小型的工程,這種開發方式完全沒有問題。但是有時候 A 和 B 兩個工程,想同時引用另一個公共的 Mole C,而這個 Mole 可能是一個比較復雜的 Android Mole,可能包含了一些主題、UI 、資源文件等等,這時候,如果用 Mole 依賴的方式來配置,不免有些困難,因為 A 和 B 都要導入 C,而且要隨時關注 C 的更改。
好在 Android Studio 提供了 aar 庫的打包方式,我們可以把 C 作為 library 進行打包,輸出 aar 文件,然後在 A 和 B 中,配置 aar 庫依賴,就可以解決。
2、aar 文件簡介
要輸出 aar 文件,必須將 Mole 配置為 library
輸出 aar : apply plugin: 'com.android.library';
輸出 apk :apply plugin: 'com.android.application'。
將 Mole 配置為 library 後,構建輸出一個 aar 文件,根據渠道和 BuildType 的不同,在相應的目錄下可以找到。比如對 BuildType 為 debug 的配置,輸出為:[MoleName]/build/outputs/aar/[MoleName]-debug.aar。一份 aar 文件其實就是一份 zip 包,和 jar 不同的是,它將一些資源文件、第三方庫文件、so 文件等等都打包在內,而代碼文件編譯後壓縮在在 classes.jar 中。
3、導入 aar 的方式引用
這種方式比較簡單,打開 Project Structure,添加一個新 Mole,然後選擇 Import *.JAR or *.AAR Package 的方式導入
導入後,在你的工程下面,會生成一個文件夾,裡面是 aar 文件以及 Android Studio 的配置文件。
接著可以在 gradle 中配置依賴了,其他 Mole 可以引用這個 Mole 了,依賴方式使用 compile project 的方式即可。
缺點:被依賴的 aar 無法 F3 跟進去,無法看到資源文件內容以及目錄層級等等缺陷。
4、使用配置依賴的方式引用
gradle 其實還有另一種依賴可以引用 aar:
compile(name: 'xxx', ext: 'aar')。
首先需要將 aar 文件放入引用 Mole 的 libs 目錄下,和一般的 jar 文件類似。然後在 gradle 配置文件中把 libs 目錄加入依賴:
repositories
flatDir {
dirs 'libs'
}
}
接著在 gradle 的依賴配置中加入 compile(name: 'xxx', ext: 'aar') 這一句,依賴即可關聯完畢。構建一下工程,在 Mole 的build/intermediates/exploded-aar 目錄下,可以看到有一些臨時文件生成
被導入 aar 生成的臨時文件
Android Studio 安裝反編譯插件後,可以通過 F3 跟進到 class 文件裡面,如果你有被依賴 Mole 的源代碼的話,還可以 Attach Source 關聯源代碼查看。另外,可以很方便的查看 aar 中的資源文件。
另外,這種依賴方式更新 aar 後,生成的臨時文件也會隨之變動,不用擔心改動不同步的問題。
Ⅱ android 怎樣將mole打包成aar
1.aar包是Android studio下打包android工程中src、res、lib後生成的aar文件,aar包導入其他android studio 工程後,其他工程可以方便引用源碼和資源文件
2.生成aar包步驟:
①.用android studio打開一個工程,然後新建一個Mole,新建Mole時候選擇Android Library,後面按新建普通工程操作
②.新建Mole 類型為android Library 後如下圖所示
③.在新建的Mole中編寫完代碼後,接下來編譯整個工程後就會自動生成aar包,包的路徑在新建的Mole ==》 build ===》outputs ==>aar目錄下。 如圖
3.其他androidstudio工程引用aar包
①.將aar包復制到lib目錄下
②.配置build.gradle文件:
加入
repositories {
flatDir {
dirs 'libs'
}
compile(name:'camerascan-1.0', ext:'aar')
完整的配置文件:
[java] view plain
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.geenk.testcamerascanarr"
minSdkVersion 11
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
repositories {
flatDir {
dirs 'libs'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile(name:'camerascan-1.0', ext:'aar')
compile 'com.android.support:appcompat-v7:22.2.0'
}
Ⅲ 如何將android studio整個工程編譯成aar
要輸出aar文件,必須將Mole配置為library,在gradle文件中如下:輸出aar:applyplugin:'com.android.library';輸出apk:applyplugin:'com.android.application'。將Mole配置為library後,構建輸出一個aar文件,根據渠道和BuildType的不同,在相應的目錄下可以找到。比如對BuildType為debug的配置,輸出為:[MoleName]/build/outputs/aar/[MoleName]-debug.aar。一份aar文件其實就是一份zip包,和jar不同的是,它將一些資源文件、第三方庫文件、so文件等等都打包在內,而代碼文件編譯後壓縮在在classes.jar中。比如:3、導入aar的方式引用這種方式比較簡單,打開ProjectStructure,添加一個新Mole,然後選擇Import*.JARor*.AARPackage的方式導入:導入後,在你的工程下面,會生成一個文件夾,裡面是aar文件以及AndroidStudio的配置文件。接著可以在gradle中配置依賴了,其他Mole可以引用這個Mole了,依賴方式使用compileproject的方式即可。缺點:被依賴的aar無法F3跟進去,無法看到資源文件內容以及目錄層級等等缺陷。4、使用配置依賴的方式引用gradle其實還有另一種依賴可以引用aar:compile(name:'xxx',ext:'aar')。首先需要將aar文件放入引用Mole的libs目錄下,和一般的jar文件類似。然後在gradle配置文件中把libs目錄加入依賴:?12345repositories{flatDir{dirs'libs'}}接著在gradle的依賴配置中加入compile(name:'xxx',ext:'aar')這一句,依賴即可關聯完畢。構建一下工程,在Mole的build/intermediates/exploded-aar目錄下,可以看到有一些臨時文件生成:看起來完全是引用aar的解壓版本。AndroidStudio安裝反編譯插件後,可以通過F3跟進到class文件裡面,如果你有被依賴Mole的源代碼的話,還可以AttachSource關聯源代碼查看。另外,可以很方便的查看aar中的資源文件。另外,這種依賴方式更新aar後,生成的臨時文件也會隨之變動,不用擔心改動不同步的問題。
Ⅳ Android導出aar時嵌套引用有關問題怎麼解決
新建一個Demo項目 2 新建好的項目結構如下圖: 其中app是我們的主要mole, libs下存放外部的library build.gradle是配置App mole的,接下來主要對其操作。 3 復制外部aar包到libs目錄下。 4 修改build.gradle 配置文件: 1:添加 repositories flatDir { dirs 'libs' }} 這個是添加一個本地倉庫,並把libs目錄作為倉庫的地址。 5 2:修改dependencies: 添加一行: compile(name:'usericonchooserutil', ext:'aar') 其中name就是libs目錄下usericonchooserutil.aar文件名稱, ext,就是usericonchooserutil.aar的擴展名 6 重新編譯項目: 從工具欄依次選擇:"Build"-->"rebuild project" 7 編譯完成後,在app/build/intermediates/exploded-aar/ a就可以看見我們引用的aar包內容了,其中jar目錄下是jar文件,res下是我們aar包里的資源文件。 8 這個時候我們就可以在項目中使用第三包的類了
Ⅳ android studio 怎麼打aar包
1.aar包是android studio下打包android工程中src、res、lib後生成的aar文件,aar包導入其他android studio 工程後,其他工程可以方便引用源碼和資源文件
2.生成aar包步驟:
①.用android studio打開一個工程,然後新建一個Mole,新建Mole時候選擇Android Library,後面按新建普通工程操作
3.其他androidstudio工程引用aar包
①.將aar包復制到lib目錄下
②.配置build.gradle文件:
加入
repositories {
flatDir {
dirs 'libs'
}
compile(name:'camerascan-1.0', ext:'aar')
完整的配置文件:
詳細教程詳細教程
Ⅵ android studio 引用aar怎麼編譯不了
1、 簡述
在比較大的 Android 項目的開發中,我們經常會遇到工程、jar 包等等之間相互引用的方式。一般我們通過在 gradle 文件中配置依賴來解決,比如:
<img alt="通用配置" src="http://www.2cto.com/uploadfile/Collfiles/20150519/20150519085924119.png" title="" http:="" www.2cto.com="" kf="" ware="" vc="" "="" target="_blank" class="keylink" style="padding: 0px; margin: 0px auto; list-style: none; display: block; width: 630px; height: 198.454680534918px;">++o7q9q8SzuPbEv8K8z8LL+dPQt/u6z8Cp1bnD+7XEzsS8/tf3zqrSwMC1o7sgPGNvZGU+M8L2NvZGU+TWF2ZW5gIL/i1/fOqtLAwLWju9TaIE1hdmVuIL/i1tDQxCC/ydLUy9HL99fUvLrP69PDtcS/4r340NDSwMC1o7sgPGNvZGU++/Nf3zqrSwMC1oaMNCjxwPr+CIMG9uPa5pLPMo6zP682syrHS/+NXiuPYgTW9kdWxlIL//vNKqtbzI6yBDo6y2+++YWFyPC9jb2RlPiC/4rXEtPKw/Le9yr2jrM7Sw8e/++/="2aar-文件簡介">2、aar 文件簡介
要輸出 aar 文件,必須將 Mole 配置為 library,在 gradle 文件中如下:
輸出 aar : apply plugin: 'com.android.library'; 輸出 apk :apply plugin: 'com.android.application'。
將 Mole 配置為 library 後,構建輸出一個 aar 文件,根據渠道和 BuildType 的不同,在相應的目錄下可以找到。比如對 BuildType 為 debug 的配置,輸出為:[MoleName]/build/outputs/aar/[MoleName]-debug.aar。一份 aar 文件其實就是一份 zip 包,和 jar 不同的是,它將一些資源文件、第三方庫文件、so 文件等等都打包在內,而代碼文件編譯後壓縮在在 classes.jar 中。比如:
3、導入 aar 的方式引用
這種方式比較簡單,打開 Project Structure,添加一個新 Mole,然後選擇 Import *.JAR or *.AAR Package 的方式導入:
導入後,在你的工程下面,會生成一個文件夾,裡面是 aar 文件以及 Android Studio 的配置文件。
接著可以在 gradle 中配置依賴了,其他 Mole 可以引用這個 Mole 了,依賴方式使用compile project 的方式即可。
缺點:被依賴的 aar 無法 F3 跟進去,無法看到資源文件內容以及目錄層級等等缺陷。
4、使用配置依賴的方式引用
gradle 其實還有另一種依賴可以引用 aar:
compile(name: 'xxx', ext: 'aar')。
首先需要將 aar 文件放入引用 Mole 的 libs 目錄下,和一般的 jar 文件類似。然後在 gradle 配置文件中把 libs 目錄加入依賴:
?
1
2
3
4
5
<code class="hljs bash">repositories {
flatDir {
dirs 'libs'
}
}</code>
接著在 gradle 的依賴配置中加入 compile(name: 'xxx', ext: 'aar') 這一句,依賴即可關聯完畢。構建一下工程,在 Mole 的 build/intermediates/exploded-aar 目錄下,可以看到有一些臨時文件生成:
看起來完全是引用 aar 的解壓版本。Android Studio 安裝反編譯插件後,可以通過 F3 跟進到 class 文件裡面,如果你有被依賴 Mole 的源代碼的話,還可以 Attach Source 關聯源代碼查看。另外,可以很方便的查看 aar 中的資源文件。
另外,這種依賴方式更新 aar 後,生成的臨時文件也會隨之變動,不用擔心改動不同步的問題。
5、總結
綜上,介紹了 aar 文件的生成方式,以及兩種 aar 依賴的方式,經過實戰檢驗,第二種通過配置 gradle 依賴的方式簡單易用,只需一行代碼即可搞定。
Ⅶ 怎麼生成aar包
-_-!!! jar吧…… 你用的什麼IDE?IDE都可以直接把工程壓縮成jar包,如果只用了JDK和記事本 那就在命令行敲jar命令了,和javac一樣
·javac – 編譯器,將源程序轉成位元組碼
·jar – 打包工具,將相關的類文件打包成一個文件
·javadoc – 文檔生成器,從源碼注釋中提取文檔
·jdb – debugger,查錯工具
·java – 運行編譯後的java程序(.class後綴的)
appletviewer:小程序瀏覽器,一種執行HTML文件上的Java小程序的Java瀏覽器。
Javah:產生可以調用Java過程的C過程,或建立能被Java程序調用的C過程的頭文件。
Javap:Java反匯編器,顯示編譯類文件中的可訪問功能和數據,同時顯示位元組代碼含義。
Jconsole: Java進行系統調試和監控的工具
Ⅷ 請教as導出的aar為什麼沒包含class文件
新建庫,File——New——New Mole——Android Library
編譯或生成工程,Build——Make Mole
獲取jar包,在build\intermediates\bundles\release目錄下的classes.jar
導入
把工程切換到Project視圖下,在app目錄下創建libs目錄
把jar拷貝到libs目錄
右鍵——Add to Library,Create Library默認選app。完成後jar包將變成如下這樣
Ⅸ 怎麼改變android studio中庫的aar文件的輸出目錄
在android studio中,有兩種方式:
一種是jar包,一種是帶資源文件的aar包,
jar:只包含了class文件與清單文件,不包含資源文件,如圖片等所有res中的文件。
aar:包含jar包和資源文件,如圖片等所有res中的文件
這里將著重介紹如何使用本地的aar包
新建一個Demo項目
Ⅹ 打包成aar的工程有第三方jar包,生成aar後,裡面的jar無法引用,怎麼解決
首先說明我使用的android studio
版本是0.4.因為現在android studio的bug還不較多,所以你的版本能不能正常使用我就不敢說了。
如果你只是單純的想使用actionbarsherlock的話,引用是十分簡單的dependencies {
// compile fileTree(dir: 'libs', include: '*.aar')
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
compile 'com.android.support:support-v4:18.0.+'
}
不過官方也出了一個兼容包,也非常的不錯。so 沒必要非得要使用actionbarsherlock。
然後重新編譯一下項目就行了。(ps
引用第三方jar包,請看我的第一行注釋,你只要新建一個libs的文件夾,然後把想要jar包復制到文件夾下,接著把注釋那句復制到build文件中,修改一下(*.aar
-> *.jar)就可以了)。
但是我們要是使用本地的自定義的aar文件,請看我的實現過程,如果你有更好的請轉告小弟共同進步
第一步 :生成aar文件
我的方法是通過maven-android-plugin來生成的,如果你使用過actionbarsherlock以前的版本的話,這個工具應該不陌生,如果你連maven
都不知道的話,建議好好學習一下maven,雖然現在gradle很火 ,但是我還是最喜歡maven。
關於具體生成步驟不久不詳細說了,文章最後貼出幾個網址供大家學習使用,放心我按順序給你們,只要一步一步的來絕對能成功
1 把你的maven版本提升到3.1.1
2 去github上clone下來
maven-android-sdk-deployer 這個項目
3 通過maven-android-plugin生成一個android項目
mvn archetype:generate \
-DarchetypeArtifactId=android-quickstart \
-DarchetypeGroupId=de.akquinet.android.archetypes \
-DarchetypeVersion=1.0.11 \
-DgroupId=your.company \
-DartifactId=my-android-application