Android emulatorが起動しない

久しぶりにAndroidStudioを起動したらUpdateが溜まっていたので一通りUpdateしてデバッグ開始でエミュレータを起動したら、

The emulator process for AVD Pixel_4_API_30 was killed

と言うエラーが出て起動しない。AndroidStudioを再起動してもだめ。エミュレータを削除して再インストールしてもダメ。API28は動く感じだった。

お手上げなので、HELPからShow Log in ExplorerでLogファイルの場所が開くのでidea.logをエディターで開いてエラーを確認すると、

cannot add library vulkan-1.dll: failed

と言うのがあった。それならvulkan-1.dllっていうのをemulator.exeと同じところに置けばいいのかと、ディスクの中を探すとVS Codeの中にあったのでコピーして置いたがやっぱりだめ。

Googleで調べると、

https://stackoverflow.com/questions/61965330/vulkan-1-1-apis-missing-from-device-android-studio-emulator

に答えがあった。

自分のユーザーフォルダの.android/の下に

advancedFeatures.ini

を作って

Vulkan = off
GLDirectMem = on

と書いて保存すると無事起動した。

AdMobでポリシー違反 その3

また審査で落ちた。

あれからさらに調べたら、NavigationDrawerを外したら通ったという報告があったので NavigationDrawer は関係なかったみたい。

今度は何かを追加じゃなくて外す方向で考えた。

  • 最初の起動直後はリストが空なのでリストソートのメニューをアイテム追加後に表示するようにした
  • 見た目をシンプルにするために、リストが何なのか説明するラベルを消した(他のアプリで問題ないので関係ないと思う)
  • AdViewがConstraintLayoutで幅0dp、startとendがparentと
    Constraint されていたところを、幅をwrap_contentとした
  • 申請する時に変更点だけでなく「違反事項はありません」と一言添えた(これ以上直しようがないので、ちょっと強調してみた)

そうしたところやっと申請が通った。

今回はだいたい申請から3時間くらいで通った。その前は1時間強、その前は1日。1週間かかることもあると書いてあったが、幸い早く審査がされたので助かった。

本当は、ここを直してほしいと書いてあると悩まなくていいんだけどね。

CreateProcess error=206, ファイル名または拡張子が長すぎます

AndroidStudio4.0.1で、

CreateProcess error=206, ファイル名または拡張子が長すぎます。

というエラーが出た。いろいろ調べたがWindowsのファイル名の長さの制限というのが見つかった。いまどき?と思いながら試しに浅いディレクトリに展開してコンパイルしたがダメ。

他にもいくつか対処法が見つかったが解決しない。

こういう時は、エラーメッセージを疑えと言う経験則から

gradle.propertiesの

org.gradle.jvmargs=-Xmx1024m

を、メモリー不足だろうと思って

org.gradle.jvmargs=-Xmx1224m

としたらコンパイルできた。

AdMobでポリシー違反

Drawing memoっていうJW_CADのファイルやJPGに図形を上書きできるアプリを作りました。

しかし、公開後、AdMobでポリシー違反「サイトの仕様: ナビゲーション」と言うのが出ました。

 

ごめんなさい、まったく意味が分かりません。

検索かけると、NavigationViewに関することが引っかかりますが、このアプリにはありません。ないことが問題なのか?とも思いましたが他のアプリでなくても問題ないものがあります。

ひとまず、リストに何もない時のメッセージの見直しを行いました。これで再申請してみます。

電話に応答するプログラムができない件

AmazfitButtonControllerで電話に応答することができないかという要望がありました。
なんとなく難しそうな予感はしましたが、MacroDroidというアプリで試したらできたので、いろいろ調べて実装しました。
しかし、うまくいかない。

よくよく考えたら、勝手に応答するプログラムを作られると、知らない間に課金が発生して危ないので禁止されているのではないだろうか?
きっとそういうことだ。そういうことにしてあきらめよう。

ロシア語の翻訳がいまひとつわからない

AmazfitButtonControllerの要望でロシア語のものがあった。
日本語に翻訳するも、いまひとつわからない。
ロシア語から英語に直しても日本語と同じような感じになる。

実は、一時期趣味でロシア語講座をNHKで見たりロシア語入門の本を買ったりしていたが、そんなもので身につくわけはない。

なぜロシア語に興味があったかというと、中国製の機器のハッキングの情報がロシア語の情報が豊富だったから。その当時の自動翻訳はかなりひどかった。自分である程度読めないかなと。・・・まぁ無理でした。

なぜかアプリのロシアでの利用が多いので読めるようになるといいなぁ。

DXFを読む

せっかくJW_cadのビューワを作ったのだから、ついでにDXFも読もうとしてはまっています。

DXFはテキストファイルなので、単純な線や円を読むのは難しくありません。実際にすぐにできました(レイヤーや線種などを除いてですが)。

しかし、手元にあるDXFファイルを読むと、ほとんど読めないものがいくつかありました。中身を見ると、LWPOLYLINEとMTEXTという要素を多く使っているファイルでした。

調べると、LWPOLYLINEはAutoCadのR14追加、MTEXTはR13追加とあります。

実は、R12まで読めればいいんじゃない?という甘い目論見があったのですが、それでは足りない感じです。少なくとも、Jw_cadは読めています。

もうちょっと頑張ってみますが、あきらめるかもしれません。

ちなみに、参考資料は「DXFハンドブック 第2版」です。ネットで調べても、なかなか理解できないところが多いので、この本は詳細に書かれていて助かります。

JW_cad Viewer 縦文字などに対応

JW_cad Viewerを縦文字・文字幅・文字間隔に対応しました。

私は文字の描画などの処理を書くのが苦手です。特に文字の位置合わせって面倒です。なので後回しになってました。ごめんなさい。

他にも、Androidでは縦文字が使えないと知らなかったので、どうしようか悩んでいましたが、ここここを参考にして実現できました(ありがとうございます)。

そんな感じで、JW_cadの図面をだいたい再現できたと思います。

ランダム線はどうすればいいか、全く分かりません。何かいい方法があるんだろうか?