web-dev-qa-db-ja.com

スタンドアロンのJetifierを使用してAndroidXに移行するにはどうすればよいですか?

Jetifier ツールは、Android StudioにバンドルされているAndroidX移行ツールの一部として使用されます。ただし、ツールに問題がありますが、ここで概要を示します:- https://issuetracker.google.com/issues/113224601

特定のライブラリでJetifierを実行すると、エラーメッセージは次のようになります(1つの特定のライブラリが複数のユーザーに対してポップアップし続けます:org.Eclipse.jdt.core):

Failed to transform '/path/to/library/org.Eclipse.jdt.core-3.10.0.jar' using Jetifier.
Reason: The type does not support '.' as package separator!

この問題はJetifierツール自体でしばらくの間修正されていますが、修正されたバージョンはAndroid Studioの更新にはまだ含まれていません(最新のカナリアビルドでさえ))。

スタンドアロンのJetifierを実行すると、問題のあるライブラリを変換できることを確認できますが、これらの変換されたライブラリをプロジェクトに取り込む方法がわかりません。私は頭の中で、このAndroidXへの移行を機能させるための2つの異なる方法を考えることができます。

  1. 各ライブラリでスタンドアロンツールを実行し、それらのバージョンを使用するようにGradleに指示します(Jetifierを実行するには、Gradleタスクにnotを指示する必要がある場合があります)。

  2. スタンドアロンツールを使用するようにGradleタスクに指示しますの代わりに Android Studioに同梱されているツール)。

上記の提案された修正のいずれかを機能させるための支援は大歓迎です(または別の方法がある場合は、それについて知りたいです)。 Android Gradleビルドシステムの内部は信じられないほど複雑であり、この障害を乗り越えるために私は本当に指導者の支援が必要です。

開発と並行してアプリの移行プロセスを開始したいので、これは私たちにとって深刻な障害です。この移行で解決しなければならないことがたくさんあります。ツールがfinallyに更新されたときに「スイッチを切り替える」準備ができていると、リリースを順調に進めるのに役立ちます。

ありがとう!

4
nkotula

実際、私がリンクした同じスレッドから、 回避策 があります:

申し訳ありませんが、jetifier beta01はalpha10とバイナリ互換ではありませんでした。

してみてください:

buildscript {
    dependencies {
        classpath 'com.Android.tools.build.jetifier:jetifier-processor:1.0.0-beta02'
    }
}

そのため、ビルドスクリプトでJetifierの最新バージョンを指定できるようになったと思います。

私は本当にこれを投稿する前にそのスレッドの一番下までスクロールする必要がありましたが、うまくいけば、この回避策が人々にもっと見えるようになりました。

更新

この回避策は、DataBindingを有効にしても動作しないようです。新しいJetifierツールが古いバージョンで実行しようとしているようです:

Jetifierを使用して「/path/to/library/jetifier-core-1.0.0-alpha10.jar」を変換できませんでした。理由:指定されたアーティファクトには、安全に書き換えることができないパッケージ参照「Android/support/v4」を持つ文字列リテラルが含まれています。注釈プロセッサなどのリフレクションを使用するライブラリは、androidxのサポートを追加するために手動で更新する必要があります。

更新2(2018年11月20日):

Jetifierが自分自身をJetifyしようとする問題の回避策があります AGP 3.3.0-rc01および3.4​​.0-alpha04 でリリースされています。開発者は、 Jetifiedからライブラリをブラックリストに登録する機能。gradle.propertiesファイルに正規表現のコンマ区切りのリストを追加して、Jetifierで処理したくないファイルと一致させます。次に例を示します。

Android.jetifier.blacklist = doNot.*\\.jar

/path/to/doNotJetify.jarを除外します

3
nkotula

私はパーティーに少し遅れましたが、私はその問題を解決するための1つの速いオプションしかないと思います:

Google Archives に移動し、保存して利用規約に同意してダウンロードしますAndroid Studio 3.3 Beta 2-これは問題が発生する前の最新バージョンです発生します。また、build.gradleをにダウングレードする必要があります

クラスパス 'com.Android.tools.build:gradle:3.3.0-beta02'

gradle-4.10.2-allを使用しても問題ありません。

おそらく問題は次のベータ版またはカナリアリリースで修正されるでしょうが、今のところ、これが私にとってうまくいった唯一のオプションでした。

0
Dennis Allert