タイトル
編集:2024.10.10
Delphi12にアップグレードしたらAndroidのbuildができなくなった。
C++は13からサポート終了したそうですね。その終了理由がわけわかめですが?
過去にKylix, .net のサポート打ち切りで信用できない開発言語ですので、とうとうきましたね
RAD Studio Athens は、iOS 64 ビット プラットフォームと Android 32 ビット プラットフォームを削除しました。
そろそろ Delphi androidを Visual Studioに移植したほうがよさそうです。幸い1プロジェクトでcoplilot先生に手伝ってもらえば数日あれば移植終わりそうです。
近いうちに .NET MAUI に移植したいと思います。
とりあえず復旧できたの手順を書いておきます
現象
標準インストールしただけでは、不具合があり
SDK 基底パス, avdmanager.bat または androud.bat の場所, SDK APIの場所
が無効になっていて利用できない。
» 続きを読む
タイトル
編集:2024.10.10
iPhoneとAndroidを同時に開発できるクロスプラットフォーム開発ツール
を Copilot 先生に相談してみた。
-
.NET MAUI
.NET MAUI はオープンソースであり、Xamarin.Forms を進化させ、モバイルからデスクトップ シナリオに拡張したものです。
新規プロジェクトを実行しただけでファイルが数千個できる(ファイル数: 2,275、フォルダー数: 1,182)。android apk 140MB.
.NET MAUI アプリのサポート対象プラットフォーム LINK
🚫 ネットワークドライブに配置すると意味不明なエラーが表示されて実行できない。
📌 実行しないとページをビュジュアル編集できない変な仕様。
🚫[致命的欠陥] .NET MAUI XAML デザイナーは、Visual Studio 2022 ではサポートされていません。
Xamarin: [C#]
「Xamarin」は2024年5月1日に終了、「iOS 17」「Android 14」に対応せず
Xamarinは、C#を使用してiOSとAndroidの両方で画像の入出力を行うことができます。`System.IO`名前空間を使用してファイル操作を行い、`Xamarin.Forms`の`Image`コントロールを使用して画像を表示できます。 -
React Native: [JavaScript]
React Nativeも画像の入出力をサポートしています。`react-native-fs`パッケージを使用してファイルシステムにアクセスし、画像の読み込みや書き込みを行うことができます。 -
Flutter: [Dart]
Flutterは、画像の読み込みや書き込みを簡単に行うためのライブラリを提供しています。`Image`ウィジェットを使用して画像を表示し、`image_picker`パッケージを使用して画像を選択・保存することができます。 - Unity: [C#]
主にゲーム開発に使用されるクロスプラットフォームエンジンですが、
iOSとAndroidのアプリ開発にも利用できます。3Dグラフィックスやインタラクティブなコンテンツに強みがあります。
» 続きを読む
編集:2024.04.06
cygwin 3.5 PHP-8.3.4
$ uname -ro
cygwinの環境が独自仕様の変数とか配置とかで
標準のLinuxと違うみたいで
標準のphpのソースだとそのまま通らないみたい。
cygwin環境は
パッチを当てないとPHPのビルドはできません。
以前XP用にXP未サポートのPHP5.6をビルドしたことがあったので、なんとなくconfigureの仕組みは知っていたので、書き換えてみた。
php.cygportのパッチ作り直し
fedoraの分はすぐ手に入ったのでそのまま差し替えて流用。
残りは、不要なものは無視して、必要そうなものだけ ちゃちゃちゃと書き換えて完了。
コンパイル通らない。
なんでphp.cygport全部ひとまとめにしているのだろう。
基本パッケージcli,sapi毎(cgi,apache),extを最低でもわけるべき。
extなんかbuild後に自動でphplizeすればいいことでしょ。デバッグできないような余計なパッケージして手間かけさせて迷惑。
全部まとめるならオプション渡して必要なものに変更できるようにしないと。
自分の用途で動けばいいだけなのでパッケージとかは考えない。
cygport prepでパッチまで当てて、
残りは、./confugiureで使用する環境に合わせる
./configure --prefix=/usr/local/php/8 $OPTIONS_CONF
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+
Thank you for using PHP.
make
原因が分かったので解決。
あら、作業開始後に cygwinのバージョンが変わってる
$ uname -ro
完成!!
動作確認完了
やったね!🥂
システムのPHPと置き換え
OK 🍕
デフォルトのphp消してもいいかも?
🍳 phpのインストールパスをシステムに登録して完成。
nano ~/.bashrc
今回はさすがに無理かと思いました🤣🤮
少し手間かかりましたが いけましたね。💯
$ php -r "echo 'PHP'.phpversion().'-'.PHP_OS;"
cygwin で PHP8 完🎉🍭
» 続きを読む
編集:2023.10.26
Android11
アプリから外部MicorSDカード領域に保存した画像がMediaStoreに登録できません!
getContentResolver().insert
EXTERNAL_CONTENT_URI
なぜ emulated/0 にパスを勝手に変更しているの?
内部のユーザー領域なら正常に実行できる。
外部MicorSDカード領域のパスの場合上記のエラーになる。
フラグは、2種類しかないし INTERNAL_CONTENT_URI は、違うし。
ほかにフラグが増えたとか?
EXTERNAL_CONTENT_URI: The content:// style URI for the "primary" external storage volume.
ほかのアプリ(ファイラーだと)で名称変更でするとMediaStoreに上がってくるので APIレベル指定の違いかな?
古いアンドロイドならOKなのかな?
なにか互換性の設定がいるとか?
よくわからないので別の古い端末で動作確認してみよう。
追記
解決しました
Androidサイトのヘルプにも記述がないから苦労した。
ネットにも情報ないし、みんな迷走してSDCardへの保存が使えないと思い込んでいる模様。
SDカードは、ボリューム名を入れます。ボリューム名は、getExternalVolumeNames関数から取得できます.
getExternalVolumeNames関数の結果
external_primary : 本体に保存する場合
4桁数値-4桁数値 : SDカードに保存する場合
LContentUri := TJImages_Media.JavaClass.getContentUri(StringToJString([定義済み定数|ボリューム名]));
// 'external_primary' or '4桁数値-4桁数値' : Android11
// 'external' : 古いAndroid
LJNewURI := TAndroidHelper.ContentResolver.insert(LContentUri, LJContentValues);
if (TJBuild_VERSION.JavaClass.SDK_INT >= 29) then // (Android10 API 29)
// MediaStore.VOLUME_EXTERNAL_PRIMARY : Constant Value: "external_primary"
LVolume := 'external_primary'
else
LVolume := 'external';
// LVolume := 'xxxx-xxxx'; // SDカードの場合は数値を書いて有効にする
LContentUri := TJImages_Media.JavaClass.getContentUri(StringToJString(LVolume));
//LContentUri := TJMyAndroidUtils.JavaClass.getContentUriFromFilename(
// TAndroidHelper.Context, StringToJString(LContentFilename));
ShowDebugMessage('ContentResolver:Uri:' + #10 + JStringToString(LContentUri.toString()));
» 続きを読む
編集:2023.08.16
Borland時代のDelphiで作ったアプリはWindows10で表示の不具合などいろいろ問題を起こすので
Delphi11へサクッと移行したほうがいいです。
普通にコード書いてるだけなら無修正でコンパイル通って移行できると思います。
プロジェクトオプションの PEのバージョンを 既定値の6.0から 5.0 にするとXPでも動作します。
PE 6.0 vista以降
PE 5.0 XPなど
JCL 2.8 [master] | JCL 2.1 | |
Delphi6 | OK | OK |
Delphi2005 | Error ❌ (Delphi内部バグ) |
- jvcl3_39 jcl2_1 |
Delphi 11 | OK |
Windows ME,XP, VISTAなんて使わないでしょ。
古いDelphiはプロジェクトアップグレードして
古いDelphiと すっきり お別れしよう!!
Delphi 無料エディション1年だからと敬遠しているあなた。
生成したexeもリポジトリにいれておけば問題なし。
新規プロジェクトは断然 Visual Studio をお勧めします!!
それいけ ドット ネット
» 続きを読む