Android Studio剛發布,相信很多朋友和我一樣,開始嘗試用其開發項目,但新東西總會遇到這樣或那樣的問題,其中令我頭的就是引入第三方的jar包無法編譯的問題,因為是新東西,相關的信息都比較少,解決問題令我花費了相當長的時間,為了避免各位同仁再走彎路,在此將解決步驟列出來。
1、將jar包放入項目里的libs文件夾中。
2、在project選中jar包點擊右鍵"Add as library"。
3、這兩步是網上比較容易找到的,但此時項目仍然是無法正常編譯的,這時需要在項目的build.gradle文件里的dependencies節加入 dependencies
{
compile files('libs/android-support-v4.jar')
compile files('libs/xxxx.jar')
}
4、此時項目正常編譯并運行了,但當你的代碼中真正創建了引用jar里的類實例時,有可能系統會拋出異常NoClassDefFoundError,這個時候可以按以下步驟操作:
? 進入命令提示符窗口。
? 定位到項目的根目錄,即build.gradle所在的目錄。
? 運行 "{android studio 安裝目錄}\sdk\tools\templates\gradle\wrapper\gradlew.bat" clean
?? 重新編譯運行項目
通過以上操作,應該可以解決問題。
前些日子eclipse突然全方面罷工,于是換了使用Android Studio。
然后在使用過程中,需要.jar和.so,遇到了些問題,下面總結下使用方法:
1、加入jar拿百度定位SDK來說,按照百度官方的文檔完成配置完成后,因為Android Studio使用的是gradle,所以需要在項目的build.gradle中添加jar包的配置。(注意,這里不是整個工作空間只是單個項目的build.gradle)打開后是下面這個樣子的:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath'com.android.tools.build:gradle:0.5.+'
}
}
apply plugin:'android'
repositories {
mavenCentral()
}
dependencies {
compile'com.android.support:support-v4:13.0.+'
}
android {
compileSdkVersion17
buildToolsVersion"17.0.0"
defaultConfig {
minSdkVersion8
targetSdkVersion16
}
}
然后在 dependencies{}中添加放置在libs文件夾下的名為xxxx.jar導入:
4dependencies {
compile'com.android.support:support-v4:13.0.+'
compile files('libs/xxxx.jar')
}
這樣配置之后,百度的位置信息還是一直沒有獲取到,最可能的原因就是.so文件沒有加載成功
2、加入.so:
(1)這個還與gradle版本有關系。在v0.3(可以從上面dependencies{?classpath 'com.android.tools.build:gradle:0.5.+'}中看到我的版本是v0.5)下可以在build.gradle中添加如下設置:
task copyNativeLibs(type: Copy) {
from(newFile(project(':MyProject').buildDir,'native-libs')) { include'**/*.so'}
intonewFile(buildDir,'native-libs')
}
tasks.withType(Compile) { compileTask -> compileTask.dependsOn copyNativeLibs }
clean.dependsOn'cleanCopyNativeLibs'
tasks.withType(com.android.build.gradle.PackageApplicationTask) { pkgTask ->
pkgTask.jniDirnewFile(buildDir,'native-libs')
}
(注意:代碼中的':MyProject'一定要換成你的項目名字哦)
因為我的不是v0.3所以我也沒有獲得想要的結果。希望使用v0.3的同學驗證上面方法是否能成功。該方法GitHub地址:地址
(2)0.5中我選擇的處理方法:
將所有需要使用的.so文件壓縮為.zip文件(zip中的文件目錄結構為:lib/armeabi/*.so)注意,一定要是這樣的路徑,lib不要寫成libs啊!然后將這個.zip文件重命名為armeabi.jar文件(我用的是so.jar),將該jar包添加到項目的libs文件下。在項目build.gradle中的添加jar文件的dependencies中刪除已添加的jar,包括compile 'com.android.support:support-v4:13.0.+'這個。更改為:
dependencies {
compile fileTree(dir:'libs', include:'*.jar')
}
雖然感覺上面的方法有些小變態,但是解決問題才是關鍵對不?
再詳細說一下:
最后的目錄結構
libs
^---|xxx.jar
^---|armeabi.jar
^---|lib
^---|armeabi
^---|xxx.so
剛開始使用ubuntu,IBus默認輸入法中特殊符號不會使用,只能形像到這里,希望能看懂。回公司補個截圖。先湊合看。
原文:http://my.oschina.net/zhibuji/blog/147441