トップページ > 記事閲覧
Android版のアプリが動かない
名前:ひよっこ 日時: 2022/03/10 23:11

つい先ほどAndroid Studioをダウンロードし、本サイトの使い方を参考に進めていましたが、うまく動きません。 ビルドは問題なくできますが、実行するとアプリ起動直後に停止してしまいます。 『Android Studio による Androidアプリ開発でのDXライブラリの使い方』 を参考に行いました。最新版と多少違うのか、操作に若干の違いがあるようですが概ね同じ様に進めたつもりです。 Android Studioの最新版では上記と何か手順が変わっているようでしたら教えて下さい。 また、assetsフォルダの追加方法も分かりませんでした。 『Androidアプリ開発の基礎的な情報や注意点など』 を参考に進めてみましたが、 A 次にメニューから『File』→『New』→『Folder』→『Assets Folder』を選択します。 のところで、『Folder』が見当たらず、assetsフォルダをうまく追加できませんでした。 素人質問で申し訳ありませんが、教えて下さい。
メンテ

Page: 1 | 2 |

Re: Android版のアプリが動かない ( No.3 )
名前:管理人 日時:2022/03/12 12:33

うーん謎ですね… 『Android Studio による Androidアプリ開発でのDXライブラリの使い方』の手順の 『2.プロジェクトの作成』まで行った状態( DXライブラリ関係の設定を一切行っていない状態 )で Runした場合もエラーになってしまいますでしょうか? ( 正常に動作すれば白い画面の中心に『Hello from C++』と表示されます )
メンテ
Re: Android版のアプリが動かない ( No.4 )
名前:ひよっこ 日時:2022/03/12 23:35

やってみました。 仰る通り、『Hello from C++』とだけ出ました。 念の為そのまま全ての手順を済ませてもう一度Runしてみましたが、 やはりアプリが停止してしまいます。
メンテ
Re: Android版のアプリが動かない ( No.5 )
名前:管理人 日時:2022/03/13 04:52

お試しいただきありがとうございます そのままだと大丈夫なのですね… もしかしたら AndroidManifest.xml に何か原因があるかもしれませんので、 よろしければプロジェクトの AndroidManifest.xml の内容を丸ごと掲示板に貼り付けていただけないでしょうか? m(_ _)m
メンテ
Re: Android版のアプリが動かない ( No.6 )
名前:ひよっこ 日時:2022/03/13 06:09

分かりました。以下がAndroidManifest.xmlの中身です。 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="HTTP://schemas.android.com/apk/res/android" package="com.example.test"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Test" android:hasCode="false"> <activity android:name="android.app.NativeActivity" android:exported="true"> <meta-data android:name="android.app.lib_name" android:value="native-lib" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> なお、2行目のHTTP://は小文字にすると本サイトに投稿できないようなので大文字で書いていますが、実際は小文字です。 念のためCMakeLists.txtも張っておきます。 # For more information about using CMake with Android Studio, read the # documentation: HTTPS://d.android.com/studio/projects/add-native-code.html # Sets the minimum version of CMake required to build the native library. cmake_minimum_required(VERSION 3.18.1) # Declares and names the project. project("test") # Creates and names a library, sets it as either STATIC # or SHARED, and provides the relative paths to its source code. # You can define multiple libraries, and CMake builds them for you. # Gradle automatically packages shared libraries with your APK. include_directories( C:/DxLib_Android/Lib_Android/${ANDROID_ABI} ) link_directories( C:/DxLib_Android/Lib_Android/${ANDROID_ABI} ) add_library( # Sets the name of the library. native-lib # Sets the library as a shared library. SHARED # Provides a relative path to your source file(s). native-lib.cpp) # Searches for a specified prebuilt library and stores the path as a # variable. Because CMake includes system libraries in the search path by # default, you only need to specify the name of the public NDK library # you want to add. CMake verifies that the library exists before # completing its build. find_library( # Sets the name of the path variable. log-lib # Specifies the name of the NDK library that # you want CMake to locate. log) # Specifies libraries CMake should link to your target library. You # can link multiple libraries, such as libraries you define in this # build script, prebuilt third-party libraries, or system libraries. target_link_libraries( # Specifies the target library. native-lib # Links the target library to the log library # included in the NDK. ${log-lib} android GLESv1_CM EGL GLESv2 OpenSLES m DxLib DxUseCLib jpeg png zlib tiff theora_static vorbis_static vorbisfile_static ogg_static bullet opus ) 2行目のHTTPS://は実際は小文字です。
メンテ
Re: Android版のアプリが動かない ( No.7 )
名前:TAKU 日時:2022/03/14 00:20

自分も同じエラーが出たことがあります。 自分の環境では AndroidManifest.xml に記述を追加することで問題の回避をしています。 追加個所のみ記載します。 <?xml version="1.0" encoding="utf-8"?> <manifest> <application> <activity> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove" /> </application> </manifest> provider のブロックを追加すると初期化時に起きる問題が回避できます。(ただ、この対応がアプリ開発の定石として問題ないのかはわからないです。。。)
メンテ
Re: Android版のアプリが動かない ( No.8 )
名前:管理人 日時:2022/03/14 02:22

