2016-06-28 5 views
1

私は1つのクラスを持つアンドロイドライブラリを持っています。私はそれを.aarライブラリにしたいと思います。 minifyEnabledをtrueに設定すると、別のアンドロイドプロジェクトでライブラリを使用できなくなります(minifyEnabledがfalseに設定されていると問題ありません)。私は、AARライブラリAARライブラリの問題を持つProguard

HelloWorld.java

package com.example.hello; 

import android.util.Log; 

public class HelloWorld { 
    public static void Hello(){ 
     Log.v("HelloWorld","Hello World!"); 
    } 
} 

build.grandle

apply plugin: 'com.android.library' 

android { 
    compileSdkVersion 24 
    buildToolsVersion "24.0.0" 

    defaultConfig { 
     minSdkVersion 15 
     targetSdkVersion 24 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:24.0.0' 
} 

proguard-rules.proとProGuardのの正しい設定が何であるかをお尋ねしたいと思います

-dontwarn android.support.v7.** 
-keep class android.support.v7.** { *; } 
-keep interface android.support.v7.** { *; } 

-keep class com.example.hello {public *;} 
+1

proguard-rulesの最後の行を '-keep class com.example.hello。** {public *;}'に変更できますか? – basilisk

+0

@basilisk動作しているようですが、それでもまだデコンパイルできるアンドロイドスタジオで?また、依存関係ライブラリを扱う正しい方法ですか? – Joshua

+0

@JoshuaどのAPKでもデコンパイルすることができます。 Proguardは、いかなる方法でもAPKまたはライブラリを保護しません。 APIに属していないクラスに対しては少し難読化されます。 – Robert

答えて

4

を理解するために逆コンパイルコードがより困難に、あなたはそれを防ぐことはできません。あなたのコードを保護したいのであれば、そのほとんどを難読化し、関連するproguardルールを追加することで難読化しないインターフェースを使って、望ましい機能を拡張することができると思います。

2

すべてのAPKをデコンパイルすることができます。 ProGuardのはただAndroidのメーカーは逆コンパイルすることができるというに関しては

-keep class com.example.hello.** {public *;} 

にProGuardの-ルールの最後の行を変更してみてください