カテゴリー別アーカイブ: Android

Android Studio, SDK Manager menu


Android Studio の Tools メニューで ADK Manager, SDK Manager, Firebase などメニューが表示されない

画面の右下に表示される Framework detected ダイアログの more.. を選択して OK をクリックすると表示されるようになります。

Android Studio, dart, Hard wrap


Android Studio のエディターでdartコードの折り返しを調整する方法です。

File – Settings- Editor – Code Style – Dart の dartfmt タブを選択して Use The dartfmt tools when formatting the whole file のチェックを外します。

Wrapping and Braces タブを選択して Hard wrap at の数値を変更します(既定は80)。120に設定するとコードの1行が120字を超えたときに自動的に改行されます。Containerなどネストが深くなった時にコードが縦長になりにくくなります。

GradleException, androidx.annotation.NonNull


Android StudioでFlutterアプリを作成すると、android/app/build.gradle ファイルの GradleException の箇所、android/app/src/kotlin/ 以下の MainActivity.kt ファイルの androidx.annotation.NonNull の箇所、android/app/src/main/java/io.flutter/plugins/GeneratedPluginRegistrant.java ファイルの import androidx.annotation.Keep の Keep の箇所がそれぞれ赤字で表示されエラーが発生する。

Gradle project sync failed. が発生する。Frameworks Detected. が表示されない。Gradleでサポートされていないプロジェクト 等が表示される。

  1. File – Settings – Kotlin Compiler の Kotlin to JVM – Target JVM Version を 1.6 から 1.8 に変更します。プロジェクトを開きなおします。
  2. File – Project Structure… の Project Setting – Project の Project SDK を <NO SDK> の場合に Android API 28 Platform などに変更します。
  3. android/gradle.properties ファイルを android/app ディレクトリーにコピーします。またはgradle.propertiesを作成します。
  4. プロジェクト内の android/gradle ディレクトリーを android/app// (ProjectRoot) にコピーします。gradle-wrapper.jar ファイルとgradle-wrapper.properties ファイルが含まれます。
  5. プロジェクト内の /.idea, /.dart_tool, /android/.idea, /android/.gradle ディレクトリーを削除します。キャッシュフォルダーと思われますので削除しても問題は発生しません。
  6. %userprofile% の .Android Studio 3.5/system/cache, .gradle ディレクトリーを削除します。

GradleException のエラーは依然として発生する場合があります。

gradle.properties


org.gradle.jvmargs=-Xmx1536M
android.enableR8=true
android.useAndroidX=true
android.enableJetifier=true


以前の投稿です。

Tools – Flutter – Open for Editing in Android Studio を選択します。This Window で問題ないようです。

File – Settings – Kotlin Compiler の Kotlin to JVM – Target JVM Version を 1.6 から 1.8 に変更します。プロジェクトを開きなおします。

File – Project Structure… の Project Setting – Project の Project SDK を <NO SDK> の場合に Android API 28 Platform などに変更します。

File – Invalidate Chches / Restart を選択して Invalidate を実行します。


こちらのサイトの情報 (https://stackoverflow.com/questions/56607089/new-gradle-sync-is-not-supported-due-to-containing-kotlin-modules-using-an-unsup)が参考になりました。なかなか見つからなかった。

Flutter, build.gradle Release


key.properties


keyAlias='key'
keyPassword='<password from previous step>'
storeFile='<location of the key store file, such as /Users//key.jks>'
storePassword='<password from previous step>'

android/app/build.gradle


.....
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
.....
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}

buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
useProguard true

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
.....

Build – Flutter – Build APK を実行すると、flutter storefile path may not be null or empty string. path=’null’ エラーが発生してAPKファイルが生成されません。

(yourProject)/android/app ディレクトリーと (yourProject)/android ディレクトリーに key.properties ファイルと key.jks ファイルを配置します。build.gradle ファイルと同じディレクトリーにそれぞれ配置します。


セキュリティリーの問題がありますが直接指定する方法もあります。


keyAlias 'key'
keyPassword '<password from previous step>'
storeFile file('key.jks')
storePassword '<password from previous step>'

<password from previous step>‘, ‘<password from previous step>‘ 等は実際に使用するパスワードに置き換えます。

Google Play License Verification (LVL)


Android Studio 3.5 でGoogle Play License Verification (LVL) をインポートする方法です。

  1. File – New – Import Module .. を選択して Source directory: に [ANDROID_SDK]/extras/google/market_licensing/library を指定します。Finishをクリックします。プロジェクト内にlibrary ディレクトリーが作成され、インポートされます。
  2. library/src/main/java/com を android/app/src/main/java/com にコピーします。
  3. AndroidManifest.xmlに次の要素を追加します。
