Android Studio Dolphin | 2021.3.1 Build #AI-213.7172.25.2113.9014738, built on September 1, 2022 Runtime version: 11.0.13+0-b1751.21-8125866 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. Windows 11 10.0 GC: G1 Young Generation, G1 Old Generation Memory: 1280M Cores: 8 Registry: external.system.auto.import.disabled=true ide.text.editor.with.preview.show.floating.toolbar=falseWEBの代替サービス...▼
Android Studio Dolphin | 2021.3.1 Build #AI-213.7172.25.2113.9014738, built on September 1, 2022 Runtime version: 11.0.13+0-b1751.21-8125866 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. Windows 11 10.0 GC: G1 Young Generation, G1 Old Generation Memory: 1280M Cores: 8 Registry: external.system.auto.import.disabled=true ide.text.editor.with.preview.show.floating.toolbar=false
Android Studio Dolphin | 2021.3.1 Build #AI-213.7172.25.2113.9014738, built on September 1, 2022 Runtime version: 11.0.13+0-b1751.21-8125866 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. Windows 10 10.0 GC: G1 Young Generation, G1 Old Generation Memory: 1280M Cores: 6 Registry: external.system.auto.import.disabled=true ide.text.editor.with.preview.show.floating.toolbar=falseこれらの Android Studio は Java11 が使えるはずが、なぜか
int i = 0x20BB7;//ツチヨシ Unicode String str = java.lang.Character.toString( i );をビルドすると
~ android { ~ compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } } ~を指定。やみくもに検索して見つかる環境変数「JAVA_HOME」値 や、gradle.properties「org.gradle.java.home」値を指定する情報は関係なさそう。
I/Ads: Ad failed to load : 3原因は・・・▼
Execution failed for task ':app:processDebugMainManifest'. > Manifest merger failed : Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.エラーメッセージに示される
commit b54accd1c410a1bf8a5fdcd95a1b19d85d456ca7 (HEAD -> master, origin/master, origin/HEAD) Date: Wed Sep 22 12:55:50 2021 -0700をビルド。タイトルから起動時1回限り広告表示を想像させるこのサンプルは...▼
Google Play ストアに掲載するアプリ情報に関するガイドラインを改定します 2021年5月18日火曜日 https://android-developers-jp.googleblog.com/2021/05/updated-guidance-to-improve-your-app-quality-and-discovery-on-google-play.html 価格やプロモーションを示すキーワードを使用しないでくださいアプリケーションコードのパッケージ名称は無関係。
The minCompileSdk (31) specified in a dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties) is greater than this module's compileSdkVersion (android-30). Dependency: androidx.appcompat:appcompat:1.4.0. AAR metadata file: C:\Users\wanko\.gradle\caches\transforms-2\files-2.1\b70a38d32b407cc6af29424a07f54027\appcompat-1.4.0\META-INF\com\android\build\gradle\aar-metadata.properties.解決方法を調べると...▼
2020-12-21 01:28:56.035 3538-3538/asia.remix.virtualdisplay E/AndroidRuntime: FATAL EXCEPTION: main Process: asia.remix.virtualdisplay, PID: 3538 java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=450066721, result=-1, data=Intent { (has extras) }} to activity {asia.remix.virtualdisplay/asia.remix.virtualdisplay.MainActivity}: java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION at android.app.ActivityThread.deliverResults(ActivityThread.java:4845) at android.app.ActivityThread.handleSendResult(ActivityThread.java:4886) at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) Caused by: java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION at android.os.Parcel.createException(Parcel.java:2071) at android.os.Parcel.readException(Parcel.java:2039) at android.os.Parcel.readException(Parcel.java:1987) at android.media.projection.IMediaProjection$Stub$Proxy.start(IMediaProjection.java:231) at android.media.projection.MediaProjection.API 29 から、getMediaProjection()の前に、サービスではないが startForeground() が必要...▼(MediaProjection.java:58) at android.media.projection.MediaProjectionManager.getMediaProjection(MediaProjectionManager.java:104) at asia.remix.virtualdisplay.MainActivity$1.onActivityResult(MainActivity.java:62) at asia.remix.virtualdisplay.MainActivity$1.onActivityResult(MainActivity.java:57) at androidx.activity.result.ActivityResultRegistry.doDispatch(ActivityResultRegistry.java:377) at androidx.activity.result.ActivityResultRegistry.dispatchResult(ActivityResultRegistry.java:336) at androidx.activity.ComponentActivity.onActivityResult(ComponentActivity.java:624) at androidx.fragment.app.FragmentActivity.onActivityResult(FragmentActivity.java:164) at android.app.Activity.dispatchActivityResult(Activity.java:8110) at android.app.ActivityThread.deliverResults(ActivityThread.java:4838) at android.app.ActivityThread.handleSendResult(ActivityThread.java:4886) at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) Caused by: android.os.RemoteException: Remote stack trace: at com.android.server.media.projection.MediaProjectionManagerService$MediaProjection.start(MediaProjectionManagerService.java:476) at android.media.projection.IMediaProjection$Stub.onTransact(IMediaProjection.java:135) at android.os.Binder.execTransactInternal(Binder.java:1021) at android.os.Binder.execTransact(Binder.java:994)
Execution failed for task ':app:lintVitalRelease'. > Lint found fatal errors while assembling a release target. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.で失敗。対応方法は...▼
commit e87093e
VirtualDisplay の出力先を SurfaceView.getHolder().getSurface() として常に端末の画面で SurfaceView を更新するシンプルな例。
commit 2ba351b
次に VirtualDisplay 出力先を ImageReader.getSurface() として onClick で ImageView を更新する例。
このままだと左に寄って機種によって例えば Galaxy S7 edge では画像のような現象が生じる。ImageReader.acquireLatestImage() で取得する Image.Plane の幅のピクセル数が
Image.getWidth() や DisplayMetrics.widthPixels の値より幅が広い。
commit 1b6140f
最終的にはImageReader.acquireLatestImage() で取得したサイズで ImageReader・VirtualDisplayを作り直すことで改善。
$ git -C ~/AndroidStudioProjects/github/quickstart-android log --diff-filter=D --summaryとしてソース削除履歴を調べると
$ git clone git@github.com:googlesamples/mlkit.git ~/AndroidStudioProjects/github/mlkitFri Oct 30 08:41:29 2020 -0700 時点のソース。
Error: The apk for your currently selected variant (vision-quickstart-proguard.apk) is not signed. Please specify a signing configuration for this variant (proguard).解決方法は...
続きを読む "Error: The apk for your currently selected variant is not signed." »
Hello Google Play Developer, This is a reminder that starting November 1, 2019, updates to apps and games on Google Play will be required to target Android 9 (API level 28) or higher. After this date, the Play Console will prevent you from submitting new APKs with a targetSdkVersion less than 28. Configuring your app to target a recent API level ensures that users benefit from significant security and performance improvements, while still allowing your app to run on older Android versions (down to the minSdkVersion). Action required Please ensure that your apps are configured to target at least Android 9 (API level 28) by November 1, 2019. For technical advice on how to change your app's target API level to meet these requirements, refer to the migration guide. Affected apps The apps included below have one or more APKs—in production or testing tracks—that aren't currently targeting API level 28 or higher. Apps are listed with the maximum version code and corresponding targetSdkVersion. If you have more than 20 apps that could be affected in your account, please check the Play Console for a full list. asia.remix.clocksignal 4 24 asia.remix.clocksignals 3 24 asia.remix.clocktalk 4 26 asia.remix.clocktalkfree 7 26 asia.remix.daydreammovie 2 23 asia.remix.dictation 2 25 asia.remix.dictationfree 3 24 asia.remix.eiken2p 1 23 asia.remix.eiken3 1 23 asia.remix.eiken4 1 23 asia.remix.eiken5 1 23 asia.remix.koumon 1 23 asia.remix.learningcard 1 23 asia.remix.metronome 2 23 asia.remix.newsreaderfree 3 26 asia.remix.orgelfree 4 24 asia.remix.rokuseicm 1 24 asia.remix.sportswatchfree 3 24 asia.remix.wakeuponlan 1 23 The Google Play Team和訳は
:app:mergeDebugResources AAPT err(Facade for 25944244): /opt/android-sdk/build-tools/25.0.2/aapt: /opt/android-sdk/build-tools/25.0.2/aapt: バイナリファイルを実行できませんこのエラーメッセージからは様々な情報見つかるが、そもそも32ビットOSには対応していないことが原因。エミュレータの為なのか???
:app:mergeDebugResources AAPT err(Facade for 464201322): /opt/android-sdk/build-tools/25.0.2/aapt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/android-sdk/build-tools/25.0.2/aapt)GNU Cライブラリ(glibc) が古いことが原因。
yum info glibc2.12
GNU C Library (glibc) 2.19 or later前回 CentOS7 64bitでは 2.17 で一応ビルド成功している。 様々なlibc関連の情報が見つかり ソースからのメークも試したものの、最終的には...▼
CentOS-7-x86_64-Minimal-1611.isoで構築した64ビット版のミニマムインストール
CentOS Linux release 7.3.1611 (Core)ビルド環境は
sdk-tools-linux-4333796.zipをダウンロード。ルートではなく
# useradd -g wheel taroで作成したユーザーで操作。java は
$ sudo yum -y install java-1.8.0-openjdk-devel
$ javac -versionjavac 1.8.0_171
$ java -versionopenjdk version "1.8.0_171"
C:\Users\taro\AndroidStudioProjects\ScreensaverWeb\app\src\main\res\assets\default.html Error:(20, 22) Error: エンティティ"ldquo"が参照されていますが、宣言されていません。 Error:Execution failed for task ':app:mergeDebugResources'. > C:\Users\toshi\AndroidStudioProjects\ScreensaverWeb\app\src\main\res\assets\default.html:20:22: Error: エンティティ"ldquo"が参照されていますが、宣言されていません。原因は・・・▼
ApiDemos\app\src\main\res\xml\preference_switch.xmlの拡張子.xmlが無くなっている為ビルドエラーとなるのでファイル名を修正。
「パッケージandroid.support.annotationは存在しません」 「パッケージandroid.support.v4.printは存在しません」と警告されたので
compile 'com.android.support:support-annotations:26.0.0-alpha1' compile 'com.android.support:support-v4:26.0.0-alpha1'が追記される。
「パッケージcom.google.android.mmsは存在しません」については これとは別にソースをビルド必要な模様。
MmsWapPushReceiver.java MmsMessagingDemo.javaを削除してビルド成功。野良アプリでよければ→ ApiDemos.apk
最大瞬間風速30から45メートルで関東を通過中の台風21号 ラン(LAN)。
Nexus 5、Android 6.0.1 で 多摩川の様子を続けて5枚撮影。1枚目と4枚目は誤フラッシュやベランダ写りこみの為削除。
なんとか会社に到着し、撮影から約3時間後にパノラマ写真が出来上がったという通知が。
▼IMG_20171023_054855.jpg 左方向
▼IMG_20171023_054906.jpg 正面
Windows7上のVirtualBox Version5.0.10 で RedHat 64ビット仮想環境を作成。
ネットワークはブリッジアダプターとし、その他はデフォルトの設定値。
http://www.asterisk.org/downloads/asterisknow
から
AsteriskNow-1013-current-64.iso
をダウンロードし、仮想環境のストレージ→光学ドライブへ指定後 起動。
Centos6系同様にインストールし、ネットワーク設定にLAN内の固定IPを指定。
Android ADK 組込みプログラミング完全ガイド (Smart Mobile Developer)
全サンプルコードは
https://www.shoeisha.co.jp/book/detail/9784798125930
からダウンロード可能。
『第8章 Android 対応の電子オルゴールを作る』
の簡易サンプルの画面・・・▼
String[] strings = { "1列目", "2列目", "3列目" }; ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>( getApplicationContext() , android.R.layout.simple_list_item_1 , strings );
ArrayList<HashMap<String, Object>> arrayList = new ArrayList<HashMap<String, Object>>(); HashMap<String, Object> map = new HashMap<String, Object>(); map.put( "display", "1列目" ); map.put( "offset", 1 ); arrayList.add( map ); map.put( "display", "2列目" ); map.put( "offset", 2 ); arrayList.add( map ); map.put( "display", "3列目" ); map.put( "offset", 3 ); arrayList.add( map ); SimpleAdapter simpleAdapter = new SimpleAdapter( getApplicationContext() , arrayList , android.R.layout.simple_list_item_1 ←★ , new String[]{ "display"}, new int[]{android.R.id.text1} ←★ );
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536メソッド数の上限を超えた(Building Apps with Over 65K Methods)
apply plugin: 'com.android.application' android { compileSdkVersion 24 buildToolsVersion "23.0.3" defaultConfig { applicationId "asia.remix.map" minSdkVersion 10 targetSdkVersion 24 versionCode 1 versionName "1.0" multiDexEnabled true ★追加 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:24.1.1' compile 'com.google.android.gms:play-services:9.4.0' }と
<?xml version="1.0" encoding="utf-8"?> <manifest package="example.myapplication" xmlns:android="http://schemas.android.com/apk/res/android" > <!-- The ACCESS_COARSE/FINE_LOCATION permissions are not required to use Google Maps Android API v2, but you must specify either coarse or fine location permissions for the 'MyLocation' functionality. --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" android:name="android.support.multidex.MultiDexApplication" ★追加 > <!-- The API key for Google Maps-based APIs is defined as a string resource. (See the file "res/values/google_maps_api.xml"). Note that the API key is linked to the encryption key used to sign the APK. You need a different API key for each encryption key, including the release key that is used to sign the APK for publishing. You can define the keys for the debug and release targets in src/debug/ and src/release/. --> <meta-data android:name="com.google.android.geo.API_KEY" android:value="@string/google_maps_key" /> <activity android:name=".MapsActivity" android:label="@string/title_activity_maps" > <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest>それぞれ ★印の行を追加。
org.gradle.jvmargs=-Xmx2048mを指定するとメモリ不足解消とコンパイル時間を短縮(約1/10)。
前提
Min SDK Version 10
Android 2.3.4端末 HTC EVO ISW11HT
Android 4.2.2端末 Samsung GALAXY NEXUS SC-04D
Android Studio 1.5.1
Android 2.* 当時、「タイトルバー」にアイコンを云々・・・だったものが転々と移り変わっている模様。
Android Studio で新しいプロジェクト「Blank Activity」「Empty Activity」「Google AdMob Ads Activity」を作成すると
従来 継承していた「Activity」が「AppCompatActivity」となり「タイトルバー」ではなく「ツールバー」という考え方に。
このツールバーを従来の アイコン+タイトル のスタイルにするには MainActivity で▼
以前より簡単になり
java JDK の他に 『Android Studio』をインストールすれば開発が可能に。
現時点の最新バージョンは 1.5.1 。中身・操作感は eclipce とほぼ同じ。
今回は こちらから All Android Studio Packagesの
android-studio-bundle-141.2456560-windows.exe
をインストール。
▼その他 備忘録
eclipseでのパッケージ名を変更する手順。
●プロジェクト名/AndroidManifest.xml
の package= を変更。
●プロジェクト名/res/values/strings.xml
の app_name を変更。
プロジェクトインポートすると期待しないプロジェクト名になってしまうので変更する
Eclipse → Projectフォーカス → Refactor → Rename
か
Eclipse → Project名 → 右クリック
↓
Windows7 上のエクリプスで開発していたプロジェクトをWindowsXP 上のエクリプスへ移行する手順。
●Windows7 上のワークスペースの対象プロジェクトフォルダを圧縮。
▼
●WindowsXP のデスクトップなどにプロジェクトフォルダを解凍。
▼
●WindowsXP 上のエクリプスにインポート。
このとき、前回のようにグーグル広告のAdMob SDK ライブラリなどを使用している時、下記のようなエラーがでた場合↓
改訂2版 android sdk逆引きハンドブック
手元に1冊あるとなにかと便利。
サンプルソースもWEBからダウンロード可能。
目次
CHAPTER-05 ウィジェット
95 ウィジェット配置
96 クリックイベント
97 アクティビティ起動
98 削除検知
99 ノーティフィケーション示
100 ダイアログボックス表示
101 リストビュー示
CHAPTER-03
68 配列の中身をリストビューに表示する
69 リストビューレイアウトをカスタマイズ
70 リストビューにアイコン表示
71 リストビューを自動的に最下部までスクロール
72 リストビューにスムーススクロールタブを追加
73 リストビューのスクロールイベントを取得
74 リストビューの選択箇所を取得
75 リストビューの長押し箇所を取得
78 降りたたみ可能な親子リストビュー
CHAPTER-13
240 インテントでイベント追加
CHAPTER-14
262 サービス
ここまでのアンドロイドアプリの実行手順
●eclipceからアンドロイドエミュレータへ転送・実行。
●eclipceからUSB接続したアンドロイド実機へ転送・実行。
さらに実際のアプリ配布のようにネットワークからインストールする方法 ↓
アンドロイド開発環境
●Intel Pentium4 2.6GHz 1GB
10年落ちPCのエミュレータではかなりストレス。
●Intel Core i5 2.50GHz 4GB
比較的最近のPCでも大きなアプリは厳しいかもしれない。
そこで実機でのデバッグ・実行。
新品中華パッドよりも安価に中古の型落ちスマートフォンを入手。
▼
実機 の設定変更
▼
USBケーブルで接続するPCにドライバをインストール
▼
eclipse の設定変更
詳細は↓
工学社Android4.0演習
HelloWorldが動作するところまで確認できたところで、WEBや書籍で紹介されているアプリを試す。
http://www.kohgakusha.co.jp/support/android4_en/index.html
に公開されているサンプル[Sample.zip]のHTTP通信。
プロジェクトのインポート手順は↓
とりあえずお決まりの HelloWorld を表示するandroidアプリを作成。
なんとプロジェクトを作るだけで勝手にHello worldが埋め込まれたソースが生成される。
詳細は ↓
Windows XP pro 32bit へアンドロイド開発環境を構築
●java JRE,JDK インストール
↓
●Eclipse インストール
↓
●Android SDK インストール
↓
●Android Development Tools(ADT)インストール
↓
●Androidエミュレータを設定
これで、コーディング・コンパイル・エミュレーションできる環境が整う。
詳細は↓