android studio 匯入外部庫檔案,以及將專案中module變成library引用依賴
阿新 • • 發佈:2020-12-05
一:匯入如百度地圖等的外部類。
步驟:1.首先 將androidstudio專案顯示切換到 project 狀態顯示專案
2.然後新增.jar檔案,將所有的.jar檔案放入libs資料夾內(libs資料夾就在專案資料夾下),然後在引入的.jar檔案上右鍵然後點選 Add As Library... OK jar檔案引入。
3.新增.so檔案,在專案下的src目錄下的main目錄下新建jniLibs資料夾,然後將so檔案連帶著他外面的資料夾整個複製到jniLibs資料夾下(注意:so檔案不能直接存在於jniLibs資料夾下,需要存在於如armeabi等檔案中放入jniLibs資料夾下),倒入檔案後在該檔案的build.gradle中新增。(為了保證不出錯,可以將.jar檔案放入JinLibs將so檔案放入libs檔案中,使得libs跟jniLibs資料夾下都存在so跟jar。)
sourceSets{ main(){ jniLibs.srcDirs = ['libs'] } }
程式碼。具體放入位置如下:
apply plugin: 'com.android.library' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { minSdkVersion 11 targetSdkVersion 23 versionCode 1 versionName"1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } sourceSets{ main(){ jniLibs.srcDirs = ['libs'] } } } dependencies { compile fileTree(dir:'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' compile files('libs/BaiduLBS_Android.jar') }
現在就可以使用外部類的方法了。
二:將同項目的module作為依賴包引用
1.選擇你想作為library的module。選擇他的build.gradle檔案將最上方的程式碼apply plugin: 'com.android.application'改為apply plugin: 'com.android.library'。然後將下面的程式碼刪去位置為:android下的defaultConfig下的applicationId "frame.myc.com.mycframe"。刪除後代碼為
android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { minSdkVersion 11 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } sourceSets{ main(){ jniLibs.srcDirs = ['libs'] } } }
2.為主檔案新增依賴 mac下使用以下操作:點選file->project structure左邊的module下選擇你的主工程,然後右邊點選dependencies,點選下方或者右方的+點開後在三個選項中選擇module dependency,在彈出介面選擇你剛剛修改作為library的midule檔案 ok了。
其實最簡單的方法就是剛開始建立module的時候就作為library來新建。仔細去新建一個module來體會一下,在選擇模式的時候選擇library就可以啦
出現錯誤:當你的程式需要引用兩個及以上的module library或者其他的jar包是出現錯誤型別如下
Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'. > com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK org/apache/log4j/xml/log4j.dtd File1: /Users/minyuchun/androidwork/projectstudio/StarFaceFrame/app/build/intermediates/exploded-aar/StarFaceFrame/facelibrary/unspecified/jars/classes.jar File2: /Users/minyuchun/androidwork/projectstudio/StarFaceFrame/app/build/intermediates/exploded-aar/StarFaceFrame/rylibrary/unspecified/jars/classes.jar
出現上述錯誤的原因是因為 你在引用的labrary中多個存在相同的包導致在打包是衝突 解決方式如下,在android下的 寫
packagingOptions{ exclude 'org/apache/log4j/xml/log4j.dtd' }
''單引號中的內容為上述錯誤中APK後面的內容,按照上述的樣式填寫在 主的app.gradle 中,重新編譯後執行,執行後還可能出現相同的錯誤 這時候請注意錯誤後面APK中的內容 此時應該與前一次出現的內容不相同。如果是這樣的話繼續按照上述的方式增加,迴圈最後就沒有這個錯誤了。
轉自:https://www.cnblogs.com/minyc/p/myc201605231154.html