Skip to content

クイックスタート

要件

sora-editor ライブラリをプロジェクトに組み込む前に、環境とビルド構成が以下の要件を満たしていることを確認してください。

  • JDK 17 以降で Gradle を実行します、
  • モジュールの最小 Android SDK バージョンは Android L (API 21) 以上です、
  • プロジェクトの Java ソース互換性とターゲット互換性は JavaVersion.VERSION_17 です。
Java コンパイルとターゲットの互換性の設定
Kotlin
android {
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }
}
// アプリで Kotlin が使用されている場合
// kotlin {
//     jvmToolchain(17)
// }
Groovy
android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
}
非 Gradle ビルド システムの場合

エディターはリソースを使用し、AAR ファイルで配布されます。 ビルド システムは AAR ファイルの処理をサポートする必要があります。

ビルド システムとして Gradle を使用していない場合、ビルドの問題に関連する情報は提供されません。

依存関係の追加

最新版:Maven Central

sora-editor ライブラリをアプリの依存関係に追加してください:

Kotlin
dependencies {
    implementation(platform("io.github.Rosemoe.sora-editor:bom:<versionName>"))
    implementation("io.github.Rosemoe.sora-editor:<moduleName>")
}
Groovy
dependencies {
    implementation(platform("io.github.Rosemoe.sora-editor:bom:<versionName>"))
    implementation 'io.github.Rosemoe.sora-editor:<moduleName>'
}

プレースホルダー <versionName><moduleName> を正しいバージョン名とモジュール名に置き換えてください。 プロジェクトに複数のモジュールを追加できます。

以下は、エディターで構文を強調表示するために TextMate 文法を使用したい人向けの例です。

Kotlin
dependencies {
    implementation(platform("io.github.Rosemoe.sora-editor:bom:0.23.2"))
    implementation("io.github.Rosemoe.sora-editor:editor")
    implementation("io.github.Rosemoe.sora-editor:language-textmate")
}
Groovy
dependencies {
    implementation(platform("io.github.Rosemoe.sora-editor:bom:0.23.2"))
    implementation 'io.github.Rosemoe.sora-editor:editor'
    implementation 'io.github.Rosemoe.sora-editor:language-textmate'
}
Kotlin
dependencies {
    val editorVersion = "0.23.2"
    implementation("io.github.Rosemoe.sora-editor:editor:$editorVersion")
    implementation("io.github.Rosemoe.sora-editor:language-textmate:$editorVersion")
}
Groovy
dependencies {
    def editorVersion = '0.23.2'
    implementation 'io.github.Rosemoe.sora-editor:editor:$editorVersion'
    implementation 'io.github.Rosemoe.sora-editor:language-textmate:$editorVersion'
}

NOTE

上のバッジから最新バージョン名を見つけるか、GitHub リリース ページにアクセスして完全なバージョンのリストを確認してください。

現在、利用可能なモジュール名は、editoreditor-lsplanguage-javalanguage-textmate、および language-treesitter です。 モジュールの詳細については、以下の表を確認してください。

🛠️付属のモジュール

モジュール紹介
editorエディターのコア フレームワークが含まれています。
editor-lspLanguage Server Protocol (略して LSP) を使用して言語を作成するための便利なツールのライブラリです。
language-javaJava の強調表示とオートコンプリートを含む言語ライブラリ。
language-textmate高度なハイライト分析ライブラリ。これを使用して、textmate 言語構成ファイルをロードし、このエディターに適用できます。内部実装は tm4e から取得されます。
language-treesitterエディターに tree-sitter サポートを提供します。これを使用すると、コードを抽象構文ツリーに迅速かつ段階的に解析することができ、正確な強調表示と補完の提供に役立ちます。このモジュールはトランジションとハイライトのサポートのみを提供することに注意してください。android-tree-sitter プロジェクトによって提供される Java バインディング ライブラリを感謝します。

🚧スナップショット ビルド

通常は、リリース済みバージョン を使用することをお勧めします。 ただし、最新のバグ修正や機能強化のためにナイトリー ビルドを使用したい場合もあります。

スナップショット ビルドの使用方法

スナップショット バージョンは、リポジトリ プッシュ時に自動的に公開されます。 現在リリースされているバージョン名と短いコミット ハッシュを組み合わせて、 スナップショット バージョン名を作成できます。

