要使用gradle构建apk,控制台中的错误如下:
如果make minifyEnabled = false,则错误消失。看起来有重复的包。
if(login($email, $user_pwd) == true) {
echo '<div class="alert alert-success">';
echo '<strong>Successfully logged!.</strong>';
echo '</div>';
}
build.gradle如下:
<div class="container bellow-nav">
<div class="row">
<div class="col-md-6 content-area">
<h3>Login</h3>
<hr/>
<form role="form" method="post" id="login_form">
<div class="form-group">
<label for="email">Email addresse</label>
<input type="email" name="email" class="form-control" placeholder="Email address">
</div>
<div class="form-group">
<label for="pwd">Password</label>
<input type="password" name="pwd" class="form-control" placeholder="Password">
</div>
<div class="form-group">
<input type="hidden" name="_token" value="<?php echo $form_token; ?>">
<input type="submit" name="submit" value="LOGIN" class="btn btn-booking" id="login_bottom" onclick="login_form(this,event);" >
</div>
<div class="form-group validation_msg">
</div>
<div class="fomr-group">
<label for=""><a href="forgot-password"><p>Forgot password?</p></a></label> |
<label for=""><p>Don't have an account? <a href="signup">Join now</p></label>
</div>
</form>
</div>
</div><!--main row-->
</div><!--main container end-->
顺便说一下,如何检查哪个包是重复的?
答案 0 :(得分:3)
尝试在build.gradle中添加以下gradle选项。通过添加以下选项,您可以启用MultiDex支持和增量 dex支持。
...
defaultConfig {
...
multiDexEnabled true // Enabling multidex support.
}
...
dexOptions {
//you can speed up your builds by turning on incremental dexing
incremental = true;
//you can specify the heap size for the dex process
javaMaxHeapSize "4g"
}
在您的应用扩展Application
课程时,您可以覆盖attachBaseContext()
方法并调用MultiDex.install(this)
以启用multidex。
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
您还可以在stackoverflow上看到以下相关问题链接:
答案 1 :(得分:2)
如何检查哪个包是重复的?
将以下内容添加到var progress = document.getElementById("dashes");
var sayings = [
"cash on the nail",
"charley horse",
"double cross",
"fit as a fiddle",
"hands down",
"if the cap fits",
"mumbo jumbo",
"see red",
"stone the crows",
"thick and thin",
]
sayings.toString();
var randomSaying = Math.floor(Math.random()*sayings.length);
文件中。
proguard_legacy.cfg
这不会混淆您的代码,您将在日志中看到包含错误的类或对象的真实姓名。
答案 2 :(得分:1)
我花了不少时间检查依赖树,删除了重复项。例如,我使用FastScrollRecylerView库,因此我不需要编译reyclerview的com.android.support版本。
gradle app:dependencies
我还在每个库的基础上仔细构建了我的proguard规则,搜索常见的配置等等。我让它工作了!
答案 3 :(得分:1)
您正在使用自定义ProGuard设置文件进行混淆/缩小,名为: proguard_legacy.cfg
该文件很可能包含一些不再与DEX处理兼容的规则。建议使用由Google提供的SDK中的默认ProGuard配置文件,并保证使用DEX处理。
您可以在已经发现(minifyEnabled false
)的情况下全部关闭缩小,或者您可以尝试使用提供的默认ProGuard配置。对于后者,在gradle文件中更改此行:
proguardFiles 'proguard_legacy.cfg'
到
proguardFiles getDefaultProguardFile('proguard-android.txt')
SDK中还有另一个配置文件,名为&#39; proguard-android-optimize.txt &#39;,但这对于二进制文件的更改方式更为积极,所以它可能根本不起作用。
除了标准规则之外,您还可以添加更宽松或更严格的规则,方法是将这些规则添加到新的ProGuard配置中,并将其列在gradle文件中的默认规则旁边,例如:
proguardFiles getDefaultProguardFile('proguard-android.txt'),'my_proguard_rules.pro'
第二个文件中的任何规则都将添加到第一个规则的顶部。 (通常通过覆盖某些规则的行为。)
请注意:使用默认的ProGuard规则可能会以可能引发问题的方式更改您的代码(例如,方法或类被重命名或完全删除)。您的自定义配置文件中可以有关于必须保持不变的特定规则。如果不查看文件,很难说如何调整ProGuard配置。
您的应用的某些与安全相关的属性也可能会随着更改ProGuard规则而发生变化,因此,如果您的项目有与安全相关的注意事项,请在更改后对应用进行渗透/安全审核。
答案 4 :(得分:0)
最后,我发现“compile”com.squareup.retrofit2:converter-jackson:$ retrofit_version“”导致构建错误。
使用“gradle app:dependencies”,我们可以看到converter-jackson依赖于fastxml。所以将以下内容添加到proguard文件中,它可以工作!!!
-keep class com.fasterxml.** { *; }
-dontwarn com.fasterxml.**
如何找到确切的依赖包(我的意思是com.squareup.retrofit2:converter-jackson)?我只是逐个排除依赖项。我花了几个小时: - (
如果有人有更好的方法来查找依赖包,请告诉我。
答案 5 :(得分:-1)
在minifyEnabled false
文件中调试build.gradle
。