HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
1105
和希HSP3Dishによるandroidアプリ制作 NDKのビルドが失敗する!22解決


和希

リンク

2014/11/5(Wed) 11:02:30|NO.65925

HSP3Dishにてandroidアプリを作ろうとしています。
しかしビルドをすると「NDKのビルドに失敗しました」と出て完了しません。

HSP3Dish helperでのoptionも間違っていませんし、
NDKに関しては指定したフォルダの直下に「ndk-stack.exe」もあります。

何が間違ってるのでしょうか?



この記事に返信する


skyblue

リンク

2014/11/5(Wed) 16:05:04|NO.65926

環境やビルドログを書かないと的確な回答がないので投稿してください。
JDKやJREは6を公式で推奨しています。



和希

リンク

2014/11/6(Thu) 00:01:23|NO.65936

これが環境です
HSP 3.4RC1
SDK r23.0.2
NDK r7
ant 1.9.4

ちなみにプログラムはBlock3.hspを使っているのでプログラムには問題ないと思います。

以下がビルドのログです
"Compile++ thumb : prototype <= hspsource.cpp

jni/hsp3embed/hspsource.cpp: In function 'void __HspEntry()':
jni/hsp3embed/hspsource.cpp:175:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
jni/hsp3embed/hspsource.cpp: In function 'void L0002()':
jni/hsp3embed/hspsource.cpp:440:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
jni/hsp3embed/hspsource.cpp:443:15: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
jni/hsp3embed/hspsource.cpp: In function 'void L0001()':
jni/hsp3embed/hspsource.cpp:482:21: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
Prebuilt : libcrystax_static.a <= <NDK>/sources/crystax/libs/armeabi-v7a/4.6.3/

SharedLibrary : libprototype.so

libs/armeabi-v7a/libhsp3lib.a(hsp3code.o):hsp3code.cpp:function typeinfo for HSPERROR: error: undefined reference to 'vtable for __cxxabiv1::__enum_type_info'
collect2: ld returned 1 exit status
make: *** [obj/local/armeabi-v7a/libprototype.so] Error 1



skyblue

リンク

2014/11/6(Thu) 16:04:11|NO.65937

Dish helper に設定している各パスを書いて下さい。
設定周りだと思います。



和希

リンク

2014/11/6(Thu) 17:33:35|NO.65938

以下がオプションです
Javaフォルダ:C:\Program Files (x86)\Java\jdk1.6.0_45
SDKフォルダ:C:\android\android-sdk-windows
NDKフォルダ:C:\android\android-ndk-r7
antフォルダ:C:\android\apache-ant-1.9.4
プロジェクト:C:\android

ちなみに以下が各ファイル構成です
■SDK
「android-sdk-windows」
−add-ons
−build-tools
−extras
−platforms
−platform-tools
−samples
−sources
−system-images
−temp
−tools
−AVD Manager.exe
−SDK Manager.exe
−SDK Readme.txt

■NDK
「android-ndk-r7」
−build
−docs
−platforms
−prebuilt
−samples
−sources
−tests
−toolchains
−documentation.html
−GNUmakefile
−ndk-build
−ndk-build.cmd
−ndk-gdb
−ndk-stack.exe
−README.TXT
−RELEASE.TXT

■ANT
「apache-ant-1.9.4」
−bin
−etc
−lib
−manual
−fetch.xml
−get-m2.xml
−INSTALL
−KEYS
−LICENSE
−NOTICE
−README
−WHATSNEW



おにたま(管理人)

リンク

2014/11/6(Thu) 23:28:31|NO.65940

HSP3Dishについてのご報告ありがとうございます。
コンパイルまでは進んでいますが、NDK関連のエラーが出ていると思われます。
NDKがr7だと古すぎるかもしれませんので、r9かr10で試してみて頂けますか?



和希

リンク

2014/11/7(Fri) 00:00:17|NO.65941

ここのURL
http://developer.android.com/tools/sdk/ndk/index.htmlにあるNDK-r10cを
ダウンロードして入れてオプションにも反映させてやってみました

