中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

天地圖按照官方教程閃退的問題

發布時間:2020-09-07 06:49:04 來源:網絡 閱讀:382 作者:huohe2009 欄目:移動開發

按照官網的教程做,你的程序必然會閃退,對于初級開發人員來說,有些問題不說清楚是很麻煩的。


解決辦法是:在 MySxEqEmApp\app\src\main\ 目錄下添加 niLibs 目錄,把官網Demo的4個(或者所需的)文件拷貝下來,即可。

之所以需要.so文件,是因為Project引用的jar包中用到了NDK(c++),其余的暫時不要深究。 


解決參考:網上有很多百度地圖初始時閃退的問題,解決方法也可參考這個,想要探究原理的同學請進一步查閱其他資料。

  1. AndroidStudio如何引入so包

  2. Android學習筆記----天地圖API開發之UnsatisfiedLinkError

  3.  關于Android的.so文件你所需要知道的

文章1對這個問題有詳細的論述,全文摘錄如下:


—————————————————————————————————————————————————————————————

先說前提條件,我的AndroidStudio版本是2.2 Preview 3,版本是2.1的同學應該也是一樣的。

然后說結論吧,有些同學可能趕著做項目:

結論:

so包應該放在相應模塊(比如app模塊)下的src目錄下的main目錄下的jniLibs目錄。

注意是jniLibs,最后邊有個s,不是jniLib,并且L要大寫。如果你在src/main目錄中看不到jniLibs目錄,那你只需要自己建一個這個目錄就可以了,然后把你的so包按編譯平臺分類拷貝進去就可以了。然后呢?然后就完了,就這樣就可以了,因為系統默認就會去這個目錄中找對應的so包。如下圖所示:

接下來有興趣的同學可以了解下為什么是這樣。

也許有人說,so包應該跟jar包一樣唄,放在對應模塊的libs目錄下,eclipse就是這樣的。有這么簡單嗎?答案是:NO

原理:

其實在AndroidStudio中,我們之所以可以把jar包放在對應模塊的libs目錄下,比如app模塊(也就是通常意義下的主工程了)的libs目錄中,而不需要再去配置build.gradle文件,就可以正常使用這些jar包,是因為在AndroidStudio中新建項目時,系統已經在默認為我們配置好了gradle,如果仔細看模塊下的build.gradle文件的話,一般會有這么一句:

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}

看到了吧,這句就是告訴gradle,我們的第三方jar包在libs目錄下,如果沒有這一行配置,那么理論上我們把jar包直接放在libs目錄下其實是不行的,只不過新建項目時系統已經為我們配好了。這里libs是個相對路徑,因為我們的build.gradle文件本身就在app模塊下,那么這里的libs當然也就是指app模塊下的libs,其實build.gradle文件中所有的路徑都可以寫相對路徑,我們下邊講的so包的路徑也是只寫相對路徑就可以了。

OK,言歸正傳,現在知道jar包的引入原理了,那么so包為什么要放在那么奇怪的目錄下?能不能放在任意一個自定義的目錄呢?當然是可以的。

其實在build.gradle中,默認會有一些這樣的配置:

sourceSets {
main {
jniLibs.srcDirs = ['src/main/jniLibs']
aidl.srcDirs = ['src/main/aidl']
}
}
這些配置在你新建工程之后,在build.gradle文件中默認是沒有的,因為默認就是這樣的,當然也就不寫也可以,當然你寫出來也沒錯。意思是so包就去src/main/jniLibs目錄下找,aidl文件默認就到src/main/aidl目錄下找。。。當然還有許多其它的配置,你還可以配置你的AndroidManifest.xml文件在哪里,還可以配置你的Java代碼在哪里,如果你不配的話都會有一個默認值,這里只是以jniLibs和aidl為例而已。

看到這里你應該就明白了,為什么我們把so包直接放到src目錄下的main目錄下的jinLibs目錄就可以了,而不需要配置gradle文件了,因為系統默認就會到這個目錄下找,如果你想把so包放在一個你喜歡的地方,比如直接放在app目錄下的myJniLibs目錄下,那你只需要把上面內容改成:

sourceSets {
main {
jniLibs.srcDirs = ['myJniLibs']
aidl.srcDirs = ['src/main/aidl']
}
}
這樣就可以了。明白了原理,似乎一切都明了了,同理,如果不想把aidl文件放在默認目錄下,也可以改aidl.srcDirs的值,如果不想把java代碼放在默認目錄,就可以改java.srcDirs的值,如果不想把資源文件放在默認目錄下,就可以改res.srcDirs的值。。。還有幾個,同學們慢慢去研究吧,如果你想把目錄結構改的跟eclipse下的工程一樣,就改這里的值就可以,不一一細說了。

—————————————————————————————————————————————————————————————


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

循化| 台安县| 延安市| 浑源县| 泰宁县| 友谊县| 东乌| 乌审旗| 阿勒泰市| 钟祥市| 塘沽区| 茂名市| 新宁县| 沙坪坝区| 武威市| 正镶白旗| 上蔡县| 都匀市| 裕民县| 英吉沙县| 搜索| 大厂| 元朗区| 朔州市| 盐城市| 兴和县| 额济纳旗| 龙江县| 文化| 呼伦贝尔市| 故城县| 兴城市| 广西| 平和县| 浦江县| 清涧县| 巨野县| 隆德县| 兰考县| 纳雍县| 图木舒克市|