aar包 生成 以及相關處理

 

這個上個月老闆提的需求, 如今想起來了,總結下將本身的工程轉換成aar包時的過程,以及碰到的一些問題.java

 

關於aar包,能夠參考:http://blog.csdn.net/maosidiaoxian/article/details/41578499node

在Android Studio 環境下android

將原來的項目的 build.gradle 中的api

apply plugin: 'com.android.application'

替換成app

apply plugin: 'com.android.library'

那麼同時, 框架

    defaultConfig {
//        applicationId "cn.feezu.app"  //library不能有applicationId,會報錯
    }

最坑爹的是,原來工程中處理點擊事件,通常都是用 switch... case... 語句,如今也不能用了,必須所有替換成if...else...語句,貌似是說在library中的資源id都不是final 的了, 全部不能用switch...case....了, 這個解釋我不能接受.ide

[2016/8/11 update]佈局

用if替代switch -case, 能夠參考 http://blog.csdn.net/maosidiaoxian/article/details/41576721gradle

以及:http://tools.android.com/tips/non-constant-fieldsui

實驗了下,以下圖,能夠直接替換

而後在project下新建一個module, 做爲 application,

在這個module的build.gradle中增長依賴

dependencies { 
    compile project(':app') 
}

而後用這個module 運行下, 成功以後, 在做爲library的module 的build\outputs\aar目錄下會生成2個aar包

可能名字會是 app-debug.aar   app-release.aar, 

這個就是須要的東西了. 用這個release的包,

====================可恥的分割線===================================

新建一個project, 將須要的aar包放入到libs下,

1. 在build.gradle中增長依賴

dependencies {
    compile(name: 'app-release', ext: 'aar')//導入app2.aar並執行
}

同時必須指定aar包的爲本地倉庫:

repositories {
    flatDir {
        dirs 'libs' //this way we can find the .aar file in libs folder
    }
}

 

2. 而後一個問題就是在aar包中須要的依賴庫,可能須要也加入到目標工程的依賴中,

好比我在原工程中使用了百分比佈局的庫依賴, 若是在目標工程中不添加這個百分比佈局庫的依賴,會爆出一個

Error:(38) No resource identifier found for attribute 'layout_marginTopPercent' in package 'cn.wxn.hainanapp4'

的錯,在目標工程中加上原工程的添加的依賴就不會報錯了

3. 再一個問題就是 樣式導入, 

   在原工程中使用到的樣式,都須要複製到目標工程的樣式文件中,以及樣式應用到的資源文件或者字段,若是原工程由大量的樣式文件以及配套的資源文件,這個也是一個很大的工做量了.固然從另外一個方面將, 資源文件徹底暴露, 也方便目標工程和原工程的樣式統一處理.

[2016/08/19更新]

在android studio 2.0裏,發現不用導入aar包中的樣式文件了

而後另一個問題,就是若是工程中用到了butterknife這樣的用註解來控制界面元素的框架,也是不能使用的。只能去掉這個框架,由於註解也是須要依賴元素id是final的才能夠用。

4. 另外:

對應像個人aar工程中使用到了百度,而且在aar包的清單文件中註冊了百度key,

那麼,aar包中的清單文件中註冊的百度key是無效的,須要目標工程中從新申請對應包名的百度key,並是同tool:replace進行清單整合式替換aar包中的清單配置

在目標的清單文件中,須要增減xmlns:tools

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.wangxn.sdkdemo">

而後將申請的百度key填寫進來,須要增長tools:node屬性

<meta-data
     tools:node="replace"
     android:name="com.baidu.lbsapi.API_KEY"
     android:value="baidukey*****************baidukey" />

這裏有些參考內容:

http://my.oschina.net/u/990728/blog/548453

相關文章
相關標籤/搜索