※r10が見つからなかったのでr10cでやりましたが、r10とr10cは違いがあるのでしょうか…


再びNDKでビルド失敗しています
以下がログになります
Android NDK: WARNING:jni/Android.mk:prototype: non-system libraries in linker flags: -lhsp3lib
Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES
Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the
Android NDK: current module
[armeabi-v7a] Compile++ thumb: prototype <= hspsource.cpp
jni/hsp3embed/hspsource.cpp: In function 'void __HspEntry()':
jni/hsp3embed/hspsource.cpp:118:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
jni/hsp3embed/hspsource.cpp: In function 'void L0001()':
jni/hsp3embed/hspsource.cpp:219:18: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
jni/hsp3embed/hspsource.cpp: In function 'void L0002()':
jni/hsp3embed/hspsource.cpp:549:21: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
[armeabi-v7a] SharedLibrary : libprototype.so
C:/android/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: libs/armeabi-v7a/libhsp3lib.a(hsp3gr_dish.o): in function cmdfunc_extcmd(int):jni/hsp3/hsp3gr_dish.cpp:691: error: undefined reference to '__srget'
C:/android/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: libs/armeabi-v7a/libhsp3lib.a(hsp3gr_dish.o): in function cmdfunc_extcmd(int):jni/hsp3/hsp3gr_dish.cpp:701: error: undefined reference to '__srget'
C:/android/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: libs/armeabi-v7a/libhsp3lib.a(hsp3gr_dish.o): in function cmdfunc_extcmd(int):jni/hsp3/hsp3gr_dish.cpp:711: error: undefined reference to '__srget'
C:/android/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: libs/armeabi-v7a/libhsp3lib.a(hsp3gr_dish.o): in function cmdfunc_extcmd(int):jni/hsp3/hsp3gr_dish.cpp:713: error: undefined reference to '__srget'
collect2: ld returned 1 exit status
make.exe: *** [obj/local/armeabi-v7a/libprototype.so] Error 1


ちなみにクリーンをすると以下のようなログが出ます
C:\android\prototype\obj\local\armeabi\objs\prototype\hsp3embed\*.*
指定されたパスが見つかりません。
Buildfile: C:\android\prototype\build.xml

-check-env:
[checkenv] Android SDK Tools Revision 23.0.5
[checkenv] Installed at C:\android\android-sdk-windows

-setup:
[echo] Project Name: prototype
[gettype] Project Type: Application

-pre-clean:

clean:
[getlibpath] Library dependencies:
[getlibpath] No Libraries
[subant] No sub-builds to iterate on

BUILD SUCCESSFUL
Total time: 0 seconds



skyblue

リンク

2014/11/7(Fri) 16:14:39|NO.65943

マニュアルに書いてある通りにプラットフォームAPIとかをインストールしていますよね?
インストールしていなかったらインストールして下さい。



和希

リンク

2014/11/8(Sat) 00:55:11|NO.65947

プラットフォームAPIは以下のをインストール完了(Installed)しています
「Tools」
-Android SDK Tools
-Android SDK Platform-tools
-Android SDK Build-tools(Rev 21.1.1〜17)

「Android 4.2.2(API 17)」
-SDK Platform
-Samples for SDK
-ARM EABI v7a System Image
-Intel x86 Atom System Image
-Google APIs
-Source for Android SDK



skyblue

リンク

2014/11/8(Sat) 07:28:35|NO.65948

パスのうちJDKをC:\android\android-sdk-windows\tools\sdkに変えたりして見て下さい。



和希

リンク

2014/11/8(Sat) 10:05:22|NO.65950

NDKビルド失敗です

オプションのパスは以下の通りです
JDK:C:\android\android-sdk-windows\tools\jdk1.8.0_25
SDK:C:\android\android-sdk-windows
NDK:C:\android\android-ndk-r10c
ant:C:\android\apache-ant-1.9.4



和希

リンク

2014/11/8(Sat) 10:12:28|NO.65951

ちなみにクリーンすると毎回パスが見つかりませんって出ます…

