'da belirtilen her platform için makefile yoluyla kabuk komut dosyasını çalıştırıyorum, platform x86, armeabi ve armeabi-v7a için geliştirilmiş bir Android uygulamasına sahibim. Artık platformun x86 veya kol olup olmamasına bağlı olarak, senaryoyu uygun argümanlarla uygun şekilde çalıştırmam gerekiyor, böylece uygun üçüncü parti araç ortamı değişkenleri ayarlanıyor.Android, APP_ABI
.o.cpp:
ifeq ($(TARGET_ARCH),x86)
$(info $(shell ($(CACHE_LOCAL_PATH_MAIN)/setup_tool.sh x86)))
else
$(info $(shell ($(CACHE_LOCAL_PATH_MAIN)/setup_tool.sh arm)))
endif
Ama sorun makefile ayrıştırılır zaman, bu komut dosyaları her platformun derleme başlar önce değil başlangıç safhasında kendisini 3 kez çalıştırmak ve almak,: Ben aşağıda yapıyor çalıştı. Bunu düzeltmenin bir yolu var mı? Bu yüzden, betik her platformun derlenmesinden hemen önce kaçıyor. Teşekkürler. dosya Android.mk ile GÜNCELLEME
:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES := \ <path_to_include_files>
LOCAL_CFLAGS := <cflags included here>
LOCAL_LDLIBS := <ld libs included here>
LOCAL_SRC_FILES := <src files to be compiled>
LOCAL_MODULE := <module_name>
LOCAL_SHARED_LIBRARIES := <shared libs on which we are dependent>
LOCAL_WHOLE_STATIC_LIBRARIES := <static libs>
include $(BUILD_SHARED_LIBRARY)
** Android.mk ** 'e sahipseniz, o zaman en iyi uygulama tüm ilgili açıklamaları buraya koymaktır. Unutmayın ki, Android.mk ** sonunda bir makefile, ve aynı sözdizimi kurallarını ve yaşam döngüsünü her zamanki bir makefile olarak izler, sadece NDK'nın karmaşık çerçevesinden alınır ve birden çok kez kullanılır (ABI başına bir kez). ve yerel kitaplığı hedef olarak ayarlar. Böylece, 'setup_tool.sh' dosyasını yerel kitaplığın bir bağımlılığı olarak çalıştırabilirsiniz. –
Evet, Android.mk kullanıyoruz. Kabuk betiğini, hedeflediğim paylaşılan nesneye bağımlılık olarak nasıl eklediğimi lütfen paylaşır mısınız? .so oluşturmak için format benim soruya eklediğim gibi görünüyor. –
Bu çevresel değişkenleri ne zaman kullanmak istiyorsunuz? Bu kuralın uygulanmasında veya başka bir kuralda mı? – Beta