お世話になっております。ninaと申します。
以前、下記の件で質問させて頂いたのですが、その続きの質問となります。
宜しくお願い致します。
jarとsoファイルを使用したアプリをプリインアプリとして組-み込む方法
https://groups.google.com/group/android-group-japan/browse_frm/thread/8eb8d1b0140f41e7?hl=ja#
上記の件ですが、TARGET_BUILD_VARIANTをuserモードにして開発を進めておりましたが、
engモードにしてビルドすると、正常にアプリが起動するようになりました。
ログも参照してみましたが、エラーも特に発生しなくなりました。
しかしながら、正式にリリースする場合、TARGET_BUILD_VARIANTをuserモードにしなければなりませんので、
現在原因を究明中です。
userモードでビルドすると、相変わらず以下のエラーが発生し、アプリが起動できません。
----------
DEBUG/dalvikvm(1464): GetMethodID: method not
found: Lcom/xxxx/xxx/xxxx/xxxxx;.init:(Ljava/lang/String;ILjava/lang/
String;Ljava/lang/String;)Lcom/xxxx/xxx/xxxx/xxxxx;
----------
また、前回の質問時からの差分としては、アプリのAndroid.mkを若干変更しております。
アプリの構成は特に変えておらず、/system配下にプリインアプリとして組み込んでおります。
----------
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := TestApp
LOCAL_JNI_SHARED_LIBRARIES := libabc
LOCAL_STATIC_JAVA_LIBRARIES := libaaa
LOCAL_CERTIFICATE := platform
LOCAL_ASSET_FILES := $(call find-subdir-assets, assets)
include $(BUILD_PACKAGE)
##################################################
include $(CLEAR_VARS)
LOCAL_PREBUILT_LIBS := libs/armeabi/libabc.so
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libaaa:jars/aaa.jar
include $(BUILD_MULTI_PREBUILT)
include $(call all-makefiles-under, $(LOCAL_PATH))
----------
私がこれまでに調査した方法は、以下の通りです。
※動作確認は自社のブレッドボードを使用
①build.propの以下2行をuserモードでビルドした環境にadb pushし動作確認。
"ro.kernel.android.checkjni=1"
"ro.setupwizard.mode=OPTIONAL"
→動作に変わり無し。
※"ro.secure=0"はこれから試す予定
② ①のbuild.propをadb pushからではなく、
main.mkの変更し、userモードにも適用する形でビルドし、動作確認。
→動作に変わり無し。
③userdebugモードでビルドし、動作確認。
→動作に変わり無し。
調査の観点としましては、engモードとuserモードではbuild.propにセットされる変数に差分があるため、
userモードでビルドした環境に、engモードでセットされる変数を適用した場合の動作を調べています。
・・・が、いずれも動作には変わりありませんでした。
今後の調査としては、出ているログがJNIのエラー内容ですので、jni.cにログ埋め込みで
ソースから辿っていく予定です。
何か情報をお持ちの方は、ご教示頂けませんでしょうか?
宜しくお願い致します。