C:\android\prototype\obj\local\armeabi\objs\prototype\hsp3embed\*.*
指定されたパスが見つかりません。
Buildfile: C:\android\prototype\build.xml

-check-env:
[checkenv] Android SDK Tools Revision 23.0.5
[checkenv] Installed at C:\android\android-sdk-windows

-setup:
[echo] Project Name: prototype
[gettype] Project Type: Application

-pre-clean:

clean:
[getlibpath] Library dependencies:
[getlibpath] No Libraries
[subant] No sub-builds to iterate on

BUILD SUCCESSFUL
Total time: 0 seconds



yu

リンク

2014/11/8(Sat) 12:01:30|NO.65952

> NDKビルド失敗です
>
> オプションのパスは以下の通りです
> JDK:C:\android\android-sdk-windows\tools\jdk1.8.0_25
> SDK:C:\android\android-sdk-windows
> NDK:C:\android\android-ndk-r10c
> ant:C:\android\apache-ant-1.9.4

こんにちは。
JDKのフォルダ指定が間違っているような気がします。

JDK=Dishオプションの Javaフォルダのことを指しているのであれば、
以前、和希さん自身が記載されていたフォルダである、

> Javaフォルダ:C:\Program Files (x86)\Java\jdk1.6.0_45

こちらを指定して使用してください。


skyblueさんの言われた
> パスのうちJDKをC:\android\android-sdk-windows\tools\sdkに変えたりして見て下さい。
は、JDKではなく、SDKフォルダのことを言っているのだと思いますが・・。

SDKについては指定したフォルダ(C:\android\android-sdk-windows)の中に
「platforms」というフォルダがあればOKです。
(もちろん、その中に「android-17」というフォルダがあることも念のため確認ください。)



skyblue

リンク

2014/11/8(Sat) 13:24:41|NO.65953

>JDKではなく、SDKフォルダのことを言っているのだと思いますが・・。
書き間違えていました。すみません
パス周りだと思うのですけど・・



おにたま(管理人)

リンク

2014/11/8(Sat) 13:39:04|NO.65954

クリーンした際に、パスが見つかりませんと出ること自体は問題ありません。
また、NDKの種類やパスを変更した場合は、プロジェクト作成から行なって確認してください。
それでもうまくいかない場合は、こちらで調査したいと思いますので
お手数ですがプロジェクトのフォルダをまとめてzipファイルにしたものを
hsp@onionsoft.net までお送りいただけますでしょうか。



和希

リンク

2014/11/8(Sat) 15:34:29|NO.65957

一度全てやり直してみましたが、やはりNDKのビルドに失敗するようです。
私の行った操作を以下にまとめました。

→おにたまさん、メール送りました。