> ひよっこさん AndroidManifest.xml と CMakeLists.txt の中身の貼り付けありがとうございます 拝見する限りではこちらの2つのファイルに問題は無さそうです 尚、その後私の手元の環境で、Android Studio を最新バージョンにした後に 新規にプロジェクトを作成してDXライブラリ Android Sutdio版の使い方説明に沿って 手順を進めた所、ひよっこさんと同じように起動直後にアプリが終了する現象が発生しました 原因を調べた所、以下の手順で正常に起動できるようになりました   1.プロジェクトのファイルのリストから『Gradle Scripts』→『build.gradle (Module: (プロジェクト名).app)』をダブルクリックして内容を表示   2.下から 7行目の implementation 'androidx.appcompat:appcompat:1.4.1'    と記述されている箇所の『1.4.1』という数字の部分を『1.3.0』に変更 implementation 'androidx.appcompat:appcompat:1.3.0'   3.画面上部に『Gradle files have changed since last project sync. A project sync may be necessary for the IDE to work properly.』と    表示されたら、その右側にある『Sunc Now』をクリックしてプロジェクトの同期を実行する よろしければお試しください m(_ _)m > TAKUさん ご情報ありがとうございます 手元で早速こちらの追加記述を試してみたのですが、追加記述の部分でエラーが発生してしまいました… ( ビルドエラーが発生して、provider の記述の下に赤線が引かれます ) AndroidManifest.xml を以下のように変更したのですが、追加の仕方を間違っていますでしょうか? <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.test2020313e"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Test2020313e" android:hasCode="false"> <activity android:name="android.app.NativeActivity" android:exported="true"> <meta-data android:name="android.app.lib_name" android:value="native-lib" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove" /> </activity> </application> </manifest>
メンテ
Re: Android版のアプリが動かない ( No.9 )
名前:ひよっこ 日時:2022/03/14 07:43

管理人様、TAKU様、回答ありがとうございます。 管理人様の方の手順で無事実行できました。 ただ、assetsは『New Directory』に当たるものがやはり見当たりません。 こちらも何か追加で変更する必要があるのでしょうか。
メンテ
Re: Android版のアプリが動かない ( No.10 )
名前:管理人 日時:2022/03/15 05:30

> ただ、assetsは『New Directory』に当たるものがやはり見当たりません。 こちらも謎ですね… プロジェクトのフォルダの中にある『app\src\main』フォルダの中に 『assets』というフォルダをエクスプローラ上で普通に新規作成してから プロジェクトを開き直すと Android Studio のリスト上にも assetsフォルダが表示されますので、 ひとまずはこの方法で assetsフォルダを追加してみてください m(_ _)m
メンテ
Re: Android版のアプリが動かない ( No.11 )
名前:TAKU 日時:2022/03/16 21:37

管理人さん > AndroidManifest.xml を以下のように変更したのですが、追加の仕方を間違っていますでしょうか? <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="HTTP://schemas.android.com/apk/res/android" package="com.example.test2020313e"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Test2020313e" android:hasCode="false"> <activity android:name="android.app.NativeActivity" android:exported="true"> <meta-data android:name="android.app.lib_name" android:value="native-lib" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove" /> </application> </manifest> こちらのように変更すると大丈夫だと思うのですが、、、いかがでしょうか?
メンテ
Re: Android版のアプリが動かない ( No.12 )
名前:管理人 日時:2022/03/17 00:31

> TAKUさん > こちらのように変更すると大丈夫だと思うのですが、、、いかがでしょうか? なるほど、<activity></activity> の外に記述するものだったのですね ただ、記載していただいたように変更してみた所、provider の下の赤線はなくなりましたが、 今度は androidx.startup.InitializationProvider の下に赤線と、以下のようなエラー文が出力されて、 ビルドは成功しませんでした… ---------------------------------------- 要素タイプ"provider"に関連付けられている属性"tools:node"の接頭辞"tools"がバインドされていません。 ----------------------------------------
メンテ
Re: Android版のアプリが動かない ( No.13 )
名前:TAKU 日時:2022/03/18 18:33

管理人さん build.gradle に記述を追加する必要がありました。すっかり忘れていました。申し訳ありません。 dependencies に下記の項目を追加するといけると思います。 > implementation "androidx.startup:startup-runtime:1.1.1" もしかしたら、環境によって 1.1.1 の数値が違う可能性があります。
メンテ
Re: Android版のアプリが動かない ( No.14 )
名前:管理人 日時:2022/03/19 03:16

ご返答ありがとうございます > dependencies に下記の項目を追加するといけると思います。 > > implementation "androidx.startup:startup-runtime:1.1.1" > もしかしたら、環境によって 1.1.1 の数値が違う可能性があります。 dependencies に implementation "androidx.startup:startup-runtime:1.1.1" を 追加して『Sync Now』も実行した後ビルドしてみましたが、 ---------------------------------------- 要素タイプ"provider"に関連付けられている属性"tools:node"の接頭辞"tools"がバインドされていません。 ---------------------------------------- 同様のエラー↑が発生しました… よろしければ TAKUさんの環境でビルドが成功した際の build.gradle の内容を こちらに貼り付けて頂けないでしょうか? m(_ _)m
メンテ
Re: Android版のアプリが動かない ( No.15 )
名前:TAKU 日時:2022/03/19 11:40

