Android Studio剛發(fā)布,相信很多朋友和我一樣,開(kāi)始嘗試用其開(kāi)發(fā)項(xiàng)目节榜,但新東西總會(huì)遇到這樣或那樣的問(wèn)題,其中令我頭的就是引入第三方的jar包無(wú)法編譯的問(wèn)題别智,因?yàn)槭切聳|西宗苍,相關(guān)的信息都比較少,解決問(wèn)題令我花費(fèi)了相當(dāng)長(zhǎng)的時(shí)間亿遂,為了避免各位同仁再走彎路浓若,在此將解決步驟列出來(lái)。
1蛇数、將jar包放入項(xiàng)目里的libs文件夾中挪钓。
2、在project選中jar包點(diǎn)擊右鍵"Add as library"耳舅。
3碌上、這兩步是網(wǎng)上比較容易找到的,但此時(shí)項(xiàng)目仍然是無(wú)法正常編譯的浦徊,這時(shí)需要在項(xiàng)目的build.gradle文件里的dependencies節(jié)加入 dependencies
{
compile files('libs/android-support-v4.jar')
compile files('libs/xxxx.jar')
}
4馏予、此時(shí)項(xiàng)目正常編譯并運(yùn)行了,但當(dāng)你的代碼中真正創(chuàng)建了引用jar里的類實(shí)例時(shí)盔性,有可能系統(tǒng)會(huì)拋出異常NoClassDefFoundError霞丧,這個(gè)時(shí)候可以按以下步驟操作:
? 進(jìn)入命令提示符窗口。
? 定位到項(xiàng)目的根目錄冕香,即build.gradle所在的目錄蛹尝。
? 運(yùn)行 "{android studio 安裝目錄}\sdk\tools\templates\gradle\wrapper\gradlew.bat" clean
?? 重新編譯運(yùn)行項(xiàng)目
通過(guò)以上操作,應(yīng)該可以解決問(wèn)題悉尾。
前些日子eclipse突然全方面罷工突那,于是換了使用Android Studio。
然后在使用過(guò)程中构眯,需要.jar和.so愕难,遇到了些問(wèn)題,下面總結(jié)下使用方法:
1、加入jar拿百度定位SDK來(lái)說(shuō)猫缭,按照百度官方的文檔完成配置完成后葱弟,因?yàn)锳ndroid Studio使用的是gradle,所以需要在項(xiàng)目的build.gradle中添加jar包的配置饵骨。(注意翘悉,這里不是整個(gè)工作空間只是單個(gè)項(xiàng)目的build.gradle)打開(kāi)后是下面這個(gè)樣子的:
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導(dǎo)入:
4dependencies {
compile'com.android.support:support-v4:13.0.+'
compile files('libs/xxxx.jar')
}
這樣配置之后,百度的位置信息還是一直沒(méi)有獲取到居触,最可能的原因就是.so文件沒(méi)有加載成功
2、加入.so:
(1)這個(gè)還與gradle版本有關(guān)系老赤。在v0.3(可以從上面dependencies{?classpath 'com.android.tools.build:gradle:0.5.+'}中看到我的版本是v0.5)下可以在build.gradle中添加如下設(shè)置:
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'一定要換成你的項(xiàng)目名字哦)
因?yàn)槲业牟皇莢0.3所以我也沒(méi)有獲得想要的結(jié)果轮洋。希望使用v0.3的同學(xué)驗(yàn)證上面方法是否能成功。該方法GitHub地址:地址
(2)0.5中我選擇的處理方法:
將所有需要使用的.so文件壓縮為.zip文件(zip中的文件目錄結(jié)構(gòu)為:lib/armeabi/*.so)注意抬旺,一定要是這樣的路徑弊予,lib不要寫(xiě)成libs啊开财!然后將這個(gè).zip文件重命名為armeabi.jar文件(我用的是so.jar)汉柒,將該jar包添加到項(xiàng)目的libs文件下。在項(xiàng)目build.gradle中的添加jar文件的dependencies中刪除已添加的jar责鳍,包括compile 'com.android.support:support-v4:13.0.+'這個(gè)碾褂。更改為:
dependencies {
compile fileTree(dir:'libs', include:'*.jar')
}
雖然感覺(jué)上面的方法有些小變態(tài),但是解決問(wèn)題才是關(guān)鍵對(duì)不历葛?
再詳細(xì)說(shuō)一下:
最后的目錄結(jié)構(gòu)
libs
^---|xxx.jar
^---|armeabi.jar
^---|lib
^---|armeabi
^---|xxx.so
剛開(kāi)始使用ubuntu,IBus默認(rèn)輸入法中特殊符號(hào)不會(huì)使用正塌,只能形像到這里,希望能看懂恤溶∨曳蹋回公司補(bǔ)個(gè)截圖。先湊合看咒程。
原文:http://my.oschina.net/zhibuji/blog/147441