質問編集履歴

1 コードを追加した。

IYEMON018

IYEMON018 score 202

2017/09/11 13:07  投稿

ProGuardを有効にするとコンパイルエラーが発生する
###前提・実現したいこと
Androidアプリを開発しています。
2つに分離したモジュールの内、ひとつのモジュールをProGuardで難読化したのですが、ProGuardを有効にするとコンパイルエラーが発生します。
このエラーが発生する原因と解消方法を教えてください。
Androidアプリの開発初心者ですので用語の使い方など間違っている箇所があると思います。
不明点はご指摘いただけると助かります。
###発生している問題・エラーメッセージ
```
Error:(16, 18) エラー: シンボルを見つけられません
シンボル:  クラス <クラス名>
場所: クラス MainActivity
```
###該当のソースコード
プロジェクトは以下の様に"アプリ"と"モジュール"にプロジェクトを分離しています。
アプリはモジュールを参照している状態です。
- アプリ
- モジュール
上記のエラーはアプリのMainActicityでモジュールのクラスを呼び出している部分で発生しています。
build.grable は以下の様に定義しています。
```
apply plugin: 'com.android.library'
android {
   compileSdkVersion 26
   buildToolsVersion "26.0.1"
   defaultConfig {
       minSdkVersion 19
       targetSdkVersion 26
       versionCode 1
       versionName "1.0"
   }
   buildTypes {
       release {
           minifyEnabled true
           proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
       }
   }
}
dependencies {
   compile fileTree(include: ['*.jar'], dir: 'libs')
   androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
       exclude group: 'com.android.support', module: 'support-annotations'
   })
   compile 'com.android.support:appcompat-v7:26.+'
   testCompile 'junit:junit:4.12'
}
```
アプリ層とモジュール層のコードは以下の様になっています。  
(実際のクラス名・パッケージ名とは異なります。)  
 
- モジュール層(呼び出し元)  
 
```java  
package com.example.module;  
 
public class ModuleSample {  
 
}  
```  
 
- アプリ層(呼び出し側)  
 
```java  
package com.example.app;  
 
import android.support.v7.app.AppCompatActivity;  
import android.os.Bundle;  
 
// ここでコンパイルエラーが発生する。  
import com.example.module;  
 
public class MainActivity extends AppCompatActivity {  
 
   @Override  
   protected void onCreate(Bundle savedInstanceState) {  
       super.onCreate(savedInstanceState);  
       setContentView(R.layout.activity_main);  
         
       // ここでコンパイルエラーが発生する。  
       ModuleSample sample = new ModuleSample();  
   }  
}  
```  
 
 
###試したこと
ProGuardを無効化するとコンパイルできるようになりました。
  • Java

    20506 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android

    8949 questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Android Studio

    5552 questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る