gradlew で ndk-build を直接実行した場合
app\build\intermediates\ndk\debug に Android.mk がその都度作成されるようです
ですので build.gradle 内の ndk{} で色々記載した結果が
本来実行したい Android.mk の内容と同じになれば
gradlewから直接コンパイルができる様になると思われます
2015年3月23日月曜日
2015年3月19日木曜日
いつのまにかAndroid Studio になってました JNI のコンパイルでハマりました
3年前から別件で忙しく全然更新していなかったら
いつのまにか開発環境がAndroid Studioになってました
そこでとりあえず ADTの環境から引っ越しです
前にやっていたのは
NativeActivity のゲームシステム構築開始で絵の表示を
libpng.a で行う実験中でした
これを実験半ばでAndroid Studioに移行することから始めた訳ですが・・・
・問題点
スタティックライブラリである libpng.a がどうしてもgradle環境に移行出来ない
src\main\jniLibs\armeabiに入れてもリンクしない
常駐ライブラリと扱い
android-ndk-r10d\platforms\android-?\arch-arm\usr\lib に追加しても
リンク後に変なエラーが出る
等々
最終的に従来のAndroid.mk を使う事に落ち着きましたが
ネットで先駆者の人達の情報を見ても一筋縄では行かなかったので
ここにメモします
・手法
1)Android Studio のTerminal から ndk-build の実行
いろいろと検討した結果面倒だったので
このコマンドが置いてある位置をシステムパスに追加しました
2)実行後に出来た libnative-activity.soの移動
これの手作業です 自動化の方法もありそうですが後で考えます
1)を実行すると src\main\libs\armeabiにできるので
これを src\main\jniLibs\armeabiにコピーします
3)Android Studioの Run->Debug'app' の実行
この実行の時に 上記libnative-activity.soを作成しないように
app/gradle の内容に二点手を加えます
sourceSets.main {
jniLibs.srcDir 'src/main/jniLibs'
jni.srcDirs = [] // 1)これでCソースのコンパイルは行いません
}
defaultConfig {
applicationId "jp.gr.java_conf.omoshiroya.NAPng"
minSdkVersion 10
targetSdkVersion 10
}
/* //2)念のため プロジェクト移行で作成されたndk指定をコメントアウト
ndk {
}
*/
書いてみると簡単な事ですが2日掛かりました・・・
いつのまにか開発環境がAndroid Studioになってました
そこでとりあえず ADTの環境から引っ越しです
前にやっていたのは
NativeActivity のゲームシステム構築開始で絵の表示を
libpng.a で行う実験中でした
これを実験半ばでAndroid Studioに移行することから始めた訳ですが・・・
・問題点
スタティックライブラリである libpng.a がどうしてもgradle環境に移行出来ない
src\main\jniLibs\armeabiに入れてもリンクしない
常駐ライブラリと扱い
android-ndk-r10d\platforms\android-?\arch-arm\usr\lib に追加しても
リンク後に変なエラーが出る
等々
最終的に従来のAndroid.mk を使う事に落ち着きましたが
ネットで先駆者の人達の情報を見ても一筋縄では行かなかったので
ここにメモします
・手法
1)Android Studio のTerminal から ndk-build の実行
いろいろと検討した結果面倒だったので
このコマンドが置いてある位置をシステムパスに追加しました
2)実行後に出来た libnative-activity.soの移動
これの手作業です 自動化の方法もありそうですが後で考えます
1)を実行すると src\main\libs\armeabiにできるので
これを src\main\jniLibs\armeabiにコピーします
3)Android Studioの Run->Debug'app' の実行
この実行の時に 上記libnative-activity.soを作成しないように
app/gradle の内容に二点手を加えます
sourceSets.main {
jniLibs.srcDir 'src/main/jniLibs'
jni.srcDirs = [] // 1)これでCソースのコンパイルは行いません
}
defaultConfig {
applicationId "jp.gr.java_conf.omoshiroya.NAPng"
minSdkVersion 10
targetSdkVersion 10
}
/* //2)念のため プロジェクト移行で作成されたndk指定をコメントアウト
ndk {
}
*/
書いてみると簡単な事ですが2日掛かりました・・・
登録:
投稿 (Atom)