管理人さん 下記がビルド成功時の build.gradle です。 plugins { id 'com.android.application' } android { compileSdk 32 defaultConfig { applicationId "com.impact" minSdk 26 targetSdk 30 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" externalNativeBuild { cmake { cppFlags '' } } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } externalNativeBuild { cmake { path file('src/main/cpp/CMakeLists.txt') version '3.18.1' } } buildFeatures { viewBinding true } } dependencies { implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' implementation "androidx.startup:startup-runtime:1.1.1" testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' }
メンテ
Re: Android版のアプリが動かない ( No.16 )
名前:管理人 日時:2022/03/20 23:32

build.gradle の貼り付けありがとうございます 手元のプロジェクトは compileSdk が 31 であるなど、幾つか異なる点があったので TAKUさんの build.gradle にあわせて変更してみたのですが、やはり同じエラーが発生しました… すみません、お手数で申し訳ないのですが、TAKUさんの環境で正常にビルドできる プロジェクトをフォルダごと zip圧縮してメールで BQE00322(あっとまーく)nifty.com ( (あっとまーく) を @ に置き換えてください ) に送って頂けないでしょうか? m(_ _;m TAKUさんの環境でビルドが成功するプロジェクトであれば私の環境でもビルドが成功するか 試してみたいと思います
メンテ
Re: Android版のアプリが動かない ( No.17 )
名前:TAKU 日時:2022/03/23 00:20

管理人さん 一応先日にメールを送っておりますが、念のためご連絡いたします。 3月21日(月) 3:38頃に送っています。
メンテ
Re: Android版のアプリが動かない ( No.18 )
名前:管理人 日時:2022/03/23 04:46

すみません、3月21日 3:38 頃に届いたメールを確認してみましたが、TAKUさんからのメールはありませんでした ( 迷惑メールフォルダも確認してみましたが、ありませんでした ) 容量制限で弾かれてしまった可能性もありますので、もしメールのサイズが 20MB以上になっていましたら、 お手数で申し訳ありませんがビルドには不要なファイルなどを削除して容量を 20MB以下になるようにして頂けないでしょうか m(_ _;m
メンテ
Re: Android版のアプリが動かない ( No.19 )
名前:TAKU 日時:2022/03/23 21:30

管理人さん メールの再送をしました。 セキュリティでファイルを直接添付できなかったので、グーグルドライブにアップしてURLを添付しています。 そちらからDLできると思いますので、お手数ですがDLをお願いします。
メンテ
Re: Android版のアプリが動かない ( No.20 )
名前:管理人 日時:2022/03/24 03:45

ファイルのアップありがとうございます TAKUさんのプロジェクトでは手元でも正常にビルド&実行することができました 自分が作成したエラーが発生してしまうプロジェクトと何が違うのか調べてみたところ、 TAKUさんがアップしてくださったプロジェクトの AndroidManifest.xml の <manifest> には 以下のような一行が追加されていました xmlns:tools="http://schemas.android.com/tools" なので自分が作成した、エラーが発生してしまうプロジェクトの AndroidManifest.xml の <manifest> についてもこちら <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.test2020313e"> から、このように <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.example.test2020313e"> 変更したところ、『要素タイプ"provider"に関連付けられている属性"tools:node"の接頭辞"tools"がバインドされていません。』 のエラーも発生せずビルドが成功し、無事実行することが出来ました! すみません、今更なのですが、<provider 〜〜 の記述を追加すると起動時のエラーが 回避できるとのことですが、仕組み的にはどのような事を行ってエラーを回避しているのでしょうか?
メンテ
Re: Android版のアプリが動かない ( No.21 )
名前:TAKU 日時:2022/03/24 19:52

管理人さん >仕組み的にはどのような事を行ってエラーを回避しているのでしょうか? 自分も仕組みを深く理解しているわけではありませんが、アンドロイドのデペロッパーページに詳細があります。 htt ps://developer.android.com/topic/libraries/app-startup おそらく、メイン関数がコールされる前にライブラリを初期化する機能があり、それが "androidx.startup.InitializationProvider" というものだと思います。 これは、初期化関数などを開発者が定義することが期待されており、暗黙的にコールされるみたいです。定義がなければ起動時にエラーが出るようです。 <provider 〜〜〜> などの記述をすることで、暗黙的にコールされる初期化機能を無効化できるので、起動時のエラーを回避できるというロジックみたいです。
メンテ
Re: Android版のアプリが動かない ( No.22 )
名前:管理人 日時:2022/03/26 05:18

ご返答ありがとうございます なるほど、以前は無ければ実行されないだけだった初期化関数が、最近のバージョンからは 強制的に実行されるようになって、しかも初期化関数が定義されていないとエラーになるように なってしまったんですね… (・・;
メンテ

Page: 1 | 2 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存