[Android Studio] 關(guān)于*.SO壓縮問題

原文地址:
http://www.reibang.com/p/d784f4596420
http://blog.csdn.net/qq_24889075/article/details/70183861

記錄一天的苦逼啸胧,謹(jǐn)防再犯

方法一

由于項(xiàng)目需要使用到一個(gè)so庫(kù),于是開始加載so庫(kù),很普通的很常見的方式:
就是在Module的build.gradle中的android{}中添加如下代碼,然后將so文件放在libs目錄 即可

sourceSets { 
  main { 
  jniLibs.srcDirs = ['libs']  
  }
}

加的很完美,因?yàn)?strong>jniLibs已經(jīng)出現(xiàn)了,證明已經(jīng)加進(jìn)去了~ (在剛開始用AS的時(shí)候,網(wǎng)上有很多加so庫(kù)的方式急但,有真有假 很多人連測(cè)都沒測(cè)就發(fā)文章。記得看jniLibs是比較有效的方式搞乏,一直用到現(xiàn)在)

jniLibs

美美的運(yùn)行下程序波桩,報(bào)了一些錯(cuò)。大概意思就是沒有找到static的Native方法请敦,苦苦想了好久也沒想明白镐躲,于是試著換so名字,結(jié)果告訴我沒有找到so庫(kù)侍筛! 那么也就是說so庫(kù)被加載了萤皂,但是運(yùn)行不了里面的方法。這個(gè)問題在一年前其實(shí)也遇到過匣椰,后來規(guī)避過去了裆熙,沒想到人算不如天算啊。

方法二

此時(shí)'恰巧'CTO看見了我的問題窝爪,告訴我AndroidStudio是會(huì)將SO庫(kù)進(jìn)行壓縮的弛车。于是又換了另一個(gè)方法,大概思路是將so先打包成一個(gè)jar蒲每,然后加載jar。示例代碼如下:
同樣是在android{}下

task nativeLibsToJar(type: Zip, description: 'create a jar archive of the native libs') {
    destinationDir file("$projectDir/gen")
    baseName 'native-libs'
    extension 'jar'
    from fileTree(dir: 'libs', include: '**/*.so')
    into "lib"
}


sourceSets.main {
    jni.srcDirs = ['asjni']
    jniLibs.srcDir 'jnilibs'
}
tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn(nativeLibsToJar)
}

可以按照自己心情改的:
destinationDir 是生成目錄喻括,baseName 是文件的名字邀杏,extension 是文件后綴,nativeLibsToJar是方法名。

最后在去依賴jar即可望蜡,我是這樣依賴的:

compile fileTree(dir: "$projectDir/gen", include: 'native-libs.jar')

也可生成jar后手動(dòng)放到libs下唤崭,按照個(gè)人喜好即可。

有一點(diǎn)要注意的是脖律,一定要記得清除上次build的文件谢肾,也就是clean一下,不然如果按照常規(guī)方式加so庫(kù)然后在換成第二種方式再加載可能加載的還是第一次build中的文件小泉。這個(gè)問題耽誤了我很長(zhǎng)時(shí)間芦疏,導(dǎo)致我認(rèn)為第二種方式失效了。

注意!!!

并不是所有版本的AS都會(huì)自動(dòng)壓縮微姊,在公司電腦中第一種方式無法運(yùn)行酸茴,但是在家里的電腦 第一種方式完美運(yùn)行,并沒有被壓縮兢交。

懷疑1:是AS的設(shè)置里有個(gè)開關(guān)薪捍,設(shè)置是否壓縮之類的
懷疑2:AS版本導(dǎo)致

總之,多掌握個(gè)技巧也是好的配喳。這種錯(cuò)不要再犯第二次了~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末酪穿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子晴裹,更是在濱河造成了極大的恐慌昆稿,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件息拜,死亡現(xiàn)場(chǎng)離奇詭異溉潭,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)少欺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門喳瓣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赞别,你說我怎么就攤上這事畏陕。” “怎么了仿滔?”我有些...
    開封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵惠毁,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我崎页,道長(zhǎng)鞠绰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任飒焦,我火速辦了婚禮蜈膨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己翁巍,他們只是感情好驴一,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著灶壶,像睡著了一般肝断。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上驰凛,一...
    開封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天胸懈,我揣著相機(jī)與錄音,去河邊找鬼洒嗤。 笑死箫荡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的渔隶。 我是一名探鬼主播羔挡,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼间唉!你這毒婦竟也來了绞灼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤呈野,失蹤者是張志新(化名)和其女友劉穎低矮,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體被冒,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡军掂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了昨悼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝗锥。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖率触,靈堂內(nèi)的尸體忽然破棺而出终议,到底是詐尸還是另有隱情,我是刑警寧澤葱蝗,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布穴张,位于F島的核電站,受9級(jí)特大地震影響两曼,放射性物質(zhì)發(fā)生泄漏皂甘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一合愈、第九天 我趴在偏房一處隱蔽的房頂上張望叮贩。 院中可真熱鬧击狮,春花似錦佛析、人聲如沸益老。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)捺萌。三九已至,卻和暖如春膘茎,著一層夾襖步出監(jiān)牢的瞬間桃纯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工披坏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留态坦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓棒拂,卻偏偏與公主長(zhǎng)得像伞梯,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子帚屉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容