简体   繁体   English

是否可以在 Android NDK 开发中隐藏 .so 文件?

[英]Is it possible to hide .so files in Android NDK development?

I am developing an Android app on Android Studio 3.6.1.我正在 Android Studio 3.6.1 上开发 Android 应用程序。

I used NDK for the first time today.我今天第一次使用 NDK。 When I unzipped my apk, there was a folder for each platform under the lib folder, with a .so file in each folder.当我解压我的 apk 时,lib 文件夹下每个平台都有一个文件夹,每个文件夹中都有一个 .so 文件。

I have a question.我有个问题。 Is it possible to prevent this .so file from being extracted just by extracting apk?是否可以仅通过提取 apk 来防止此 .so 文件被提取? Indeed, reverse-engineering .so files is difficult.事实上,逆向工程 .so 文件很困难。 However, I don't like the .so file being diverted to steal the return value.但是,我不喜欢将 .so 文件转用于窃取返回值。

my CMakeLists.txt is...我的 CMakeLists.txt 是...

# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html

# Sets the minimum version of CMake required to build the native library.

cmake_minimum_required(VERSION 3.4.1)

# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.

add_library( # Sets the name of the library.
             native-lib

             # Sets the library as a shared library.
             SHARED

             # Provides a relative path to your source file(s).
             native-lib.cpp )

# Searches for a specified prebuilt library and stores the path as a
# variable. Because CMake includes system libraries in the search path by
# default, you only need to specify the name of the public NDK library
# you want to add. CMake verifies that the library exists before
# completing its build.

find_library( # Sets the name of the path variable.
              log-lib

              # Specifies the name of the NDK library that
              # you want CMake to locate.
              log )

# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in this
# build script, prebuilt third-party libraries, or system libraries.

target_link_libraries( # Specifies the target library.
                       native-lib

                       # Links the target library to the log library
                       # included in the NDK.
                       ${log-lib} )

Yes, it is default CMakeLists.txt.是的,它是默认的 CMakeLists.txt。

Thanks for your help.谢谢你的帮助。

If you can't find it, how would the device find it to run the functions in it?如果你找不到它,设备如何找到它来运行其中的功能? Of course you can't.你当然不能。

And really, if you're worried about that you should see how easily reversible Java and Kotlin are.实际上,如果您担心这一点,您应该看看 Java 和 Kotlin 是多么容易可逆。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM