Androidプログラミング質問スレ revision55
レス数が950を超えています。1000を超えると書き込みができなくなります。
アプリの複数あるActivityに同じアイコンを同じ位置に表示したいです
いい方法が分からず、現在は全てのActivityのレイアウトファイルにアイコンのfragmentを埋め込んでいます
処理が同じなので1カ所コードを書くだけにしたいのですが、方法を教えて頂け無いでしょうか? 右下に常に+がでてるわけで
そこ調べたら同じことできるんじゃね 1カ所にコード書いてそれを複数から呼び出せるようにすればいいんじゃね テレビの右上のNHKとかなんかそういう表示ほしいんでしょ
それなら+のやつを改造しちゃえばずーっと出てるようになる
改造してる人はいたわ +の画像があるはずだから
それ探してそこのクラスの仕組みみて
アイコンだけ出るようにしちゃうといい >>854
>処理が同じなので1カ所コードを書くだけにしたいのですが、方法を教えて頂け無いでしょうか? >>846
あなたの英語力なんてどうでもいいんだが…
日本語訳も何を示してるのかよくわからん。このEULAは推敲されてるのだろうか >>839
その前に文章があるんじゃないの
街頭の目的ってあるでしょ >>858
多分、わざと玉虫色にして混乱させてるんだと思う。いわゆるFUDみたいな
もので、訴えられたら困るから開発辞退する人が出てくるのを狙ってる
気がする。アメリカ企業はみんなそんなやり口。 >>851
Activityの背景(windowBackground)に入れたら? >>844
どこが意味不明なんだ?
要するにこのSDK使って他のプラットフォームのアプリ開発すんな
もちろんこのSDK使わなきゃ他のアプリ開発してもいいぞ
って言ってるだけやん EULAを承諾する事で利用する権利を得る契約をしているんだから、従う義務が有る。
不法な条項が有ればそれを指摘して契約条件を修正する事も可能だが、勝手に無視して解約違反する事はしない方が良い。
GPLを組み込んで配布したせいで全ソースの開示をせざるを得なかったソフト屋が有ったな。
今回はアパッチライセンスが元なんだろうから、ソース開示義務も無いし利用制限を付加するのも問題無い。
色んなライセンスが入り乱れた環境だから、部分的に切り出した部分が真逆の内容でも不思議じゃない。 皆様、いろいろありがとうございます
とりあえず、すべての画面の共通クラスを作って、setContentViewの後に、動的にアイコンを追加する方法を試しています >>861
それも試してみます
ありがとうございます UnityってProguardってどうなってるんですか Unityのプログラムは全てがネイティブの共有ライブラリになる
Javaコードは.soを読み込む最低限のActivityしかないよ
ちなみにUnrealEngineも大体同じ構造 関係ないけど、コマンドラインから gradle や ant を使わずに、
大体役割が理解できるコマンドだけを使って、Androidの
JNIを使ったHelloWorldプログラムのビルドが今、丁度出来た。 clangやLLVMの本家ばかり探していて見つからなかったけど、
armclang なるものがあったんだ〜。
WindowsやLinux上でARM用のバイナリが生成できるらしい。
ARMといえば、Andoridの主流のCPUで、日本のソフトバンクが
買収したんだよね、確か。 C言語のコンパイル部分をclangにして、JNIの呼び出しに成功したよ〜。 VS2019のNDKを使ってる。
Google公式では NDK 16 では「gccがサポートされなくなっている」と
されてるけど、一番素直にJNIを使うのはgccではないのかと思ってたんだけど、
どういうことなんだろう。
自分の場合は、ちょっとトリッキーな方法で、front-endをclang、
back-endをgccにしてやってみてる。
その中間に複雑なチョメチョメを施してる。 というか、そもそもARMの可読アセンブリ言語をARMのnativeバイナリにする
ようなアセンブラは、普通のclangやLLVMには見つけられなかった。
gccにはある。>>870の armclang にはあるかも知れない。 チャット機能を作りたいと思ってるんですが、
firebase realtimedatabaseみたいに
チャットの書き込みがあったらアプリ側で特に
リロード操作しなくてもアプリの処理が呼ばれて
チャットの書き込みが更新されるみたいなことを
realtimedatabaseを使わずにやりたいんですが
どうやったらいいんでしょうか >>876
Web上にChatのデータを保存することになるだろうから、
そのデータの更新時刻を、XHRなどを使ってアプリ側から時々見に行って
ローカルに持っているデータの時刻と比較してもし新しくなっていたら
データをXHRで読み込めばいいと思う。
例えば、2秒ごとに起動するタイマーを使って、時々更新時刻を
見に行けばよい。 定期的に通信するのはどうなんすかね
書き込みがされたタイミングでサーバー側からpush的にアプリの処理を呼んでほしいですね >>878
apacheやmongooeのような(httpを処理する)「WebServer」は、
外からのリクエストを待機することはできることはできる。
ただし、その場合、localhost:8080 (127.0.0.1:8080) のような
ポートを、「port forwarding」して、まず、LAN(local area network)
に見えるようにして、それをさらに、WAN に出すことが必要に
なるそうだ。大体以下の順序で行うと思う。
1. mongoose でWebServer を立てる。この段階で、local の file system
を、loopback address と呼ばれる、127.nnn.nnn.nnn の
IPアドレスで、http://127.nnn.nnn.nnn:ポート番号/パス名
でアクセスできるようになる。
2. port forwarding を使って、それを、LANの中の他の機器から
見えるようにする。
3. DSU やルーターに、そのIPアドレスをプロバイダが提供している
IPアドレスに変換して、WANで世界中に見えるようにする。 「Socket」を使えばできるかもしれないけれど、複雑すぎてちゃんと理解
できてないので、オイラには分らないので悪しからず。 http://www.rsch.tuis.ac.jp/~mizutani/online/software-basic2002/socket-http.html
↑を見ていたら、host="http://www.edu.tuis.ac.jp";
HTTP_port=80; filepath="index.html" として、以下のようにすれば、
http サーバーと通信できるらしいね。この書き方からすれば、httpサーバー以外
とも通信できそう。Sockeは双方向通信なので、逆にリモートサーバーからの
通信を待機することもできるかもしれない。
Socket http = new Socket(host, HTTP_port);
networkIn = new BufferedReader(
new InputStreamReader(http.getInputStream()));
networkOut = new PrintWriter(http.getOutputStream());
System.out.println("HTTPサーバ" + host + " に接続...");
networkOut.print("GET " + filepath + " HTTP/1.1\n");
networkOut.print("HOST: " + host + "\n");
networkOut.print("\r\n\r\n");
networkOut.flush();
while ((line = networkIn.readLine()) != null) {
System.out.print(line + "\n");
} lineとかslackとかchatworkとかもそんなsocketのプログラミングしてるんでしょうか
realtimedatabaseでもないような気がするんですが
どうやってるんでしょうか Webサーバーたてるとかソケットでやるとか、ユーザーのルータ越えできなくて終了よ
>>883見て理解できないor理解できるようになれないなら素直にポーリングにしとけ アプリエンジニアには敷居が高いっすrealtimidatabaseでやります RecyclerViewの要素を画面に高さ等分で配置するにはどうたらいいんだ? intelliJでkotlinを使おうとしている初心者です。
https://www.suzushin7.jp/entry/2017/05/22/first-kotlin-program-in-intellij-idea
この辺のサイトを見つつ導入しているのですが、hellokotlinが出来ません。
というのも、上記サイトではidea/src/にapp.ktを作ってhello Worldを実行しているのですが、
私の環境では、そもそもsrcディレクトリが作成されておらず自分で作成してみたところ
Newから「kotlin file/class」という選択肢を選択できないです。
KotlinScriptならあるんですけど・・・
初心者すぎて馬鹿馬鹿しい質問かもしれませんが助けてください。 >>888
そういえば、Android Stduio って、デフォルトの HelloWorld のプロジェクト
のビルドに何度も失敗した。やっと、Emulatorで上手くいったと思ったら、
実機接続だと失敗することもあった。その後成功できずにいる。 そういえば、Windowsだと、アカウント名が Taro Yamada の用に
空白が入ったものだと、ASが問題を生じる事があるらしい。 実機持ってるならemuよりapk持ってく方が速い気がする Listviewの高さを取得するメソッドは何ですか?
取得単位はpxです。 >>888
そのサイトだと、HelloKotlin プロジェクト直下に
.idea フォルダ、src フォルダ、HelloKotlin.iml ファイルがあって、
プロジェクト直下の src フォルダを選択して New -> Kotlin File/Class してるように見えるが?
idea/src なんて書いてないよ?
あと、Android と関係無いなら Kotlin のスレッドで質問した方がいい
https://mevius.5ch.net/test/read.cgi/tech/1544268581/ ストアアイコンの仕様が新しくなったのにImage Assetが未だに対応せんのはなぜだ ストアに出すのにアイコン対応は必須じゃないからじゃね?! https://www.youtube.com/watch?v=1av_pTiiReg
↑見てたら、AIDEは、製作中のアプリの画面が出た後、エラーがあるとすぐに
画面の下の方に小さなウィンドウを重ね合わせてエラーがある事を知らせたり、
すぐにアプリからIDEの画面に戻ったりしてるんだけど、どうやってるんだろう?
Root化せずに、他のアプリを kill したり出来るんだっけ? 確か、親プロセスは子プロセスをkillする権限があるからか・・・。
画面下部の通知は WindowManager を使って重ねてるんだろうか? android studioのgroovy console上で、
今開いてるプロジェクト内に書いたメソッド呼ぶのに何か設定が必要ですか?
編集時にはauto complete効いてimport文も自動挿入してくれてますが、
実行するとclassが見つからないと言われます。 >>898
Javaの仕様上は、java ソースの冒頭で同じ名前で package 宣言して
おかないと、自分のプログラム中のクラスであっても参照する事が
できない。
package com.yamadataro.hello;
のような部分。またh、java ソースファイルをおいてある
ディレクトリ構造とこの名前は完全に一致していなくてはならない。
ファイル名とクラス名も一致して無くてはならない。 >>900
それはアイコンそのものの話じゃないの?
アプリ側のアダプティブ・アイコン対応のことを言ってるんだけど。
>5月1日以降、開発者は新しい仕様を満たさないアイコンをPlayコンソールにアップロードできなくなります。ただし、この期間中のGoogle Playストアの既存のオリジナルアイコンは変更されないままです。 >>894
Image Asset で Google Play Store Icon を Shape: None で作っただけじゃダメかね?
普通の Adaptive icon が生成されるような foreground と background のリソースを指定してあれば、
少し中央に寄り過ぎな感じがするけど一応透明部分無しの 512x512 のアイコンが生成されるよね
アルファなしの24ビットPNGに変換しないとダメかな? Console はまだ透明部分有のアルファ付き32bitのPNGも受け付けてくれる 試しに Shape: None で作った Google Play Store Icon を登録してみた
少し中央に寄り過ぎな感じはあるけど、>>903 のブログの新しいアイコン(例)に近い感じになってるから、これからはそういう方針なのかも
スマホで見るとちゃんと角丸に加工してドロップシャドウつけて表示されるのに、
PCのブラウザで見ると角丸に加工してくれないしドロップシャドウ無しで表示される
>>903をよく読むと角丸とドロップシャドウ適用は Android と Chrome OS の Google Play って書いてあるから、
PCブラウザの Google Play は、これからは正方形で表示されるのが仕様なのか? >>902
最初からストアアイコンだと言ってるんだが。
アダプティブ・アイコンならとうにImage Assetで対応してる [日記]
root化せずに、linux用の単独のnative binaryの実行ファイルを、
Android実機に手作業でコピーして実行できるようになったよ。(^−^)/
これで、大量のコマンド類が実行できちゃう。 独自にビルドした javac コンパイラをアプリとしてインストールせずに
dalvikvmに直接指定してAndroid実機上で動作させることに成功したよー。
もしかしたら、世界初かも〜。そんなことないかな。(^_^) どこにもバイナリが転がってなかったから、特殊なソースを探し出してきて
始めて成功したんだよ。4種類くらい試してやっと出来た。ビルドもgradleも
IDEも全く使わずに自作BATと基本的なコンパイルツールだけで行ってる。
なお、JDKなど巨大(?)でコンパイル方法が難しいソースは避けた。 もっと色々試したけど、肝心のところを書いておくよ。
0. そもそも、javac や dx は、ソースが java 言語で書かれている。
aapt は、C/C++で書かれているらしい。
1. TerminalIDE のソースで実験した。せっかくIDE自体のビルドには成功したが、
肝心の、lIDE自体が古くなっていて既にprebuild版でも
javacが起動できなくなっているらしいことが分った。
2. JavaIDEdroid は今でも javaのビルドは正常動作するが、javac相当の
ものが、IBM 製の Eclipse Java Compiler なるものだった。
3. Java N-IDE なるものがあって、今でもjavaのビルドは正常動作する。
これが今回上手く行ったもの。ただし、ソースツリーは、JDKとは違った
状態になっているように見える。
4. tools.jar, dx.jar というファイルの中に、それぞれ、javac, dx の本体が入っている。
これは、Android 用の dex ファイルの中に組み込むことには成功した。しかし、
まず、クラスローダー関連で起動が大変。工夫して何とか起動できるようになり、
-help や -version は動作するようになった。しかし、test.java を入力して
コンパイルしてみると、バグが見つかったのでこの url に連絡してほしい、
というようなメッセージが出てダウンした。 ちなみに、4.は、JDKなどに付属してくるもの。3.とは基本的に関係ない。
3.は、JDKのソースには似ているが、1.のspartucuside(?)氏が「HACK」
したソースを受け継いで使っているらしい。自分が見つけた中で、Andorid
実機でjavacが、現在動くのは、2と3のみだった。
謎なのは、4.は、テキストを入力してテキストを出力するような単純なものなのに、
どうしてAndroidでは失敗するのかという事。help メッセージや version情報まで
は出るようになったので、標準出力への出力は正常動作している。
なにか、Android の API Level 関連で、動的リンクしているクラスか何かが、
僅かにどこかが間違っているのかもしれない。spartacuside 氏がいったいなにを
やって動作にこぎつけたのか、興味があるけど、なかなか難しそうだ。 ID:TcNqts7M
スレ違い
ここは質問スレです
自分のブログでやってください Androidの実行環境のlibcがそもそも開発母機のそれとはかなり違うことを認識しないとな。 >>914
すれ違いといわれるけれど、大事なことなので追加。
3. は、1. の sparucatus 氏のソースを取り込んでいて、Oracle か AOSP かの
javac の *.java ソースもそっくりそのまま自分のソースツリーの中に
含めてしまっている。しかし、実際のコンパイラは、そっちは全く使わずに
eclipse compiler の方を使っている。どういうことかというと、eclipse compiler
の方のソースも中に(二重に)入っているから。
そこで結局、現状2.のソースを見て、 >>920
結局、現状、Andoridで *.javaソースをコンパイルするコンパイラは、
Eclipse Compiler の方だけかもしれないらしい。 誤:sparucatus
正:sparutacus
なお、>>921 は、「Android 実機での stand alone コンパイラ」の話。 UUIDって便利だな
確率的には230京回に一回しか重複することがないらしい
二つのUUIDを組み合わせたら230京回の2乗に一回ということで、
これはもう実質重複することはないと考えていいよね 文字列をテキストファイルに書き込みたいのですが、最適解はopenFileOutput()ですか?
ガチ初心者ですいません >>919
clang と ld を実機に手作業で adb push して、puts による Hello World
の出力に成功したけど、library は、-lgcc つまり、libgcc.a をリンクして
成功した。libgcc.a は、NDK に入っていたものを adb push した。
まだ、bionic library はやってみてない。 アンドロイドアプリの脆弱性ってどんなのありますか? AccessibilityServiceの悪用とか? データを暗号化する場合、サーバーから取得するしかない? >>931
apkを解析をして中身を見られるとのことなので、一部のデータを暗号化したい
その方法で、
*apkにあらかじめ暗号化したデータ(暗号化したアセットファイル)を含む場合
1. apkに復号化するキーを含む
2. apkにキーを含まず、毎回同じキーをサーバーから取得
・取得したキーはアプリ内に保存するか毎回取得するか
*apkにデータを含まない場合
3. アプリ内でランダムなキーを生成してサーバーに送り、サーバーから暗号化したデータを取得
・この処理はアプリインストール後の初回起動時1回のみ
・取得したデータは暗号化してSharedPreferenceに保存
・生成したキーも保存
の3つを思いついたんだけど、
1は、apkを解析したら、1はキーを見られるからだめ。
2は、SSL通信でもキーを見られる?
3は、キーも見られないと思うんだけどどう?
2でも3でもサーバーから取得が必要になるという話
他によい方法ある? そこだけc++で書いておいたら?
解析はかなり辛くなったはず なるほど
C++で固定のキーを生成してそれを使ったらいいか Android Keystore システムっていうのもあるけど >>935
Android Keystore システムってアプリ起動後にキーを作成して管理できるってもの?
暗号化したデータのアセットをapkに含める場合、
このデータを暗号化するときにキーが必要になるけどそのキーはどうしたらいいんだ?
アプリ起動前にキーが必要になるんだけど まぁオラクルが如何にバカなことをしたかってことやね JavaからKotlinへの変換の話?
それならかなり自動でできると思うが。
まあそれでもソースが沢山あったら大変だろうけどね。 Kotlinなんて何の応用もないからやりたくない
Pythonを推すのここれなのか一つにして欲しい 変換はどんな裏芸的テクニック使ってるアプリもアクティビティの数が膨大にあるアプリも
100%うまくできるようになってるの? え?今あるjavaコードをkotlinに変えなきゃいかんの? 自動変換しても手直しは必要
そもそもビルドできない状態になることもあるし
危険な!!演算子が大量に使われてたりする 最初からKotlinでやってる俺、高みの見物
javaやってなかったから迷わずKotlin選んだわ 2010年にリリースしてずっとアプデし続けてるアプリは今更kotlinに変えようとは思えない。量が膨大で。 アプリ開発してる皆さんは結構儲かってるのですか?
気になります 儲かってるから続いてる
儲からなくなったら他のことする レス数が950を超えています。1000を超えると書き込みができなくなります。