鍍金池/ 教程/ Android/ Kotlin與OSGi
Kotlin內(nèi)聯(lián)函數(shù)
Kotlin開發(fā)環(huán)境設(shè)置(Eclipse)
Kotlin調(diào)用Java代碼
Kotlin使用Ant
Kotlin編譯器插件
Kotlin相等性
Kotlin JavaScript模塊
編寫Kotlin代碼文檔
Kotlin返回和跳轉(zhuǎn)
Kotlin異常處理
Kotlin可見性修飾符
Kotlin委托
Kotlin委托屬性
Kotlin編碼約定/編碼風(fēng)格
Kotlin基礎(chǔ)語法
使用Kotlin進(jìn)行服務(wù)器端開發(fā)
Kotlin接口
Kotlin反射
Kotlin類型別名
Kotlin枚舉類
Kotlin當(dāng)前版本是多少?
Kotlin注解處理工具
Kotlin類型的檢查與轉(zhuǎn)換
Kotlin屬性和字段
Kotlin類型安全的構(gòu)建器
Kotlin相比Java語言有哪些優(yōu)點(diǎn)?
Kotlin JavaScript反射
Kotlin 是什么?
Kotlin泛型
Kotlin慣用語法
Kotlin與OSGi
Kotlin數(shù)據(jù)類型
Kotlin是面向?qū)ο筮€是函數(shù)式語言?
Kotlin動(dòng)態(tài)類型
Kotlin協(xié)程
Kotlin操作符符重載
Kotlin使用Gradle
Kotlin密封類
Kotlin兼容性
Kotlin集合
Kotlin調(diào)用JavaScript
Kotlin null值安全
Kotlin函數(shù)
Kotlin開發(fā)環(huán)境設(shè)置(IntelliJ IDEA)
Kotlin嵌套類
Kotlin控制流程
Kotlin和Java語言比較
Kotlin 與 Java 語言兼容嗎?
Kotlin教程
Kotlin類和繼承
Kotlin對(duì)象表達(dá)式和對(duì)象聲明
JavaScript中調(diào)用Kotlin
Kotlin區(qū)間/范圍
Kotlin數(shù)據(jù)類
Kotlin lambda表達(dá)式
Kotlin是免費(fèi)的嗎?
Kotlin包
使用Kotlin進(jìn)行Android開發(fā)
在Java中調(diào)用Kotlin代碼
Kotlin this表達(dá)式
使用Kotlin進(jìn)行JavaScript開發(fā)
Kotlin擴(kuò)展
Kotlin解構(gòu)聲明
Kotlin注解
Kotlin使用Maven

Kotlin與OSGi

要啟用 Kotlin OSGi 支持,你需要引入 kotlin-osgi-bundle 而不是常規(guī)的 Kotlin 庫。
建議刪除 kotlin-runtime、 kotlin-stdlibkotlin-reflect 依賴,因?yàn)?kotlin-osgi-bundle
已經(jīng)包含了所有這些。當(dāng)引入外部 Kotlin 庫時(shí)你也應(yīng)該注意。
大多數(shù)常規(guī) Kotlin 依賴不是 OSGi-就緒的,所以你不應(yīng)該使用它們,且應(yīng)該從你的項(xiàng)目中刪除它們。

Maven

將 Kotlin OSGi 包引入到 Maven 項(xiàng)目中:

   <dependencies>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-osgi-bundle</artifactId>
            <version>${kotlin.version}</version>
        </dependency>
    </dependencies>

從外部庫中排除標(biāo)準(zhǔn)庫(注意“星排除”只在 Maven 3 中有效)

        <dependency>
            <groupId>some.group.id</groupId>
            <artifactId>some.library</artifactId>
            <version>some.library.version</version>

            <exclusions>
                <exclusion>
                    <groupId>org.jetbrains.kotlin</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

Gradle

kotlin-osgi-bundle 引入到 gradle 項(xiàng)目中:

compile "org.jetbrains.kotlin:kotlin-osgi-bundle:$kotlinVersion"

要排除作為傳遞依賴的默認(rèn) Kotlin 庫,你可以使用以下方法

dependencies {
 compile (
   [group: 'some.group.id', name: 'some.library', version: 'someversion'],
   ……) {
  exclude group: 'org.jetbrains.kotlin'
}

FAQ

為什么不只是添加必需的清單選項(xiàng)到所有 Kotlin 庫

盡管它是提供 OSGi 支持的最好的方式,遺憾的是現(xiàn)在做不到,是因?yàn)椴荒茌p易消除的所謂的
“包拆分”問題并且這么大的變化
不可能現(xiàn)在規(guī)劃。有 Require-Bundle 功能,但它也不是最好的選擇,不推薦使用。
所以決定為 OSGi 做一個(gè)單獨(dú)的構(gòu)件。