<!-- Devices >= 3 have version of Google Play that supports licensing. -->
<uses-sdk android:minSdkVersion="3" />
<!-- Required permission to check licensing. -->
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />

Flutter


Android Studioで実機に接続できない

flutter doctor を実行してライセンスに問題がある場合に flutter doctor --android-licensesを実行してすべてyesを選択します。RSA 鍵を受け入れる を選択します。

Androidスマホ、携帯電話の位置情報


NetmonsterをGoogle Playからダウンロードしてインストールします。GPSを使用するアプリの位置情報の取得が早くなりました。「設定」-「位置情報」-「位置情報の検出方法」で「端末のみ(GPSで現在地を取得します)」を選択すると位置がずれる症状が改善されるようです。モバイルネットワークを利用した位置情報の取得では問題が発生する場合があります(都市部、山間部で発生しやすく、郊外は比較的この問題は発生しないです)。通信が安定する効果もありそうです。

Xamarin Android project


Visual Studio で Xamarin Android プロジェクトをビルドすると、”warning XA0101: @(Content) build action is not supported” が表示される

Xamarin for Visual Studio をアップデートしてプロジェクトを作り直したところエラーが発生しなくなりました。

Android Factory Image


Nexus 7 2012 Wi-fi でファクトリーイメージを焼く方法です。

  1. Factory Images for Nexus Device からイメージ(LMY47V)をダウンロードします。
  2. USBケーブルを接続します。Nexus 7 の電源をオフにします。音量小ボタン電源ボタンを押し続けます。または
    adb reboot bootloader

    を実行します。Startの文字が表示されます。

  3. zipファイルを展開します。
  4. fastboot flashing unlock

    または

    fastboot oem unlock を実行します。
  5. flash-allを実行します。再起動します。
  6. adb reboot bootloaderを実行します。
  7. fastboot flashing lock

    または

    fastboot oem lock

    を実行します。

Android AOSP


Building the System | Android Open Source Projectの手順に従って、Nexus 7 (Wi-Fi), nakasi (grouper)のビルドを行ったところ次のエラーが発生しました。

File “../base/android/jni_generator/jni_generator.py”, line 212, in ParseJavaPSignature
return ‘”%s”‘ % signature_line[signature_line.index(prefix) + len(prefix):]
ValueError: substring not found
make: *** [out/target/product/generic/obj/GYP/shared_intermediates/content/jni/HashSet_jni.h] Error 1
make: *** …
Traceback (most recent call last):
File “../base/android/jni_generator/jni_generator.py”, line 1527, in
sys.exit(main(sys.argv))
File “../base/android/jni_generator/jni_generator.py”, line 1518, in main
GenerateJNIHeader(input_file, output_file, options)
File “../base/android/jni_generator/jni_generator.py”, line 1401, in GenerateJNIHeader
jni_from_javap = JNIFromJavaP.CreateFromClass(input_file, options)
File “../base/android/jni_generator/jni_generator.py”, line 652, in CreateFromClass
jni_from_javap = JNIFromJavaP(stdout.split(‘\n’), options)
File “../base/android/jni_generator/jni_generator.py”, line 600, in __init__
signature=JniParams.ParseJavaPSignature(contents[lineno + 1]))]
File “../base/android/jni_generator/jni_generator.py”, line 212, in ParseJavaPSignature
return ‘”%s”‘ % signature_line[signature_line.index(prefix) + len(prefix):]
ValueError: substring not found
make: *** [out/target/product/generic/obj/GYP/shared_intermediates/content/jni/MotionEvent_jni.h] Error 1

その後ソースコードをダウンロードしなおしたところ問題なくビルドできました。

Cordova プロジェクトの新規作成


Windows の Android Studio で PhoneGap/Cordova の新規プロジェクトを作成する方法です。

  • Apache Cordovaのサイトからファイルをダウンロードして展開します。
  • コマンドプロンプトを開きます。bin フォルダーに移動します。
  • create.bat [パス] [パッケージ名] [プロジェクト名] を実行します。
  • Android Studio の Import Project を選択します。

Visual Studio 2015 RC では Visual Studio for Apache Cordova をインストールすることで Cordova の新規プロジェクトを作成できます。

Android 5.0


