android-ndk – 如何通过Android NDK构建协议缓冲区

我想建一个本机版的Google协议缓冲库.
我该怎么办?

解决方法

我使用这个 Android.mk并构建SUCCESSFUL
# copyright (C) 2009 The Android Open Source Project
    #
    # Licensed under the Apache License,Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #      http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing,software
    # distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    #
    #

    LOCAL_PATH := $(call my-dir)
    include $(CLEAR_VARS)
    CC_LITE_SRC_FILES := \
        src/google/protobuf/stubs/common.cc                              \
        src/google/protobuf/stubs/once.cc                                \
        src/google/protobuf/stubs/hash.cc                                \
        src/google/protobuf/extension_set.cc                             \
        src/google/protobuf/generated_message_util.cc                    \
        src/google/protobuf/message_lite.cc                              \
        src/google/protobuf/repeated_field.cc                            \
        src/google/protobuf/wire_format_lite.cc                          \
        src/google/protobuf/io/coded_stream.cc                           \
        src/google/protobuf/io/zero_copy_stream.cc                       \
        src/google/protobuf/io/zero_copy_stream_impl_lite.cc


    COMPILER_SRC_FILES :=  \
        src/google/protobuf/descriptor.cc \
        src/google/protobuf/descriptor.pb.cc \
        src/google/protobuf/descriptor_database.cc \
        src/google/protobuf/dynamic_message.cc \
        src/google/protobuf/extension_set.cc \
        src/google/protobuf/extension_set_heavy.cc \
        src/google/protobuf/generated_message_reflection.cc \
        src/google/protobuf/generated_message_util.cc \
        src/google/protobuf/message.cc \
        src/google/protobuf/message_lite.cc \
        src/google/protobuf/reflection_ops.cc \
        src/google/protobuf/repeated_field.cc \
        src/google/protobuf/service.cc \
        src/google/protobuf/text_format.cc \
        src/google/protobuf/unkNown_field_set.cc \
        src/google/protobuf/wire_format.cc \
        src/google/protobuf/wire_format_lite.cc \
        src/google/protobuf/compiler/code_generator.cc \
        src/google/protobuf/compiler/command_line_interface.cc \
        src/google/protobuf/compiler/importer.cc \
        src/google/protobuf/compiler/main.cc \
        src/google/protobuf/compiler/parser.cc \
        src/google/protobuf/compiler/plugin.cc \
        src/google/protobuf/compiler/plugin.pb.cc \
        src/google/protobuf/compiler/subprocess.cc \
        src/google/protobuf/compiler/zip_writer.cc \
        src/google/protobuf/compiler/cpp/cpp_enum.cc \
        src/google/protobuf/compiler/cpp/cpp_enum_field.cc \
        src/google/protobuf/compiler/cpp/cpp_extension.cc \
        src/google/protobuf/compiler/cpp/cpp_field.cc \
        src/google/protobuf/compiler/cpp/cpp_file.cc \
        src/google/protobuf/compiler/cpp/cpp_generator.cc \
        src/google/protobuf/compiler/cpp/cpp_helpers.cc \
        src/google/protobuf/compiler/cpp/cpp_message.cc \
        src/google/protobuf/compiler/cpp/cpp_message_field.cc \
        src/google/protobuf/compiler/cpp/cpp_primitive_field.cc \
        src/google/protobuf/compiler/cpp/cpp_service.cc \
        src/google/protobuf/compiler/cpp/cpp_string_field.cc \
        src/google/protobuf/compiler/java/java_enum.cc \
        src/google/protobuf/compiler/java/java_enum_field.cc \
        src/google/protobuf/compiler/java/java_extension.cc \
        src/google/protobuf/compiler/java/java_field.cc \
        src/google/protobuf/compiler/java/java_file.cc \
        src/google/protobuf/compiler/java/java_generator.cc \
        src/google/protobuf/compiler/java/java_helpers.cc \
        src/google/protobuf/compiler/java/java_message.cc \
        src/google/protobuf/compiler/java/java_message_field.cc \
        src/google/protobuf/compiler/java/java_primitive_field.cc \
        src/google/protobuf/compiler/java/java_service.cc \
        src/google/protobuf/compiler/javamicro/javamicro_enum.cc \
        src/google/protobuf/compiler/javamicro/javamicro_enum_field.cc \
        src/google/protobuf/compiler/javamicro/javamicro_field.cc \
        src/google/protobuf/compiler/javamicro/javamicro_file.cc \
        src/google/protobuf/compiler/javamicro/javamicro_generator.cc \
        src/google/protobuf/compiler/javamicro/javamicro_helpers.cc \
        src/google/protobuf/compiler/javamicro/javamicro_message.cc \
        src/google/protobuf/compiler/javamicro/javamicro_message_field.cc \
        src/google/protobuf/compiler/javamicro/javamicro_primitive_field.cc \
        src/google/protobuf/compiler/python/python_generator.cc \
        src/google/protobuf/io/coded_stream.cc \
        src/google/protobuf/io/gzip_stream.cc \
        src/google/protobuf/io/printer.cc \
        src/google/protobuf/io/tokenizer.cc \
        src/google/protobuf/io/zero_copy_stream.cc \
        src/google/protobuf/io/zero_copy_stream_impl.cc \
        src/google/protobuf/io/zero_copy_stream_impl_lite.cc \
        src/google/protobuf/stubs/common.cc \
        src/google/protobuf/stubs/hash.cc \
        src/google/protobuf/stubs/once.cc \
        src/google/protobuf/stubs/structurally_valid.cc \
        src/google/protobuf/stubs/strutil.cc \
        src/google/protobuf/stubs/substitute.cc

    # C++ full library
    # =======================================================
    #include $(CLEAR_VARS)

    LOCAL_MODULE := libprotobuf
    LOCAL_MODULE_TAGS := optional

    LOCAL_CPP_EXTENSION := .cc

    LOCAL_SRC_FILES := \
        $(CC_LITE_SRC_FILES)                                             \
        src/google/protobuf/stubs/strutil.cc                             \
        src/google/protobuf/stubs/substitute.cc                          \
        src/google/protobuf/stubs/structurally_valid.cc                  \
        src/google/protobuf/descriptor.cc                                \
        src/google/protobuf/descriptor.pb.cc                             \
        src/google/protobuf/descriptor_database.cc                       \
        src/google/protobuf/dynamic_message.cc                           \
        src/google/protobuf/extension_set_heavy.cc                       \
        src/google/protobuf/generated_message_reflection.cc              \
        src/google/protobuf/message.cc                                   \
        src/google/protobuf/reflection_ops.cc                            \
        src/google/protobuf/service.cc                                   \
        src/google/protobuf/text_format.cc                               \
        src/google/protobuf/unkNown_field_set.cc                         \
        src/google/protobuf/wire_format.cc                               \
        src/google/protobuf/io/gzip_stream.cc                            \
        src/google/protobuf/io/printer.cc                                \
        src/google/protobuf/io/tokenizer.cc                              \
        src/google/protobuf/io/zero_copy_stream_impl.cc                  \
        src/google/protobuf/compiler/importer.cc                         \
        src/google/protobuf/compiler/parser.cc

    LOCAL_C_INCLUDES := \
        $(LOCAL_PATH)/src

    LOCAL_C_INCLUDES := \
        $(LOCAL_PATH)/android \
        bionic \
        $(LOCAL_PATH)/src \
        $(JNI_H_INCLUDE)

    LOCAL_SHARED_LIBRARIES := \
        libz libcutils libutils
    LOCAL_LDLIBS := -lz
    # stlport conflicts with the host stl library
    ifneq ($(TARGET_SIMULATOR),true)
    LOCAL_C_INCLUDES += external/stlport/stlport
    LOCAL_SHARED_LIBRARIES += libstlport
    endif

    # Define the header files to be copied
    #LOCAL_copY_HEADERS := \
    #    src/google/protobuf/stubs/once.h \
    #    src/google/protobuf/stubs/common.h \
    #    src/google/protobuf/io/coded_stream.h \
    #    src/google/protobuf/generated_message_util.h \
    #    src/google/protobuf/repeated_field.h \
    #    src/google/protobuf/extension_set.h \
    #    src/google/protobuf/wire_format_lite_inl.h
    #
    #LOCAL_copY_HEADERS_TO := $(LOCAL_MODULE)

    LOCAL_CFLAGS := -DGOOGLE_PROTOBUF_NO_RTTI

    include $(BUILD_SHARED_LIBRARY)

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...