「Android/開発環境/AndroidStudio/ビルドバージョンアップ/Android11対応」の版間の差分
(→WebSettingsのsetAppCacheEnabled(boolean)が非推奨なとき) |
|||
| (同じ利用者による、間の6版が非表示) | |||
| 行17: | 行17: | ||
} | } | ||
</pre> | </pre> | ||
| − | |||
==AndroidGradleのプラグインを4系へ== | ==AndroidGradleのプラグインを4系へ== | ||
プロジェクト直下のbuild.gradle | プロジェクト直下のbuild.gradle | ||
| 行43: | 行42: | ||
} | } | ||
</pre> | </pre> | ||
| + | |||
| + | ==buildToolsVersionを更新== | ||
| + | buildToolsVersionがない場合は、デフォルトの値(DEFAULT_BUILD_TOOLS_REVISION)が使用される。 | ||
| + | <pre> | ||
| + | apply plugin: 'com.android.application' | ||
| + | android { | ||
| + | compileSdkVersion 30 | ||
| + | buildToolsVersion = '30.0.3' | ||
| + | defaultConfig { | ||
| + | targetSdkVersion 30 | ||
| + | } | ||
| + | } | ||
| + | </pre> | ||
| + | |||
| + | 参考:https://qiita.com/tatsuhama/items/4890d92cf236e6ddd62b | ||
==webviewで端末に保存したファイルが見れない== | ==webviewで端末に保存したファイルが見れない== | ||
| 行93: | 行107: | ||
===Android11からAsyncTask非推奨=== | ===Android11からAsyncTask非推奨=== | ||
| − | java.util. | + | java.util.concurrentへ変換、もしくはkotlinのコルーチンを使うように。 |
https://developer.android.com/reference/android/os/AsyncTask.html | https://developer.android.com/reference/android/os/AsyncTask.html | ||
| 行172: | 行186: | ||
参考:https://developer.android.com/reference/android/webkit/WebSettings | 参考:https://developer.android.com/reference/android/webkit/WebSettings | ||
| + | |||
| + | ===指定dirのコードを無視する=== | ||
| + | buildとかの生成されたコードを無視したい場合 | ||
| + | app/lint.xml | ||
| + | <pre> | ||
| + | <?xml version="1.0" encoding="UTF-8"?> | ||
| + | <lint> | ||
| + | <issue id="all"> | ||
| + | <ignore path="build" /> | ||
| + | </issue> | ||
| + | </lint> | ||
| + | </pre> | ||
| + | |||
| + | |||
| + | 参考:https://www.yslibrary.net/2016/07/05/ignore-directory-androidlint/ | ||
| + | |||
| + | ===Hiltがbuildで非推奨エラーが出るとき=== | ||
| + | Hiltが邪魔であれば、lint.xmlで非表示にする。 | ||
| + | <pre> | ||
| + | <?xml version="1.0" encoding="UTF-8"?> | ||
| + | <lint> | ||
| + | <issue id="all"> | ||
| + | <ignore path="build/generated/source/kapt/productionDebug/view/fragment/Hilt_*.java" /> | ||
| + | <ignore path="build/generated/source/kapt/mockDebug/view/fragment/Hilt_*.java" /> | ||
| + | <ignore path="build/generated/source/kapt/productionRelease/view/fragment/Hilt_*.java" /> | ||
| + | <ignore path="build/generated/source/kapt/mockRelease/view/fragment/Hilt_*.java" /> | ||
| + | <ignore path="build/generated/source/kapt/stagingDebug/view/fragment/Hilt_*.java" /> | ||
| + | <ignore path="build/generated/source/kapt/stagingRelease/view/fragment/Hilt_*.java" /> | ||
| + | </issue> | ||
| + | </lint> | ||
| + | </pre> | ||
2025年8月19日 (火) 13:10時点における最新版
目次
やり方
公式:https://developer.android.com/preview/setup-sdk?hl=ja
- AndroidStudioのプレビュー版をDL(20200729時点で4.0.1β) https://developer.android.com/studio/preview?hl=ja
- Android/Tools/SDKManager (もしくはAndroidStudioのwelcome画面のConfigureのSDKManager)
- SDK Platformsタブで、Android R Previewを選択
- SDK Toolsタブで、Android SDK Build-Tools 30を選択
app/build.gradleのcompileSdkVersionとtargetSdkVersionを30へ
apply plugin: 'com.android.application'
android {
compileSdkVersion 30
defaultConfig {
targetSdkVersion 30
}
}
AndroidGradleのプラグインを4系へ
プロジェクト直下のbuild.gradle
buildscript {
dependencies {
classpath "com.android.tools.build:gradle:4.0.1"
}
}
gradle/wrapper/gradle-wrapper.propertiesのdistributionUrlを変更
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
androidのgradleプラグインとgradleのversionの関係
こちらを参照 https://developer.android.com/studio/releases/gradle-plugin.html
kotlinでCould not initialize class org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSetKtがる場合
build.gradleのkotlin_versionを1.3.10から1.3.72にあげると直る。
buildscript {
ext.kotlin_version = "1.3.72"
}
buildToolsVersionを更新
buildToolsVersionがない場合は、デフォルトの値(DEFAULT_BUILD_TOOLS_REVISION)が使用される。
apply plugin: 'com.android.application'
android {
compileSdkVersion 30
buildToolsVersion = '30.0.3'
defaultConfig {
targetSdkVersion 30
}
}
参考:https://qiita.com/tatsuhama/items/4890d92cf236e6ddd62b
webviewで端末に保存したファイルが見れない
webviewに"ウェブページへのアクセス不可 ERR_ACCESS_DENIED"と出る場合
以下権限を追加してもだめだった。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
結局build.gradleをtargetSdkVersion 30から29にしないとならないかも。もしくはandroid11のβが取れるのを一旦待つ。
参考:https://support.wikitude.com/support/discussions/topics/5000095108
非推奨コード対応
build.gradleにoptions.compilerArgsを追加
allprojects {
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}
}
}
$ ./gradlew lint
ボタンでMissingConstraintsエラーが出るとき
以下エラーが出るとき
app/src/main/res/layout/activity_main.xml:18: Error: This view is not constrained vertically: at runtime it will jump to the top unless you add a vertical constraint [MissingConstraints]
<Button
2020年8月7日 (金) 14:56 (JST)~
修正前
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="text" />
修正後
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="text"
tools:ignore="MissingConstraints" />
MissingConstraintsを追加する
Android11からAsyncTask非推奨
java.util.concurrentへ変換、もしくはkotlinのコルーチンを使うように。 https://developer.android.com/reference/android/os/AsyncTask.html
HandlerのHandler()は非推奨となるとき
修正前
final Handler handler = new Handler();
修正後
final Handler handler = new Handler(Looper.getMainLooper());
WindowManagerのgetDefaultDisplay()は非推奨となるとき
以下のような警告
警告: [deprecation] WindowManagerのgetDefaultDisplay()は非推奨になりました
Context.getDisplayがapi30で追加されているので、そちらを使う。
修正前
WindowManager windowManager = (WindowManager) context.getSystemService(WINDOW_SERVICE); Display disp = windowManager.getDefaultDisplay();
修正後
Display display;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) {
display = context.getDisplay();
} else {
WindowManager windowManager = (WindowManager) context.getSystemService(WINDOW_SERVICE);
display = windowManager.getDefaultDisplay();
}
参考:https://developer.android.com/reference/android/view/WindowManager#getDefaultDisplay()
DisplayのgetSize(Point)は非推奨になりましたとなるとき
以下警告が出るとき
警告: [deprecation] DisplayのgetSize(Point)は非推奨になりました
Display.getSize(Point)はAPI30で非推奨となったので、API30から追加されたgetSize (Point outSize)を使って置き換る
修正前
Point realDisplaySize = new Point(); disp.getSize(realDisplaySize);
修正後
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
final WindowMetrics metrics = windowManager.getCurrentWindowMetrics();
final WindowInsets windowInsets = metrics.getWindowInsets();
Insets insets = windowInsets.getInsetsIgnoringVisibility(WindowInsets.Type.navigationBars()
| WindowInsets.Type.displayCutout());
int insetsWidth = insets.right + insets.left;
int insetsHeight = insets.top + insets.bottom;
final Rect bounds = metrics.getBounds();
final Size legacySize = new Size(bounds.width() - insetsWidth,
bounds.height() - insetsHeight);
Log.i("test", "bounds.width=" + legacySize.getWidth());
Log.i("test", "bounds.height=" + legacySize.getHeight());
} else {
Point realDisplaySize = new Point();
disp.getSize(realDisplaySize);
Log.i("test", "realDisplaySize.x=" + realDisplaySize.x);
Log.i("test", "realDisplaySize.y=" + realDisplaySize.y);
}
参考:https://developer.android.com/reference/android/view/Display
WebSettingsのsetAppCacheEnabled(boolean)が非推奨なとき
以下警告が出る
警告: [deprecation] WebSettingsのsetAppCacheEnabled(boolean)は非推奨になりました
Service workersを使う・・。一旦削除で対応したので、根本対応はしなかった・・。
This method was deprecated in API level 30. The Application Cache API is deprecated and this method will become a no-op on all Android versions once support is removed in Chromium. Consider using Service Workers instead. See https://web.dev/appcache-removal/ for more information.
参考:https://developer.android.com/reference/android/webkit/WebSettings
指定dirのコードを無視する
buildとかの生成されたコードを無視したい場合 app/lint.xml
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<issue id="all">
<ignore path="build" />
</issue>
</lint>
参考:https://www.yslibrary.net/2016/07/05/ignore-directory-androidlint/
Hiltがbuildで非推奨エラーが出るとき
Hiltが邪魔であれば、lint.xmlで非表示にする。
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<issue id="all">
<ignore path="build/generated/source/kapt/productionDebug/view/fragment/Hilt_*.java" />
<ignore path="build/generated/source/kapt/mockDebug/view/fragment/Hilt_*.java" />
<ignore path="build/generated/source/kapt/productionRelease/view/fragment/Hilt_*.java" />
<ignore path="build/generated/source/kapt/mockRelease/view/fragment/Hilt_*.java" />
<ignore path="build/generated/source/kapt/stagingDebug/view/fragment/Hilt_*.java" />
<ignore path="build/generated/source/kapt/stagingRelease/view/fragment/Hilt_*.java" />
</issue>
</lint>