Windows で Nexus 7 2012 Wi-Fi を Android 4.4.4 から Android 5.0 (Lollipop), 5.0.2 にOTAアップデートする手順です。

  1. KTU84Pをダウンロードします。また LRX22G (a6645eee89af34f58db74f6a1ad93fe400fcfc7b.signed-nakasi-LRX22G-from-LRX21P.a6645eee.zip)をダウンロードします。
  2. Android SDK がインストールされていることを確認します。%userprofile%\AppData\Local\Android\sdk にインストールされている場合もあります。
  3. USBケーブルを接続します。
  4. Nexus 7 の電源をオフにします。音量小ボタン電源ボタンを押し続けます。Startの文字が出ますので、音量ボタンを押して Recovery modeを表示させて電源ボタンを押します。
  5. 画面に「コマンドが指定されていません」と表示されます。電源ボタンを押しながら音量大ボタンを押します(長押ししなくてもよいです)。音量ボタンを押して “apply update from ADB” を選択し、電源ボタンを押します。
  6. USB ドライバーをインストールします。「デバイスマネージャー」の「ほかのデバイス」- Nexus7 を右クリックして「ドライバーソフトウェアの更新」を選択します。「コンピューターを参照してドライバー ソフトウェアを検索します」-「コンピューター上のデバイス ドライバーの一覧から選択します」-「すべてのデバイスを表示」-「ディスクを使用」の参照ボタンを選択して、Android SDK の \sdk\extras\google\usb_driver フォルダーを選択します。android_winusb.inf を選択して「開く」をクリックします。”Android Composite ADB Interface”を選択します。互換性に関する警告がダイアログに表示されますので「はい」をクリックします。
  7. Windows でコマンドプロンプトを開きます。Android SDK の \sdk\platform-tools\adb.exe devicesを実行して nexus 7 が表示されるか確認します。adb.exe sideload (download folder)\4939a9ff6d10c495beaed26ac96228246f724272.signed-nakasi-LRX21P-from-KTU84P.4939a9ff.zip を実行します。
  8. Nexus 7 に “Install from ADB Complete”が表示されるまで待ちます。
  9. リカバリーメニューの “reboot system now” を選択して電源ボタンを押します。

引き続き Android 5.0 から 5.0.2 にアップデートします。同様の手順で adb.exe sideload a6645eee89af34f58db74f6a1ad93fe400fcfc7b.signed-nakasi-LRX22G-from-LRX21P.a6645eee.zip を実行します


Android 5.0 から 5.0.2 にアップデートしたところ、動作が速くなりました。

Android プロジェクト Google Play Billing


Android のプロジェクトに Google Play Billing, Google Play Licensing を追加する

Android SDK Manager で Google Play Billing Library, Google Play Licensing Library が選択されていることを確認します


Google Play Billing

\Android\sdk\extras\google\play_billing\IInAppBillingService.aidl ファイルを (your project)\app\src\com\android\vending\billing フォルダーにコピーします。


Google Play Licensing

\Android\sdk\extras\google\play_licensing\library\src\com フォルダーを (your project)\app\src\main\java フォルダーにコピーします。(your project)\app\src\main\java\com\google\android\vending\licensing フォルダーとファイルが存在するか確認します。

Android Studio, 0xfeff


Android Studio でビルドを行うと、「エラー: ‘\ufeff’は不正な文字です」「class、interfaceまたはenumがありません」エラーが発生する

UTF-8 形式の java ファイルの先頭に 0xEF, 0xBB, 0xBF (BOM, バイトオーダーマーク)が存在する場合にこのエラーが発生します。Binary Editor などでこれを取り除きます。

android.bat


Android Studio でビルドを行うと、Cannot find … android.bat というメッセージが表示されてエラーになる

以下の内容は標準設定の場合です。別のフォルダーを選択した場合は置き換えてください。

Android Studio で Android SDK Location – “%userprofile%\AppData\Local\Android\sdk”、JDK Location – “%programfiles%\java\jdk1…” に設定されていることを確認します(%userprofile%は展開)。また %userprofile%\AppData\Local\Android\sdk\tools\ に android.bat が存在するか確認します。アップデートの際にファイルが削除されたままになることがあります。%userprofile%\AppData\Local\Android\sdk\tools\temp フォルダーを確認してここに展開します。

環境変数を確認します。「コントロールパネル」-「システムとセキュリティ」-「システム」の「システムの詳細設定」を選択、「詳細設定」タブの「環境設定」ボタンを選択します。次の環境変数が正しく登録されているか確認します。

  • ANDROID_SDK_HOME – “%userprofile%\android”
  • JAVA_HOME – “%programfiles%\java\jdk1…”
  • PATH に %userprofile%\AppData\Local\Android\sdk\tools が存在する

Android Studio をインストールした後 JAVA_HOME の設定を促すダイアログが表示されます。