背景知識
這幾天接了一個需求,要把項目整個打包作爲SDK給別的公司用
首先想到的就是採用jar包的形式把代碼打包,再把資源文件拷進ja包r裏,用反射的方式去獲取資源id
但是由於時間緊迫,要求當天就要有產出,無奈只能先行百度下,看下有沒有什麼便捷的方案,無意當中就看到aar包,經過試驗完美符合預期,所以寫一篇博文用於記錄,便於以後回憶
使用工具
Android Studio
使用說明
首先使用Android Studio建立一個lib項目
然後把你的項目代碼和資源都移植到lib module裏
然後配置項目屬性,把你的項目裏的簽名(用於第三方分享或者登陸)還有混淆文件配置到lib module中
signingConfigs {
config1 {
keyAlias ''
keyPassword ''
storeFile file('')
storePassword ''
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config1
}
}
然後
點擊assembleRelease腳本
你會在module目錄下的build/outputs/aar下面找到一個release.aar
然後你把這個壓縮包解壓,把裏面的classes.jar作爲lib導入到一個項目中(Android Studio自帶反編譯功能)查看下項目代碼是否已經混淆,混淆的程度是否滿足你的預期(辛辛苦苦寫的代碼 隨隨便便給別人拿走可不好),記住你提供的入口API文件千萬不要混淆,不然別人在引用的時候會找不到該類,確認無誤了,可以寫一個小demo,放一個button,點擊事件裏就填上你提供的API,看下是否能正確跳轉或者調用
順便補充一點,如果怕和別的項目在資源ID:比如string,dimen上產生衝突,可以寫一個腳本,在你的資源名稱前加上你公司或者項目特有的前綴
發佈aar
把你要發佈的aar,和該aar說依賴第三方的庫整理好,一起給要新的項目,新的項目如果已經有依賴那些第三方的庫,則無需重新依賴,對於沒有依賴的,就要配置依賴關係,這個就是第一步剝離依賴的好處,避免多餘的依賴,可以把你的jar包放在aar包裏,也沒有問題
在新的項目的application模塊的libs文件夾下面放上該aar文件,同時在該模塊對應的build.gralde中加上下面的配置
dependencies {
compile(name:'mylibrary-release', ext:'aar')
}
repositories{
flatDir{
dirs 'libs'
}
}
好了一個小時不到,你的完整項目已經可以被別的公司快捷使用,代碼也混淆了,保持了應有的私密性
如果你覺得對你有幫助,需要轉載,請註明出處