■(1)環境の準備
≫(1.1)android開発環境(SDK)のダウンロード
・サイト(http://developer.android.com/sdk/index.html)から32bit版のSDK(r23.0.2)をダウンロード
・「SDK(r23.0.2)」ををC\androidへ移動

≫(1.2)JDK(Java Development Kit)のダウンロード
・サイト(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)から「jdk-8u25-windows-i586.exe」をダウンロード
・「jdk-8u25-windows-i586.exe」を実行してC\Program File(x89)\Javaに「jdk1.8.0_25」と「jre1.8.0_25」が出現!

≫(1.3)Android NDK(Native Development Kit)のダウンロード
・サイト(http://developer.android.com/tools/sdk/ndk/index.html#Installing)から「android-ndk-r10c-windows-x86.exe」をダウンロード
・「android-ndk-r10c-windows-x86.exe」を実行すると黒い背景に白い文字がババババーっとなってしばらくすると「android-ndk-r10c-windows-x86.exe」と同じ場所に「android-ndk-r10c」が出現!
・「android-ndk-r10c」をC\androidへ移動

≫(1.4)Apache Ant(開発補助ツール)のダウンロード
・サイト(http://ant.apache.org/bindownload.cgi)から「apache-ant-1.9.4」をダウンロード
・「apache-ant-1.9.4」をC\androidへ移動

■(2)PlatformAPIのインストール
・「android-sdk-windows」の中にある「SDK Manager.exe」を実行
・「Tools」にチェックを入れる
・何故か最初から「Android5.0(API 21)」にチェックが付いていたのでチェックを外す
・「Android4.2.2(API 17)」にチェックを入れる
・Installボタンを押す
・「Tools」と「Android4.2.2(API 17)」の全ての項目がInstalledになった

■(3)HSP3Dish Helperの設定
・「hsp3dh.exe」を実行
・オプションにて各フォルダの場所を指定
≫Javaフォルダ:C:\Program Files (x86)\Java\jdk1.8.0_25
≫SDKフォルダ:C:\android\android-sdk-windows
≫NDKフォルダ:C:\android\android-ndk-r10c
≫antフォルダ:C:\android\apache-ant-1.9.4
≫プロジェクト:C:\android

■(4)新規プロジェクトの作成
・プロジェクト名を「prototype」と入力
・パッケージ名を「kazuki.prototype」と入力
・新規作成ボタンを押すとC\androidにフォルダ「prototype」が出現

■(5)ビルド
・C:\Program Files\hsp34\sample\hsp3dishにあるサンプルプログラム「block3.hsp」を指定
・ソーススクリプトにC:\Program Files\hsp34\sample\hsp3dish\block3.hspと入力
・データファイルは不要によりデータファイルには未入力
・プロジェクト名をprototypeを選択
・ビルドボタンを押す → エラーが発生しましたっと警告
・C:\Program Files\hsp34\sample\hsp3dishにあるサンプルプログラム「block3.hsp」をC:\android\prototype\hsp(プロジェクト「prototype」の中にあるhspフォルダ)に「block3.hsp」を移動
・移動後のblock3.hspを指定するためC:\android\prototype\hsp\block3.hspと入力
・ビルドボタンを押す ⇒ NDKのビルドに失敗

jni/hsp3embed/hsp3r.cpp:75:71: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
[armeabi-v7a] Compile++ thumb: prototype <= hspsource.cpp
jni/hsp3embed/hspsource.cpp: In function 'void __HspEntry()':
jni/hsp3embed/hspsource.cpp:118:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
jni/hsp3embed/hspsource.cpp: In function 'void L0001()':
jni/hsp3embed/hspsource.cpp:219:18: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
jni/hsp3embed/hspsource.cpp: In function 'void L0002()':
jni/hsp3embed/hspsource.cpp:549:21: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
[armeabi-v7a] StaticLibrary : libstdc++.a
[armeabi-v7a] SharedLibrary : libprototype.so
C:/android/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: libs/armeabi-v7a/libhsp3lib.a(hsp3gr_dish.o): in function cmdfunc_extcmd(int):jni/hsp3/hsp3gr_dish.cpp:691: error: undefined reference to '__srget'
C:/android/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: libs/armeabi-v7a/libhsp3lib.a(hsp3gr_dish.o): in function cmdfunc_extcmd(int):jni/hsp3/hsp3gr_dish.cpp:701: error: undefined reference to '__srget'
C:/android/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: libs/armeabi-v7a/libhsp3lib.a(hsp3gr_dish.o): in function cmdfunc_extcmd(int):jni/hsp3/hsp3gr_dish.cpp:711: error: undefined reference to '__srget'
C:/android/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: libs/armeabi-v7a/libhsp3lib.a(hsp3gr_dish.o): in function cmdfunc_extcmd(int):jni/hsp3/hsp3gr_dish.cpp:713: error: undefined reference to '__srget'
collect2: ld returned 1 exit status
make.exe: *** [obj/local/armeabi-v7a/libprototype.so] Error 1



yu

リンク

2014/11/9(Sun) 10:15:05|NO.65963

おはようございます。

おや?と思ったところ。

>≫(1.2)JDK(Java Development Kit)のダウンロード
>・サイト(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)から「jdk-8u25-windows-i586.exe」をダウンロード
>・「jdk-8u25-windows-i586.exe」を実行してC\Program File(x89)\Javaに「jdk1.8.0_25」と「jre1.8.0_25」が出現!


以前から言われているように、javaは1.7や1.8ではなく、1.6(java6)をインストールし使用ください。
今インストールされているのは1.8.0ならばjava8のこととなります。

先日の和希さんのレスで、Dishオプションのjavaフォルダには
> Javaフォルダ:C:\Program Files (x86)\Java\jdk1.6.0_45
とあったので、java6をインストールされていたのだと思っておりましたが・・。

では、

どこでjava6をダウンロードすればいいの?・・ですが、

http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html#jdk-6u45-oth-JPR
上記オラクルサイトにあります。
全面英語ですが、ひるまずに。

1)「Java SE Development Kit 6u45」をクリックし、ダウンロード画面に移動します。
2)Accept License Agreement側の○をクリックし、マークします。
3)Windowsx86 69.85 MB jdk-6u45-windows-i586.exe と書かれたところのリンクをクリック。

