我正在尝试使用Android Studio构建一个旧项目,但是该过程失败。我收到的错误消息是这样的:
错误:无法读取本机JSON数据 使用JsonReader.setLenient(true)在第1行第1列路径$
接受格式错误的JSON我认为该应用程序的build.gradle文件是导致错误的原因。该文件的代码为:
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "com.example.despoina.ldtest"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
ndk {
abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
}
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
arguments '-DANDROID_PLATFORM=android-13',
'-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=gnustl_static'
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main {
// let gradle pack the shared library into apk
jniLibs.srcDirs += ['../gen-libs/gmp']
jniLibs.srcDirs += ['../distribution/ecc/lib']
jniLibs.srcDirs += ['../distribution/smodbus/lib']
resources.includes = [ 'res/parameters.txt' ]
}
}
externalNativeBuild {
cmake {
path 'src/main/cpp/CMakeLists.txt'
}
}
}dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:25.2.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.1'
// uncomment out this one to generate lib binaries,
// and also uncommented out the one in settings.gradle
// after lib is generated, just comment them out again
//implementation project(':gen-libs')
}
任何帮助将不胜感激!
答案 0 :(得分:2)
最后,我解决了与json宽松模式无关的问题,我的POST响应出了点问题(在json数据之前还有其他一些非json输出)。
这是JakeWharton关于如何设置Gson宽大模式的回复:
确保您拥有:compile 'com.google.code.gson:gson:2.6.1'
Gson gson = new GsonBuilder()
.setLenient()
.create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
当响应内容类型不是application/json
时,也会发生此问题。在我的情况下,响应内容类型为text/html
,我遇到了这个问题。我将其更改为application/json
,然后它将正常工作。
答案 1 :(得分:0)
我有同样的问题,它与您的.json文件类似。您可以搜索(通过Ctrl + Alt + N)json文件并删除<<<<<main
。
答案 2 :(得分:0)
第1行和第1列中的错误通常表示JSON不是真正的JSON。也许服务器正在以HTML或其他方式发送JSON,或者格式可读性不佳(很好地支持UTF-8和ASCII,但其他编码器可能不支持)。尝试将Server的响应打印为byte [],然后看看哪个是第一个字符。
答案 3 :(得分:0)
这是由于Android Studio构建配置错误而引起的,请尝试再次clean
和rebuild
您的项目。如果仍然无法运行,则可以将项目复制到新文件夹,然后通过Android Studio
重新打开它。
答案 4 :(得分:0)
我认为将旧项目迁移到当前版本是Android Studio,Gradle插件,Gradle构建的工具版本是最好的方法。除非您有充分的理由坚持。原因是,要匹配适用于旧版本Gradle插件,构建工具和Android Studio的匹配真的很困难。即使您以某种方式找到了所提到的错误的修补程序,也无法保证不会再发生任何错误并无缝地进行构建。
如果您仍想为现有环境提供解决方案,则可以通过共享root build.gradle,gradle-wrapper属性等来获得更多线索。但是恕我直言,迁移起来更好。
对于迁移,this可能会给您一些思路,如果不能解决确切的问题。
答案 5 :(得分:0)
我遇到了类似的问题。我不得不删除我的项目的 .cxx 文件夹来解决它。