たとえば、最新リリースのバージョン名が '0.21.1'、 短いコミット ハッシュが '97c4963' の場合、バージョン名 '0.21.1-97c4963-SNAPSHOT' を使用して、スナップショット バージョンをプロジェクトにインポートできます。

追加の Maven リポジトリを追加する必要があることに注意してください:

Kotlin
repositories {
    // ...
    maven("https://s01.oss.sonatype.org/content/repositories/snapshots")
}

TextMate の脱糖(Desugar)を構成する

プロジェクトで language-textmate モジュールを使用し、Android 13 (API 33) のデバイスでアプリケーションを実行したい場合は、互換性の問題を回避するためにコア ライブラリの脱糖を有効にする必要があります。 それ以外の場合は、次のセクションに進んでください。

脱糖を有効にするには、以下の手順に従ってアプリケーション モジュールをセットアップしてください:

  • Desugar 依存関係を追加
Kotlin
dependencies {
    coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4") 
}
Groovy
dependencies {
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
}
  • コンパイルオプションの追加
Kotlin
android {
    compileOptions {
        isCoreLibraryDesugaringEnabled = true
    }
}
Groovy
android {
    compileOptions {
        coreLibraryDesugaringEnabled true
    }
}

ウィジェットを作成する

プロジェクトに editor モジュールが含まれていることを確認し、プロジェクトを Gradle ファイルと正常に同期してください。

メインのウィジェット クラスは io.github.rosemoe.sora.widget.CodeEditor です。 コード エディターは、XML コードまたは Java/Kotlin コードによって作成できます。

XML での使用

レイアウト XML ファイルでエディターを宣言します:

XML
<io.github.rosemoe.sora.widget.CodeEditor
    android:id="@+id/editor"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:text="Hello, world!"
    app:textSize="18sp" />

XML宣言で texttextSize を設定する必要はありません。

XML での使用法の詳細については、XML 属性 を参照してください。

NOTE

エディターの幅または高さに wrap_content を使用することはお勧めできません。 その場合、テキストを編集するときに、編集者は再レイアウトを要求する必要があり、おそらくラグが発生します。

Java/Kotlin コードでの使用

エディターを作成し、任意のビュー グループに追加するだけです。 任意の Activity コンテキストにいて、vgViewGroup インスタンスであると仮定します。

Kotlin
val editor = CodeEditor(this)
editor.setText("Hello, world!") // テキストの設定
editor.typefaceText = Typeface.MONOSPACE // 等幅書体(Monospace)を使用する
editor.nonPrintablePaintingFlags =
                CodeEditor.FLAG_DRAW_WHITESPACE_LEADING or CodeEditor.FLAG_DRAW_LINE_SEPARATOR or CodeEditor.FLAG_DRAW_WHITESPACE_IN_SELECTION // 印刷できない文字を表示する
vg.add(editor, ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT))
Java
var editor = new CodeEditor(this);
editor.setText("Hello, world!"); // テキストの設定
editor.setTypefaceText(Typeface.MONOSPACE); // 等幅書体(Monospace)を使用する
editor.setNonPrintablePaintingFlags(
                CodeEditor.FLAG_DRAW_WHITESPACE_LEADING | CodeEditor.FLAG_DRAW_LINE_SEPARATOR | CodeEditor.FLAG_DRAW_WHITESPACE_IN_SELECTION); // 印刷できない文字を表示する
vg.add(editor, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

構成できるその他の属性については、CodeEditor のメソッドと DirectAccessProps のフィールドを参照してください。

ご注意!

DirectAccessProps のすべてのフィールドが無効化されないと有効になるわけではありません。 @InvalidateRequired でマークされたフィールドを変更した後、エディターで invalidate() を呼び出します。

@UnsupportedUserUsage でマークされたメソッドとフィールドは使用しないでください。 これらは内部アクセスに対して表示されます。

ウィジェットの解放

CodeEditor インスタンスが使用されなくなった場合、その release() メソッドを呼び出して、リソースとエディターに提供されているバックグラウンド スレッドを解放する必要があります。 エラーを避けるために、エディタをリリースした後はエディタを使用しないでください。

Kotlin
override fun onDestroy() {
    super.onDestroy()
    editor?.release()
}
Java
@Override
protected void onDestroy() {
    super.onDestroy();
    if (editor != null) {
        editor.release();
    }
}

続くはどうしますか?...

言語 および カラー スキーム に移動して、エディターにプログラミング言語サポートとカスタム カラー スキームを装備します。

LGPL-2.1 ライセンスに基づいてリリース