保护Android Java代码中的硬编码值(api密钥)

保护Android Java代码中的硬编码值(api密钥),android,encoding,Android,Encoding,我的Java代码(APK)中有硬编码字符串(APIkey),但它可以被许多工具轻松地反编译。我知道我可以通过加密来保护。但是如果黑客反编译我的Java并找出加密和解密代码呢?有更好的方法吗?您应该在build.gradle文件中添加密钥。这些文件不包括在您的apk中。事实上,这些只是用来签署应用程序和创建发布版本 signingConfigs { release { storeFile file("../myapp.jks") storePassword "myp

我的Java代码(APK)中有硬编码字符串(APIkey),但它可以被许多工具轻松地反编译。我知道我可以通过加密来保护。但是如果黑客反编译我的Java并找出加密和解密代码呢?有更好的方法吗?

您应该在build.gradle文件中添加密钥。这些文件不包括在您的apk中。事实上,这些只是用来签署应用程序和创建发布版本

signingConfigs {
    release {
      storeFile file("../myapp.jks")
      storePassword "mypassword"
      keyAlias "My_App"
      keyPassword "mykeypassword"
    }
    debug {
      storeFile file('../debug.keystore')
      storePassword 'android'
      keyAlias 'androiddebugkey'
      keyPassword 'android'
    }
  }
  buildTypes {
    release {
      minifyEnabled false
      debuggable false
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
      signingConfig signingConfigs.release
    }
    debug{
      debuggable true
      minifyEnabled false
      signingConfig signingConfigs.debug
    }
  }

我希望这个问题能帮助你,谢谢你的回答。我认为这应该行得通,但如果他调试应用程序并找到数据呢?在调试时无法获取密钥和密钥密码。密钥和证书被加密并存储在/data/misc/keystore中。但是,由于它们已由系统存储,因此您没有访问或解密它们的权限。此外,没有用于此的公共API。如果有帮助,请投票并接受答案:)