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