するとオラクルのアカウント入力しろというので、

4)すでにアカウントを持っていれば入力しログインし、6)へ。もってないならアカウント作成をクリック。
5)メアド、パスワード、住所などを入力。ここは日本語ページなのでわかりやすいでしょう。
6)するとダウンロードができます。

ダウンロードされた実行ファイルをダブルクリックし、起動してインストールします。
HSP3DishオプションのJavaフォルダに
C:\Program Files (x86)\Java\jdk1.6.0_45
を指定し、ビルドしてみてください。



おにたま(管理人)

リンク

2014/11/10(Mon) 21:14:35|NO.65981

ファイルの送付ありがとうございます。
こちらで調査したところ、プロジェクトファイル自体には大きな問題はありませんでした。
ビルドができない要因は、NDK r10cの標準Cライブラリ変更によるリンクの失敗だと判明しました。
色々とお手数おかけしました。
取り急ぎこちらで、NDK r10cに対応したアップデートを作成しました。
http://www.onionsoft.net/hsp/file/hsp3dishlib141110.zip

こちらを適用頂くか、古いバージョンであるr9cなどをダウンロードして使用頂ければ問題ないかと思います。
http://dl.google.com/android/ndk/android-ndk-r9c-windows-x86.zip



yu

リンク

2014/11/11(Tue) 16:53:20|NO.65988

おにたまさんへ
1つ便乗質問してよいでしょうか。

javaのバージョンですが、1.8を使用しても良いのでしょうか。
以前1.7でビルドしてうまくいかなかったので、これまでの
公式マニュアルの通り1.6でビルドすることで解決しました。
1.8系はこれまで入れておりません。

もし、1.8でのリリース時の署名問題と、ビルドの問題等解決しているのでしたら、
セキュリティに心配のある1.6系はアンインストールし、1.8にしたいのですが。
公式の見解としてはいかがなのでしょうか。



おにたま(管理人)

リンク

2014/11/12(Wed) 22:35:09|NO.66003

>yuさん

返信ありがとうございます。
JDK8については、問題なく署名ができるという情報を確認していますが、まだこちらでは詳しく検証していないため、推奨はしていません。
今後、安定してビルドできることが確認できましたらHSP3Dishのアップデートとともに、アナウンスしていきたいと思います。



sens

リンク

2014/11/13(Thu) 03:02:48|NO.66004

ご情報提供ありがとうございます



yu

リンク

2014/11/13(Thu) 11:07:25|NO.66006

おにたまさんへ

正式な発表ではないとはいえ、1.8でも大丈夫ということですね。
java6(1.6系)は脆弱性などが心配でしょうがなかったんです。
これで安心して1.8への移行ができます。

ありがとうございます。



和希

リンク

2014/11/14(Fri) 15:26:28|NO.66012

おかげさまでビルドできました!
皆様助けて頂きありがとうございます!

※ビルドは完了しましたけど、転送するとずっと処理中です…



ONION software Copyright 1997-2021(c) All rights reserved.